当前位置:网站首页 >> 旅游

深度強化學習從入門到大師以

时间:2020-01-17 03:12:01 来源:互联网 阅读:0次

深度强化学习从入门到大师:以 Cartpole 和 Doom 为例介绍策略梯度 (第四部分)

本文为 AI 研习社编译的技术博客,原标题 :

An introduction to Policy Gradients with Cartpole andDoom

作者 |Thomas Simonini

翻译 | 安石徒

校对 | 酱番梨 整理 | 菠萝妹

原文链接:

深度强化学习从入门到大师:以 Cartpole 和 Doom 为例介绍策略梯度 (第四部分)

本文的环境

本文是利用Tensorflow进行深度强化学习课程的一部分点击这里查看教学大纲在过去的两篇关于Q-学习和深度Q学习的文章中,我们完成了基于价值的强化学习算法学习在给定一个状态下,我们选择有Q值(在所有状态下的期望奖励)的行动因此,在基于价值的学习中,一个策略存在仅仅出于这些行动价值的评估

今天,我们将学习名为策略梯度的基于策略的强化学习技术我们将应用两个智能体其中一个将学习保持木条平衡

第二个智能体学习在毁灭战士系列的有敌意的环境中通过收集生命值而生存

在基于策略的方法中,不同于学习能告诉我们给定状态和行动下奖励总和的价值函数,我们直接学习能使得状态映射到行为的策略函数(不通过价值函数选择行动)

这意味着我们不通过价值函数试错而直接尝试优化策略函数π,直接参数化π(不通过价值函数选择行动)

当然,我可以通过价值函数来优化策略参数但是价值函数将不再用来选择行动

本文将学习如下内容:

策略梯度是什么,它的优点和缺点;

怎么将其应用于Tensorflow

为何要使用策略函数两种类型的策略:确定的或随机的

一个确定的策略能将状态映射到行为上输入一个状态,函数将反馈一个要执行的行为

确定的策略用在确定的环境,行动执行的环境决定了结果,不存在不确定性例如,当你下国际象棋把兵从A2移到A3时,你是确定你的兵要移到A3

另一方面,一个随机的策略输出一个行为集可能的指派

这意味着不是确定地选择行为a,而是我们有可能能选择不同的(例子中30%的可能,我们选择南)

随机策略用在环境不确定的情况下这一个过程也叫部分可测马尔科夫决策过程(POMDP)

大多数情况下,我们使用第二种策略类型

优势

深度Q学习已经很厉害,为什么要用策略强化学习方法

深度学习在使用策略梯度时有三大主要优势:

收敛

策略函数有更好的收敛特性价值函数在训练时有个问题就是大的震荡这是因为行为的选择在测算的行为值中可能会戏剧性地任意变小

另一方面,利用策略梯度,我们仅是循着梯度寻找值一个平滑的更新出现在每一步中

由于循着梯度寻找值,我们确保收敛于局部值(坏的情况)或是全局值(情况)

策略梯度在高维空间更有效

第二个优势是策略梯度在高维空间或是连续行动时更有效

深度Q学习的一个问题是它在每一步的预测中对给定当前状态的每一个可能行为分配一个分值(化预测将来的奖励)

但如果是无限可能的行动呢

例如,在自动驾驶时,在每一个状态中,可能会有近乎无限行为的选择(调整车轮15°,17.2°, 19,4°,鸣笛…)我们需要为每一个行动输出一个Q值

另一方面,在策略函数中,要直接调整参数(你将要理解什么是值),而不是在每一步估算值

策略梯度能学习随机策略

第三个优势是策略梯度能学习随机策略,而价值函数不能这也导致两个结果

其一,我们不需要应用探测和开发的权衡一个随机策略允许智能体在状态空间探索而不是一直采用相同的行为这是因为它输出一个行为集上的概率分布其结果是它将处理探测和开发的权衡而不是硬编码

我们同样去除感知混淆的问题,它是说我们在两个看起来(或实际上)相同的状态,却需要不同的行为

例如,我们有一个智能吸尘器,它的目标是吸掉灰尘和避免杀死仓鼠

