入门 | 从Q学习到DDPG,一文简述多种强化学习算法

2018 年 1 月 21 日 机器之心

选自towardsdatascience

作者:Steeve Huang

机器之心编译

参与:Edison Ke、路雪


本文简要介绍了强化学习及其重要概念和术语,并着重介绍了 Q-Learning 算法、SARSA、DQN 和 DDPG 算法。



强化学习(RL)指的是一种机器学习方法,其中智能体在下一个时间步中收到延迟的奖励(对前一步动作的评估)。这种方法主要用于雅达利(Atari)、马里奥(Mario)等游戏中,表现与人类相当,甚至超过人类。最近,随着与神经网络的结合,这种算法不断发展,已经能够解决更复杂的任务,比如钟摆问题。


虽然已经有大量的强化学习算法,但似乎并没有什么文章对它们进行全面比较。每次需要决定将哪些算法应用于特定的任务时,都让我很纠结。本文旨在通过简要讨论强化学习的设置来解决这个问题,并简要介绍一些众所周知的算法。


1. 强化学习入门


通常,强化学习的设置由两部分组成,一个是智能体(agent),另一个是环境(environment)。


强化学习图示


环境指的是智能体执行动作时所处的场景(例如雅达利游戏中的游戏本身),而智能体则表示强化学习算法。环境首先向智能体发送一个状态,然后智能体基于其知识采取动作来响应该状态。之后,环境发送下一个状态,并把奖励返回给智能体。智能体用环境所返回的奖励来更新其知识,对上一个动作进行评估。这个循环一直持续,直到环境发送终止状态来结束这个事件。


大多数强化学习算法遵循这一模式。下面我将简要介绍强化学习中的一些术语,以方便下一节的讨论。


定义


1. 动作(A):智能体可以采取的所有可能的行动。


2. 状态(S):环境返回的当前情况。


3. 奖励(R):环境的即时返回值,以评估智能体的上一个动作。


4. 策略(π):智能体根据当前状态决定下一步动作的策略。


5. 价值(V):折扣(discount)下的长期期望返回,与 R 代表的短期返回相区分。Vπ(s) 则被定义为策略 π 下当前状态**s**的期望长期返回值。


6. Q 值或行动值 (Q):Q 值与价值相似,不同点在于它还多一个参数,也就是当前动作 a。Qπ(s, a) 指当前状态**s**在策略π下采取动作 a 的长期回报。


无模型(Model-free)vs. 基于模型(Model-based)


这里的模型指的是环境的动态模拟,即模型学习从当前状态 s0 和动作 a 到下一个状态 s1 的转移概率 T(s1|(s0, a))。如果成功地学习了转移概率,那么智能体将知道给定当前状态和动作时,进入特定状态的可能性。然而,当状态空间和动作空间增长(S×S×A,用于表格设置)时,基于模型的算法就变得不切实际了。


另一方面,无模型算法依赖试错来更新知识。因此,它不需要空间来存储所有状态和动作的组合。下一节讨论的所有算法都属于这一类。


在策略(on-policy)vs. 离策略(off-policy)


在策略智能体基于当前动作 a 学习价值,而离策略智能体基于局部最优的贪心行为(greedy action)a* 学习价值。(我们将在 Q-Learning 和 SARSA 算法部分进一步讨论这个问题)


2. 各种算法的说明


2.1 Q-learning 算法


Q-Learning 是基于贝尔曼方程(Bellman Equation)的离策略、无模型强化学习算法:


贝尔曼方程


其中,E 代表期望,ƛ 是折扣因子(discount factor)。我们可以将它重写成 Q 值的形式:


Q 值形式的贝尔曼方程


最优的 Q 值 Q*,可以表示为:


最优 Q 值


目标是最大化 Q 值。在深入探讨优化 Q 值的方法之前,我想讨论两个与 Q-learning 密切相关的值更新方法。


策略迭代法


策略迭代法交替使用策略评估和策略改进。


策略迭代法


策略评估会评估从上次策略改进中获得的贪心策略的价值函数 V。另一方面,策略改进通过使每个状态的 V 值最大化的动作来更新策略。更新方程以贝尔曼方程为基础。它不断迭代直到收敛。


策略迭代的伪代码


价值迭代


价值迭代只包含一个部分。它基于最优贝尔曼方程来更新值函数 V。


最优贝尔曼方程


价值迭代的伪代码


在迭代收敛之后,通过对所有状态应用最大值函数直接导出最优策略。


