【强化学习论文解读 1】 NAF

  • 1. 引言
  • 2. 论文解读
    • 2.1 背景
    • 2.2 NAF算法原理
    • 2.3 Imagination Rollouts方法
  • 3. 总结

1. 引言

本文介绍一篇2016年发表在ICML的文章:Continuous Deep Q-Learning with Model-based Acceleration。

论文传送门:Continuous Deep Q-Learning with Model-based Acceleration

论文有两个亮点,一是提出了一种用于连续动作版本的 Q-learning 算法,将其命名为 normalized adantage functions (NAF),它是常用的policy gradient算法和actor-critic算法的替代品,文中也说明了它在很多任务上比DDPG算法表现地更好;二是提出Imagination Rollouts方法扩充replay buffer的样本,从而用学到的模型来加速model-free算法的样本利用效率

2. 论文解读

2.1 背景

在现实物理世界中,比如机器人和自动驾驶领域,model-free算法采样的复杂性很大(尤其是使用高维函数近似器),在当时(论文发表之前)很多学者采取的做法是使用特定任务表征(task-specific representations )的高效model-free算法,或者用model-based算法优化策略。

特定任务表征的model-free算法虽然能够提升算法效率,但是需要较多的领域知识;而model-based算法虽然也能够提升算法效率,但是它限制了策略最多也就和学到的模型一样好。

对于许多现实世界的任务来说,表征一个好的策略可能比学习一个好的模型更容易。例如,一个简单的机器人抓取行为可能只需要在正确的时刻关闭手指,而相应的动力学模型需要学习经历摩擦接触的刚体和可变形体的复杂性。因此,作者希望通过降低样本的复杂性,将model-free算法的通用性引入现实世界领域。

在本文中,提出了两种互补的技术来提高连续控制领域中深度强化学习的效率。第一种技术就是用于连续动作领域的变种Q-learning,也就是NAF,第二种技术就是提出Imagination Rollouts方法,将NAF和已学到的(环境)模型合并,从而在保持model-free方法优势的同时,可以加速算法训练。

2.2 NAF算法原理

和actor-critic算法(如DDPG算法需要actor网络和critic网络)不同,NAF算法仅需要一个网络进行估计。正是因为更简单的优化目标和值函数参数化的选择,使得NAF在连续控制领域中使用大型网络结构时具备更好的样本效率训练也更加迅速

在本文中,各符号及其含义为:

状态变量 x ∈ X \boldsymbol{x} \in \mathcal{X} x∈X,动作变量 u ∈ U \boldsymbol{u} \in \mathcal{U} u∈U,环境 E E E,即时奖励 r ( x , u ) r(\boldsymbol{x}, \boldsymbol{u}) r(x,u),累积奖励 R t = ∑ i = t T γ ( i − t ) r ( x i , u i ) R_{t}=\sum_{i=t}^{T} \gamma^{(i-t)} r\left(\boldsymbol{x}_{i}, \boldsymbol{u}_{i}\right) Rt​=∑i=tT​γ(i−t)r(xi​,ui​),初始状态分布 p ( x 1 ) p\left(\boldsymbol{x}_{1}\right) p(x1​),环境动力学分布 p ( x t + 1 ∣ x t , u t ) p\left(\boldsymbol{x}_{t+1} \mid \boldsymbol{x}_{t}, \boldsymbol{u}_{t}\right) p(xt+1​∣xt​,ut​), 当前策略 π \pi π,当前策略的某状态 x t \boldsymbol{x}_{t} xt​的状态访问频率 ρ π ( x t ) \rho^{\pi}\left(\boldsymbol{x}_{t}\right) ρπ(xt​)。

强化学习的目标是最大化回报,回报即:

R = E r i ≥ 1 , x i ≥ 1 ∼ E , u i ≥ 1 ∼ π [ R 1 ] R=\mathbb{E}_{r_{i \geq 1}, \boldsymbol{x}_{i \geq 1} \sim E, \boldsymbol{u}_{i \geq 1} \sim \pi}\left[R_{1}\right] R=Eri≥1​,xi≥1​∼E,ui≥1​∼π​[R1​]