这个例子被David Silver的精美课程所引出:

我们的吸尘器仅能检测到墙在哪里

问题:两个红色的方格是相似的状态,因为智能体都能感知到两面上下部的墙

在确定的策略下,在红色的状态下,智能体选择要么是往右,要么往左,都可能导致智能体被卡住而不能吸尘了

在基于价值的强化算法,我们学习一个准确定性策略(?贪婪策略)其结果是智能体在找到灰尘前会花费大量时间

另一方面,一个优化的随机策略在灰色的格子中时将随机往左或往右移动其结果是智能体不会被卡住,并能在可能的情况下达到目标状态

劣势

策略梯度有个天然的大劣势在绝大多数情况下,它将在收敛于局部值而不是全局值

策略梯度收敛一步一步收敛非常慢,需要很长时间来训练,这不同于同样努力寻求全局值的深度Q学习

尽管如此,我们将看到问题的解决方案

策略选择

带参数θ的策略π输出行动集的概率分布

给定状态S,采取带参θ行动a的概率

可怕的是我们怎样才能知道我们的策略是好的呢

记住策略可被看做是优化问题我们必须寻找到参数(θ)来化得分函数J(θ)

这里有两步:

利用策略评分函数J(θ)来测量π(策略)的质量

使用策略梯度上升来找寻参数θ来改进π

这里的主要思想是J(θ)来告诉我们的策略π有多好策略梯度上升将帮助我们发现策略参数来化良好行动的采样

步:策略评分函数J(θ)

为测量我们的策略有多好,我们使用目标函数(或策略评分函数)来计算期望的策略奖励

有三种等价的方法来优化策略选择仅仅取决于环境和目标

首先,在一个情景的环境中,我们取一个开始值,并计算从步(G1)开始反馈的均值这是第整个情景的累积的贴现奖励

思想很简单,即如果我一直从状态s1开始,从开始状态到结束状态的整体奖励是多少呢

我们要寻找化G1的策略,因为它将是的策略,可参见篇文章中解释过的奖励假设

例如,在突围游戏中,我新玩了一局,但我在破坏了20块砖后丢失了球(游戏结束)新的情景始终从相同的状态开始

我利用J1(θ)来计算得分撞击20个板砖已属不错,但是我想改进得分为此

,我需要通过调参来改进我行为的概率分布这些在第二步中做在一个连续的环境中,因为我们不能依赖特定的开始状态,所以我们可以使用平均值每个状态值通过对应状态发生的概率来加权(因为有些更可能发生)

第三,使用每步的平均奖励以使我们每步都要获得的奖励

第二步:策略梯度上升

我们有一个策略得分函数告诉我们策略有多好现在,我们要找寻化得分函数的参数θ化得分函数意味着找到策略

为化得分函数J(θ),我们需要在策略参数上做梯度上升

梯度上升是梯度下降的反转记住梯度永远指向速变化

在梯度下降中,我们在函数中选择速下降方向同理在梯度上升时,我们在函数中选择速上升方向

为何是梯度上升而不是梯度下降因为我们要在错误函数中使用梯度下降来求小值

但是得分函数不是错误函数,它要求值的,所以我们使用梯度上升

思想是找到相应梯度,以使当前策略π在迭代中增量方向上更新参数

现在,让我们把相关内容数学化,这里有点难,但这是理解如何得到梯度公式的基础

我们要找到的参数θ*用以化得分:

我们的得分函数可以被如下定义:

这是给定策略下期望奖励的总和

现在,因为我们要做梯度上升,所以要去微分我们的得分函数J(θ)它也可被如下定义:

我们用这种方式写出函数来展示我们面对的问题

我们知道策略参数影响行为如何被选择,即我们获得什么样的奖励、我们将看到什么样的状态、有多频繁

因此,寻找为确保改进的策略的变化可能是个挑战这是因为性能依赖于行为选择和选择做出后的状态分布这两者都受策略参数的影响策略参数在行为上的影响很容易发现,但是在状态分布的情况下怎样发现策略的影响环境的函数是未知的

