【转载】深度强化学习实现全家桶
原文地址:https://zhuanlan.zhihu.com/p/68950847
当前,TensorLayer是一款基于TensorFlow计算引擎的通用深度学习开发工具箱,具备透明度高、灵活性强的优点。近日,TensorFlow 2.0 Beta版本发布,预示着终版API基本定型。我们搭配TensorLayer 2.0实现了全套深度强化学习(Deep Reinforcement Learning)算法教程供大家参考。本次代码库的主要贡献来自北京大学、中科院、百度、帝国理工。如果您有什么需要,欢迎在Slack中给我们留言。
DRL_tutorial:点击链接
Slack交流群:点击链接
简介
强化学习的过程是智能体通过与环境交互,不断试错并提升决策能力的过程。通过观察状态,执行动作并获得回报,智能体根据某种学习方法不断进步并习得最优决策。深度强化学习是指将深度神经网络与强化学习相结合,利用神经网络的拟合能力和强化学习的决策能力,在广泛的任务上取得了优异的效果。
强化学习算法可以分为on-policy/off-policy,model-free/model-based,value-based/policy-based等。这里我们按照value-based/policy-based的方式进行分类,如下图所示。
Li Y . Deep Reinforcement Learning: An Overview[J]. 2017.
纯value-based方法主要包括TD-learning、Q-learning、SARSA等,其与深度学习结合的算法主要为DQN及各种变体。这类方法的基本思路是建立值函数的线性或非线性映射,先评估值函数,再改进当前策略。这类方法的优点在于样本利用效率高,值函数估计方差小,不易陷入局部最优。但其缺点在于其动作空间通常为离散空间,连续空间通常无能为力,且epsilon-greedy策略容易出现过估计的问题等。
这里我们实现了DQN以及一系列的改进算法:Prioritized Experience Replay根据TD偏差给经验赋予权重提升学习效率;Dueling DQN改进网络结构,将动作值函数分解为状态值函数V和优势函数A,提升函数逼近效果;Double DQN将动作选择和动作评估用不同参数实现,解决过估计问题;Retrace 修正Q值的计算方法,减小值估计的方差;Noisy DQN给网络参数添加噪声,增加探索度;Distributed DQN将Q值的估计细化为Q分布的估计。
纯policy-based方法主要包括policy gradient、trust region、evolution等。其中policy gradient和trust region基于梯度的方法,evolution是无梯度方法。这类方法通过直接对策略进行迭代计算,迭代更新策略参数知道累积回报最大化。这类方法相比纯value-based方法,其策略参数化简单,收敛性质更好,且适用于离散和连续的动作空间。其缺点在于轨迹方差大,样本利用效率低且易收敛到局部最优等。
这里我们实现了PG、TRPO、PPO等算法。其中TRPO和PPO在PG的基础上对更新步长作了约束,防止出现policy collapse的情形,使得算法更加稳定的上升。
Actor-critic方法结合了value-based方法和policy-based方法的优点,利用value-based方法训练Q函数提升样本利用效率,利用policy-based方法训练策略,适用于离散和连续动作空间。可以将这类方法看作value-based方法在连续动作空间上的扩展,也可以看作policy-based方法对减少采样方差的改进。这类方法虽然吸收了二者的优点,同时也继承了相应的缺点,例如critic同样存在过估计问题,actor存在探索不足的问题等。
这里我们实现了AC算法及其一系列改进:A3C将AC算法作到异步并行,打乱数据间相关性,提升数据收集和训练速度;DDPG继承DQN的target network,actor为确定性策略,训练更加稳定简单;TD3引入Double DQN的方式和延迟更新策略,解决过估计问题;SAC在Q值估计中引入熵正则化,提升探索能力。
此外,还有最大熵方法和策略/值迭代等方法。例如SAC便是actor-critic与最大熵的结合,value-based和policy-based方法里也包含策略/值迭代的思想。具体算法和相关信息见下表。
Value-based 系列
Policy-based 系列
Actor-critic 系列
作者:@丁子涵@initial-h@TY2017@黄彦华@董豪
我们承诺将持续开源最新深度学习和深度强化学习算法,如果您有什么需要,欢迎到Slack中讨论。
此外,开源社区目前希望更好地连接学术界和工业界,近期正在开发如下几个模块,请悉知:
1. 与Sipeed硬件开源社区合作,推出基于国产K210嵌入式AI芯片模组及其模型转换器,使得TensorLayer模型可直接导入AI芯片中,可实现低成本(20元以下)、低功耗、实时的目标识别、人脸识别、风格转换等应用。
2. 继续完善深度强化学习代码库,持续推出大型应用例子,如智能交通、复杂机器人仿真等等。
3. 开发平台无关数据处理流程(Dataflow),实现数据处理的去TensorFlow化,方便开发者开发复杂的数据处理流程。
相关报道
[1] 机器之心:TensorLayer 2.0:保有最多官方神经网络层的通用Python库
[2] 机器之心:TensorLayer:控制深度学习开发复杂度
[3] ClusterOne -“Humans of AI”系列: TensorLayer and the Chinese Deep Learning Community