注意,这两种方法都需要知道转移概率 p,这表明它是一个基于模型的算法。但是,正如我前面提到的,基于模型的算法存在可扩展性问题。那么 Q-learning 如何解决这个问题呢?


Q-Learning 更新方程


α 指学习速率(即我们接近目标的速度)。Q-learning 背后的思想高度依赖于价值迭代。然而,更新方程被上述公式所取代。因此,我们不再需要担心转移概率。


Q-learning 的伪代码


注意,下一个动作 a』 的选择标准是要能够最大化下一个状态的 Q 值,而不是遵循当前的策略。因此,Q-Learning 属于离策略算法。


2.2 状态-动作-奖励-状态-动作(State-Action-Reward-State-Action,SARSA)


SARSA 很像 Q-learning。SARSA 和 Q-learning 之间的关键区别是 SARSA 是一种在策略算法。这意味着 SARSA 根据当前策略执行的动作而不是贪心策略来学习 Q 值。


SARSA 的更新方程


动作 a_(t+1) 是在当前策略下的下一个状态 s_(t+1) 执行的动作。


SARSA 的伪代码


从上面的伪代码中,你可能会注意到执行了两个动作选择,它们始终遵循当前策略。相比之下,Q-learning 对下一个动作没有约束,只要它能最大化下一个状态的 Q 值就行了。因此,SARSA 是一种在策略算法。


2.3 深度 Q 网络(Deep Q Network,DQN)


Q-learning 是一种非常强大的算法,但它的主要缺点是缺乏通用性。如果你将 Q-learning 理解为在二维数组(动作空间×状态空间)中更新数字,那么它实际上类似于动态规划。这表明 Q-learning 智能体不知道要对未见过的状态采取什么动作。换句话说,Q-learning 智能体没有能力对未见过的状态进行估值。为了解决这个问题,DQN 引入神经网络来摆脱二维数组。


DQN 利用神经网络来估计 Q 值函数。网络的输入是当前的动作,而输出是每个动作对应的 Q 值。


用 DQN 玩雅达利游戏


2013 年,DeepMind 将 DQN 应用于雅达利游戏,如上图所示。输入是当前游戏场景的原始图像,经过包括卷积层和全连接层的多个层,输出智能体可执行的每个动作的 Q 值。


问题归结为:我们如何训练网络?


答案是基于 Q-learning 更新方程来训练网络。回想一下 Q-learning 的目标 Q 值是:


目标 Q 值


ϕ 相当于状态 s,𝜽 代表神经网络里的参数。因此,网络的损失函数可定义为目标 Q 值与网络 Q 值输出之间的平方误差。


DQN 的伪代码


另外两种技术对于训练 DQN 也很重要:


1. 经验回放(Experience Replay):由于典型强化学习设置中的训练样本高度相关,且数据效率较低,这将导致网络更难收敛。解决样本分布问题的一种方法是采用经验回放。从本质上讲,样本转换会被存储,然后从「转换池」中随机选择该转换来更新知识。


2. 分离目标网络(Separate Target Network):目标 Q 网络与用来估值的网络结构相同。根据上面的伪代码,在每个 C 步骤,目标网络都被重置为另一个。因此,波动变得不那么严重,带来了更稳定的训练。


2.4 深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)


虽然 DQN 在高维问题上取得了巨大的成功,例如雅达利游戏,但动作空间仍然是离散的。然而,许多有趣的任务,特别是物理控制任务,动作空间是连续的。而如果你把动作空间分离得太细来趋近连续空间,你的动作空间就太大了。例如,假设自由随机系统的自由度为 10。对于每一个自由度,你把空间分成 4 个部分,你最终就会有有 4¹⁰= 1,048,576 个动作。对于这么大的动作空间来说,收敛也是极其困难的。


DDPG 依赖于「行动者-评论家」(actor-critic)架构。行动者用来调整策略函数的参数𝜽,即决定特定状态下的最佳动作。


策略函数


而评论家用于根据时间差分(temporal difference,TD)误差来评估行动者估计出来的策略函数。


时间差分误差


在这里,小写的 v 表示行动者已经确定的策略。看起来很熟悉对吗?看着像 Q-learning 的更新方程!TD 学习是一种学习如何根据给定状态的未来值来预测价值的方法。Q-learning 是 TD 学习的一种特殊类型,用于学习 Q 值。


「行动者-评论家」架构