在强化学习算法中,描述动作价值的Q函数的表达式为:

而通常用一个神经网络来估计Q函数,Q网络的参数记为 θ Q \theta^{Q} θQ,而网络训练的loss函数为:


此loss函数是最小化bellman error的,其中: β \beta β代表随机探索策略, ρ β ( x t ) \rho^{\beta}\left(\boldsymbol{x}_{t}\right) ρβ(xt​)代表此策略的某状态 x t \boldsymbol{x}_{t} xt​的状态访问频率, μ ( ) \mu() μ()代表完全贪婪策略策略,即:

借鉴Dueling DQN的思想,作者将Q拆为advantage function A和 value function V两部分相加.

作者构建了一个神经网络(这就是NAF算法网络),其output为一个value function项 V ( x ) V(\boldsymbol{x}) V(x)和一个advantage项 A ( x , u ) A(\boldsymbol{x}, \boldsymbol{u}) A(x,u),而advantage项被参数化为状态的非线性特征的二次函数,即:

其中: P ( x ∣ θ P ) \boldsymbol{P}\left(\boldsymbol{x} \mid \theta^{P}\right) \quad P(x∣θP)是与状态相关的正定矩阵,而正定矩阵可以被一个下三角矩阵表示出来,即: P ( x ∣ θ P ) = \boldsymbol{P}\left(\boldsymbol{x} \mid \theta^{P}\right)= P(x∣θP)= L ( x ∣ θ P ) L ( x ∣ θ P ) T \boldsymbol{L}\left(\boldsymbol{x} \mid \theta^{P}\right) \boldsymbol{L}\left(\boldsymbol{x} \mid \theta^{P}\right)^{T} L(x∣θP)L(x∣θP)T。 L ( x ∣ θ P ) \boldsymbol{L}\left(\boldsymbol{x} \mid \theta^{P}\right) L(x∣θP)是下三角矩阵,而此下三角矩阵的元素来自于神经网络的线性层输出

可以看到这种Q网络的表示比一般的Q网络限制更多,因为它要求Q函数是关于动作 u \boldsymbol{u} u的二次型。想要采取一个动作 u \boldsymbol{u} u最大化Q值,那么只能让 u \boldsymbol{u} u取此状态下的完全贪婪策略动作 μ ( x ∣ θ μ ) \boldsymbol{\mu}\left(\boldsymbol{x} \mid \theta^{\mu}\right) μ(x∣θμ),这也体现了原始Q-learning的思想。(作者也说道,一般来说,优势函数A不需要是二次的,探索其他参数形式,如多模态分布是future work)

可以看到NAF算法中,神经网络的输出有三部分一是状态价值 V ( x ∣ θ V ) V\left(\boldsymbol{x} \mid \theta^{V}\right) V(x∣θV),它是一个标量;二是完全贪婪策略下的动作 μ ( x ∣ θ μ ) \boldsymbol{\mu}\left(\boldsymbol{x} \mid \theta^{\mu}\right) μ(x∣θμ),它是一个矢量,其维度等于动作维度;三是下三角矩阵 L ( x ∣ θ P ) \boldsymbol{L}\left(\boldsymbol{x} \mid \theta^{P}\right) L(x∣θP)中的元素,其维度与动作维度有关,若动作维度为 n n n,那么此矩阵的维度为 ( 1 + n ) ∗ n / 2 (1+n)*n/2 (1+n)∗n/2。通过这三部分输出,结合公式,即可算出动作的Q值。

NAF算法的伪代码如下所示,为了保证网络的收敛效果,采用了target networks和replay buffers的技巧:

值得注意的是,正如前面所述,Q网络的输出是三部分,因此在更新Q网络的时候,就已经更新了 V ( x ∣ θ V ) V\left(\boldsymbol{x} \mid \theta^{V}\right) V(x∣θV)、 μ ( x ∣ θ μ ) \boldsymbol{\mu}\left(\boldsymbol{x} \mid \theta^{\mu}\right) μ(x∣θμ)、 L ( x ∣ θ P ) \boldsymbol{L}\left(\boldsymbol{x} \mid \theta^{P}\right) L(x∣θP)的值。可以看到replay buffer中的数据在反复地用,Q网络更新以后,旧的数据还能用来更新,因此NAF是一个off-policy的方法。