因此,我们面临这样的问题:当梯度依赖于在状态分布下的策略改变的未知影响时,我们利用策略θ的对应来怎么评估梯度

解决方案是使用策略梯度原理利用涉及策略θ不包含状态分布的差异方面,为J(θ)(表现)的梯度?提供一个分析性表示

所以,我们如下计算:

记住,我们在随机策略的情况中这意味着我们的策略输出一个概率分布π(τ;θ)它将输出给定当前参数θ时的采取步骤(s0, a0, r0…)的概率

但是,要微分概率函数是比较困难的,除非我们能将其转换为对数这将使得概率函数能被简单地微分

这里我们将使用似然比的方法来将结果部分替换成log概率

现在,让我们将总和转换为一个期望:

正如你所见,我们仅需要计算log策略函数的导数

我们已经做了很多推导,现在,我们能得出策略梯度的结论:

这个策略梯度告诉我们如果要获得一个更高的得分应怎样通过改变参数θ来转变策略分布

R(tau)像是个标量值:

如果R(tau)高了,就意味着我们采取行动平均情况下会导致高奖励我们要推动可见行为的概率(提高采取这些行为的概率)

另一方面,如果R(tau)低了,我们要降低可见行为的概率

梯度的策略导致参数在有回报的支持的行动的方向上移动

蒙特卡策略梯度

在笔记中,鉴于我们的任务能分为若干阶段,我们将使用蒙特卡方法来设计策略梯度算法

Initialize θ

for each episode τ = S0, A0, R1, S1, …, ST:

for t -- 1 to T-1:

Δθ = α ?theta(log π(St, At, θ)) Gt

θ = θ + Δθ

For each episode:

At each time step within that episode:

Compute the log probabilities produced by our policy

function. Multiply it by the score function.

Update the weights

但是我们在使用该算法时面临一个问题因为我们仅在每个阶段结束时计算R值,我们将会平均所有行为哪怕部分行为是非常糟糕的,如果我们的分值是非常高的,这样所有行为都会被平均成好的

要想有一个正确的策略,我们就需要大量的采样,这将导致很慢的学习

怎样改进模型我们将在后续的文章中看到如下改进:

行为评价器:一个价值算法和策略算法的混合体

近端策略梯度:确保跟前一个策略的偏差相对小

在Cartpole andDoom中应用我们拍了一段视频,利用Tensorflow在死亡模式下的Doom游戏中应用策略梯度智能体:

Policy Gradients playing Doom deathmatch ??with Tensorflow (tutorial)

你可以直接访问笔记:Deep Reinforcement Learning Course repo.

综上所述,你已经创建了一个能学习在Doom环境下生存的智能体厉害吧

别忘了亲自应用每一个部分代码,这非常重要尝试增加时代、改变架构、修改学习率、使用更好的硬件环境等等,尽情享受吧

在下一篇文章中,我将讨论在深度Q学习上的改进:

双DQN

竞赛络

固定Q值

优先经验重复

想要继续查看该篇文章相关链接和参考

长按链接点击打开或点击底部【深度强化学习从入门到大师:以Cartpole和Doom为例介绍策略梯度(第四部分)】:

AI研习社每日更新精彩内容,观看更多精彩内容:(公众号:)

用PyTorch来做物体检测和追踪用 Python 做机器学习不得不收藏的重要库初学者怎样使用Keras进行迁移学习一文带你读懂 WaveNet:谷歌助手的声音合成器等你来译:

强化学习:通往基于情感的行为系统如何用Keras来构建LSTM模型,并且调参高级DQNs:利用深度强化学习玩吃豆人游戏用于深度强化学习的结构化控制络 (ICML 论文讲解)

原创文章,未经授权禁止转载详情见转载须知

不含防腐剂的止咳药怎么样
不含防腐剂的止咳药怎么样
什么中成药去黄褐斑

相关文章

一周热门

热点排行

热门精选

友情链接:
媒体合作:

Copyright (c) 2011 八零CMS 版权所有 备案号:苏ICP备17012668号-1

网站地图