DDPG 还从 DQN 借鉴了经验回放和分离目标网络的思想。DDPG 的另一个问题是它很少对动作进行探索。一个解决方案是在参数空间或动作空间中添加噪声。


动作噪声(左),参数噪声(右)


OpenAI 这篇博客认为在参数空间上添加噪声比在动作空间上添加要好得多。一个常用的噪声是 Ornstein-Uhlenbeck 随机过程。


DDPG 的伪代码


原文链接:https://towardsdatascience.com/introduction-to-various-reinforcement-learning-algorithms-i-q-learning-sarsa-dqn-ddpg-72a5e0cb6287



本文为机器之心编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

登录查看更多
17

相关内容

智能体,顾名思义,就是具有智能的实体,英文名是Agent。
【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
201+阅读 · 2020年5月22日
《强化学习》简介小册,24页pdf
专知会员服务
272+阅读 · 2020年4月19日
强化学习和最优控制的《十个关键点》81页PPT汇总
专知会员服务
103+阅读 · 2020年3月2日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
深度强化学习策略梯度教程,53页ppt
专知会员服务
178+阅读 · 2020年2月1日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
专知会员服务
206+阅读 · 2019年8月30日
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
27+阅读 · 2018年8月17日
论强化学习的根本缺陷
AI科技评论
11+阅读 · 2018年7月24日
【干货】强化学习介绍
人工智能学家
13+阅读 · 2018年6月24日
一文学习基于蒙特卡罗的强化学习方法(送书)
人工智能头条
7+阅读 · 2018年3月13日
【强化学习】强化学习/增强学习/再励学习介绍
产业智能官
10+阅读 · 2018年2月23日
强化学习的入门之旅
机器学习研究会
6+阅读 · 2018年2月12日
【干货】机器学习和深度学习概念入门(下)
机器学习研究会
6+阅读 · 2017年12月31日
【强化学习】强化学习入门以及代码实现
产业智能官
18+阅读 · 2017年9月4日
技术 | 强化学习入门以及代码实现
AI100
51+阅读 · 2017年8月26日
【强化学习】强化学习+深度学习=人工智能
产业智能官
52+阅读 · 2017年8月11日
One-Shot Federated Learning
Arxiv
9+阅读 · 2019年3月5日
Generalization and Regularization in DQN
Arxiv
6+阅读 · 2019年1月30日
Parsimonious Bayesian deep networks
Arxiv
5+阅读 · 2018年10月17日
Arxiv
5+阅读 · 2018年6月5日
Arxiv
4+阅读 · 2018年5月4日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
相关VIP内容
【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
201+阅读 · 2020年5月22日
《强化学习》简介小册,24页pdf
专知会员服务
272+阅读 · 2020年4月19日
强化学习和最优控制的《十个关键点》81页PPT汇总
专知会员服务
103+阅读 · 2020年3月2日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
深度强化学习策略梯度教程,53页ppt
专知会员服务
178+阅读 · 2020年2月1日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
专知会员服务
206+阅读 · 2019年8月30日
相关资讯
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
27+阅读 · 2018年8月17日
论强化学习的根本缺陷
AI科技评论
11+阅读 · 2018年7月24日
【干货】强化学习介绍
人工智能学家
13+阅读 · 2018年6月24日
一文学习基于蒙特卡罗的强化学习方法(送书)
人工智能头条
7+阅读 · 2018年3月13日
【强化学习】强化学习/增强学习/再励学习介绍
产业智能官
10+阅读 · 2018年2月23日
强化学习的入门之旅
机器学习研究会
6+阅读 · 2018年2月12日
【干货】机器学习和深度学习概念入门(下)
机器学习研究会
6+阅读 · 2017年12月31日
【强化学习】强化学习入门以及代码实现
产业智能官
18+阅读 · 2017年9月4日
技术 | 强化学习入门以及代码实现
AI100
51+阅读 · 2017年8月26日
【强化学习】强化学习+深度学习=人工智能
产业智能官
52+阅读 · 2017年8月11日
相关论文
One-Shot Federated Learning
Arxiv
9+阅读 · 2019年3月5日
Generalization and Regularization in DQN
Arxiv
6+阅读 · 2019年1月30日
Parsimonious Bayesian deep networks
Arxiv
5+阅读 · 2018年10月17日
Arxiv
5+阅读 · 2018年6月5日
Arxiv
4+阅读 · 2018年5月4日
Arxiv
11+阅读 · 2018年4月25日
Top
微信扫码咨询专知VIP会员