以下是NAF算法和DDPG算法的效果对比图:

以及部分实验结果:

2.3 Imagination Rollouts方法

Imagination Rollouts是通过learned model,生成on-policy的样本,类似于Dyna-Q方法。它想结合model-free的通用性与model-based的高效性(因为model-based方法可以用模型来生成很多样本,从而减少与环境的交互)。

虽然NAF算法有一些超越actor-cirtic这种在连续动作领域的model-free方法的好处,但是论文作者并不满足,他们想要进一步地利用learned model来提升样本利用率。(实际上就是扩充数据

首先作者做了简单的尝试,他们用iLQG算法(有模型方法,具体iLQG方法的介绍可以参考:有模型的强化学习—LQR与iLQR)去生成好的轨迹,然后去扩充replay buffer,但是发现这样做对Q-learning算法的效果提升很小。作者认为Q-learning只是看好的动作是不够的,一定要经历过差的动作才能知道哪个动作好,哪个动作差(生活小哲理,hhhh)。

虽然这个道理很简单,但是在现实世界中,比如机器人和自动驾驶领域,这种差的动作会带来极大的危险。如何避免这一问题呢?一种方法是仍然允许大量的on-policy探索,用learned model去生成synthetic on-policy trajectories,而这个synthetic samples 作者将它称为imagination rollouts 。将这些synthetic samples加入到 replay buffer中可以有效地增加Q-learning的经验数据。

而这种特殊的方法在现实世界中 常用planned iLQG trajectories 和 on-policy trajectories 混合出 real-world rollouts(这通常还需要一些用实验确定的混合系数),然后用 learned model 对 real-world rollouts 访问的每个状态,生成额外的 synthetic on-policy rollouts 。这种方法可以看成是Dyna-Q算法的变种,Dyna-Q算法只能用于小型离散控制领域,而此方法可以用于连续控制领域。

带Imagination Rollouts的NAF算法如下所示:

在一些场合中,甚至可以用 off-policy iLQG 控制器(考虑safety-critic)来生成全部的或者大多数的real rollouts,以此来保证安全。

作者在用Imagination rollouts的时候,发现当learned model不准确时,Imagination rollouts会引起很大的偏差。作者发现,比如learned model是一个非线性神经网络,用它去拟合动力学,训练起来非常困难(也就是learned model不准确),然后作者发现使用iteratively refitted time-varying linear models(此方法是2014年Levine提出的)作为learned model去学,能够产生更好的结果。iteratively refitted time-varying linear models 并不是针对所有状态和动作去学习一个好的全局模型(global model),而是想要在最新的样本集中学习一个好的局部模型(local model),此模型也有一些附加假设,即:初始状态为确定性的或者低方差的高斯分布,以及要求所有状态和动作都是连续的。

同时作者还发现,当Q网络的估计很不准确时,model-based 的方法可以带来训练的好处,但是一旦Q网络的估计准确时,on-policy方法(也就是model-free)收集到的数据会更好,会超越model-based控制器。基于这点观察,作者就设置了在一个指定迭代次数时,关掉Imagination rollouts,不再为replay buffer生成synthetic samples。

下图展示了混合使用 off-policy iLQG experience 和 imagination rollouts 在 the three-joint reacher 上的效果:

3. 总结

总结一下全文,为什么之前的Q-learning不能用于连续动作,而NAF可以?

在DQN算法中,神经网络的输出维度是离散动作的数量,每一个输出值代表动作的Q值,那么最大Q值对应的动作就是当前状态需要采取的动作。而对于连续的动作,神经网络的动作输出只能是动作的维度,输出值代表动作在那个维度的取值,这样没法知道当前动作的好坏,以及不知道Q值最大的动作是什么,而NAF算法就解决了这一问题。

如下图所示,NAF网络的输入为当前状态 s t s_t st​,假设连续动作的维度为 n n n,那么输出为当前状态价值 V ( s t ) V(s_t) V(st​)、连续动作在那一维的取值 a i ( s t ) ( i = 1 … n ) a_i(s_t) (i=1 \dots n) ai​(st​)(i=1…n)、下三角矩阵的元素 L k ( s t ) ( k = 1 … n × ( n + 1 ) / 2 ) L_k(s_t) (k=1 \dots n\times(n+1)/2) Lk​(st​)(k=1…n×(n+1)/2)。

其中 a i ( s t ) a_i(s_t) ai​(st​)就是当前状态的最优动作,它能让Q值最大,并且对于任何一个动作,它都能够通过神经网路三部分输出反解出其Q值,这也是NAF的妙处。(当然论文作者也承认自己用了很强的一个假设,即A是二次型的假设)

【强化学习论文解读 1】 NAF相关推荐

  1. 必看,61篇NeurIPS深度强化学习论文解读都这里了

    作者 | DeepRL 来源 | 深度强化学习实验室(ID: Deep-RL) NeurIPS可谓人工智能年度最大盛会.每年全球的人工智能爱好者和科学家都会在这里聚集,发布最新研究,并进行热烈探讨,大 ...

  2. python全局解释器锁 tensorflow_想轻松复现深度强化学习论文?看这篇经验之谈

    近期深度强化学习领域日新月异,其中最酷的一件事情莫过于 OpenAI和 DeepMind 训练智能体接收人类的反馈而不是传统的奖励信号.本文作者认为复现论文是提升机器学习技能的最好方式之一,所以选择了 ...

  3. 【强化学习论文合集】三十三.2021国际人工智能联合会议论文(IJCAI2021)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  4. 【强化学习论文合集】十二.2018国际人工智能联合会议论文(IJCAI2018)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  5. 【强化学习论文合集】二十九.2021国际机器学习大会论文(ICML2021)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  6. 【强化学习论文合集】三十五.2021神经信息处理系统大会论文(NIPS2021)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  7. 【强化学习论文合集】十八.2019国际表征学习大会论文(ICLR2019)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  8. 【强化学习论文合集】十六.2019AAAI人工智能大会论文(AAAI2019)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  9. 【强化学习论文合集】二十三.2020AAAI人工智能大会论文(AAAI2020)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

最新文章

  1. MySQL数据库:SQL语句
  2. C++ Primer 5th笔记(7)chapter7 类:字面值常量类
  3. 设计模式--门面(Facade)模式
  4. MR作业提交时指定第三方依赖jar
  5. ubuntu 重装 nvidia_nvidia-smi指令报错:Failed to initialize NVML: Driver解决
  6. 【洛谷 - P1772 】[ZJOI2006]物流运输(dp)
  7. Unity3d暴风魔镜发布ios问题记录
  8. NLP之路-Deep Learning for NLP 文章列举
  9. 数据结构 3-1-1 栈
  10. Roling in the deep
  11. VUE实现输入完当前input后自动跳到下一个input
  12. 激光打印机无线服务器,插上无线翅膀 兄弟1218W激光打印机评测
  13. 东华大学matlab账号,东华大学银行账号、联行号及税号
  14. ImageNet千分类标签翻译
  15. Y7000p的自带锁屏壁纸位置
  16. 读书笔记——好句摘抄
  17. [DZ X2.5实用教程] DZ X2.5(Discuz!)论坛-QQ企业OR域名邮箱作为发信邮箱设置教程
  18. 百度权重怎么查询?哪里可以查询百度权重?
  19. php汉字验证码,PHP中实现中文汉字验证码 源代码
  20. 浏览器主页被劫持 解决方法

热门文章

  1. 支持多个微信同时登录的方法
  2. iTOP-i.MX6Q开发板Android7.1.2-获得root权限
  3. 给招聘HR的3个建议,工作招聘必备
  4. 第66篇:顶级APT后门Sunburst通信流量全过程复盘分析(修正篇)
  5. 数据库可视化工具分享 (DBeaver)
  6. 廖雪峰Python学习笔记1
  7. 让Mac状态栏上的时间/日期显示日历,农历 - 轻松查看日历 - 菜单栏TinyCal
  8. 项目组织规划的原则(转)
  9. 三星S5_G9008V 解锁联通4G(安卓6.0)
  10. 数字与时间中的API