深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI

PPO(Proximal Policy Optimization)

PPO是2017年由OpenAI提出的一种基于随机策略的DRL算法,也是当前OpenAI的默认算法。

PPO是一种Actor-Critic算法。它的主要改进在它的Actor部分。

我们知道,Policy Gradient算法的训练过程中,始终存在着new Policy和old Policy这样一对矛盾。

一方面,我们需要new Policy和old Policy有一定的差异,防止模型收敛到局部最优。

另一方面,两者的差异又不能太大,否则,模型的训练将无法收敛。

那么,如何衡量new Policy和old Policy的差异程度呢?

PPO的答案是:我们可以用两种Policy得到的动作的概率分布的KL散度,来描述这种差异。

具体的做法是在 J ( θ ) J(\theta) J(θ)上添加一个KL惩罚项:

J P P O θ k ( θ ) = J θ k ( θ ) − β K L ( θ , θ k ) J^{\theta^k}_{PPO}(\theta)=J^{\theta^k}(\theta)-\beta KL(\theta, \theta^k) JPPOθk(θ)=Jθk(θ)βKL(θ,θk)

这里的惩罚系数 β \beta β可以是定值,也可以是一个自适应的值。例如,我们可以在KL值小于最小阈值时,减小 β \beta β,在KL值大于最大阈值时,增大 β \beta β

除了KL惩罚项之外,还可以使用clip来限制Gradient的大小,这就是PPO2的做法。

和A3C类似,PPO也有一个分布式版本,叫做DPPO(Distributed Proximal Policy Optimization)。

参考:

https://www.jianshu.com/p/f4d383b0bd4c

TRPO与PPO实现

https://bluefisher.github.io/2018/07/03/Proximal-Policy-Optimization-Algorithms/

Proximal Policy Optimization Algorithms

https://www.jianshu.com/p/9f113adc0c50

Proximal Policy Optimization(PPO)算法原理及实现!

https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/6-4-DPPO/

Distributed Proximal Policy Optimization(DPPO)

IMPALA

论文:

《IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures》

代码:

https://github.com/deepmind/lab/tree/master/game_scripts/levels/contributed/dmlab30

IMPALA是DeepMind于2018年提出的。

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第1张图片

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第2张图片

IMPALA的灵感来自于热门的A3C架构(上图左),后者使用多个分布式actor来学习agent的参数。在类似这样的模型中,每个actor都使用策略参数的一个副本,在环境中操作。actor会周期性地暂停探索,将它们已经计算得出的梯度信息分享至中央参数服务器,而后者会对此进行更新。

与此不同,IMPALA(上图中)中的actor不会被用来计算梯度信息。它们只是收集经验,并将这些经验传递至位于中心的learner。learner会计算梯度。因此在这样的模型中,actor和learner是完全独立的。

为了利用当代计算系统的规模优势,IMPALA在配置中可支持单个learner机器,也可支持多个相互之间同步的learner机器(上图右)。

由于actor只用于环境采样,而这个任务通常是一个仿真环境(例如游戏模拟器),因此它和learner在计算侧重点上有很大差异(例如在游戏领域,actor更侧重于仿真、渲染。),所以actor和learner的软硬件可以是异构的。

其次,由于Actor无须计算梯度,因此就可以一直采样,而无须等待策略的更新,这也是它和Batched A2C的最大区别。

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第3张图片

上图展示了这种差异,A2C采样了一个Batch之后,所有的actor都要停下来计算梯度,而IMPALA中的actor可以一直采样,从而大大提高了采样效率。

上图中的Batched A2C(sync step)和Batched A2C(sync traj)的区别在于:前者每次采样之后都要同步,这对于采样时间差异较大的例子,显然效率是很低下的。而后者是采样一批之后,再同步。

不过这种操作和学习的解耦也导致actor的策略落后于learner。为了弥补这样的差距,IMPALA还引入了V-trace技术。

参考:

https://zhuanlan.zhihu.com/p/56043646

AlphaStar之IMPALA

https://mp.weixin.qq.com/s/1zJyw67B6DqsHEJ3avbsfQ

DeepMind推出分布式深度强化学习架构IMPALA,让一个Agent学会多种技能

reward modeling

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第4张图片

训练一个奖励模型,其中包含来自用户的反馈,从而捕捉他们的意图。与此同时,我们通过强化学习训练一个策略,使奖励模型的奖励最大化。换句话说,我们把学习做什么(奖励模型)和学习怎么做(策略)区分开来。

参考:

https://mp.weixin.qq.com/s/4yGQtHtMqWlaB7MAsr8T_g

DeepMind重磅论文:通过奖励模型,让AI按照人类意图行事

https://mp.weixin.qq.com/s/TIWnnCmVZnFQNH9Fig5aTw

DeepMind发布新奖励机制:让智能体不再“碰瓷”

Hierarchical RL

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第5张图片

之前已经提到,在DeepMind测试的40多款游戏中,有那么几款游戏无论怎么训练,结果都是0,也就是DQN完全无效。上面就是其中最知名的代表游戏《Montezuma’s Revenge》。这是一个解谜游戏,比如图中要拿到钥匙,然后去开门。这对我们而言是通过先验知识得到的。但是很难想象计算机如何仅仅通过图像感知这些内容。感知不到,那么这种游戏也就无从解决。

论文:

《Hierarchical Deep Reinforcement Learning: Integrating Temporal Abstraction and Intrinsic Motivation》

深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI_第6张图片

该论文的主要思路就是,弄一个两个层级的神经网络,顶层用于决策,确定下一步的目标,底层用于具体行为。

这里的内在目标是人工确定的,因此智能程度不高,但是比较实用。

其他算法:

FuN (FeUdal Networks for Hierarchical Reinforcement Learning)

HIRO (Data Efficient Hierarchical Reinforcement Learning)

HAC (Learning Multi-Level Hierarchies with Hindsight)

参考:

https://zhuanlan.zhihu.com/p/78098982

Hierarchical IL/RL(ICML 2018)

https://blog.csdn.net/zhkmxx930xperia/article/details/87742722

Integrating Temporal Abstraction and Intrinsic Motivation

https://blog.csdn.net/songrotek/article/details/51384752

DRL前沿之:Hierarchical Deep Reinforcement Learning

https://mp.weixin.qq.com/s/IYyGgnoXZm6YfamLejqoNQ

深度强化学习试金石:DeepMind和OpenAI攻克蒙特祖玛复仇的真正意义

https://mp.weixin.qq.com/s/iBWjobr9srhB3MTiE_Wwmg

史上最强Atari游戏通关算法:蒙特祖玛获分超过200万!

OpenAI

OpenAI,由诸多硅谷大亨(Elon Musk等)联合建立的人工智能非营利组织。

官网:

https://openai.com/

github:

https://github.com/openai

Baselines

若干经典RL算法的实现,包括A2C、DQN等。

代码:

https://github.com/openai/baselines

Gym

Openai gym是一个用于开发和比较强化学习(reinforcement learning,RL)算法的工具包,与其他的数值计算库兼容,如tensorflow或者theano库。现在主要支持的是python语言,以后将支持其他语言。

官网:

https://gym.openai.com/

sudo apt install libffi-dev swig
git clone https://github.com/openai/gym 
cd gym
pip install -e . # minimal install
pip install -e .[all] # all install

这里选择minimal install就可以了,all install需要安装MuJoCo,而后者是收费软件。

和Gym配套的还有一个算法库:

https://github.com/openai/baselines

当然,看名字也知道这只是一个简单的算法库。

参考:

http://tech.163.com/16/0510/09/BMMOPSCR00094OE0.html

马斯克的AI野心——OpenAI Gym系统深度解析

https://mp.weixin.qq.com/s/KK1gwDW2EyptZOiuFjyAlw

OpenAI发布强化学习环境Gym Retro:支持千种游戏

https://blog.csdn.net/jinzhuojun/article/details/77144590

常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

https://blog.csdn.net/jinzhuojun/article/details/78508203

常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等)

https://mp.weixin.qq.com/s/0oVG7zMi08dzMQrk43T3mw

像训练Dota2一样训练真实机器人?Gibson Environment环境了解一下

https://mp.weixin.qq.com/s/_A0q8DFAsIclaofVgZfjMA

定制股票交易OpenAI Gym强化学习环境

https://blog.csdn.net/gsww404/article/details/80627892

OpenAI-baselines的使用方法

RND

OpenAI最近开发了RND(Random Network Distillation),一种基于预测的强化学习算法,用于鼓励强化学习代理通过好奇心来探索他们所处环境。在游戏任务Montezuma’s Revenge上首次超过人类的平均表现。

blog:

https://blog.openai.com/reinforcement-learning-with-prediction-based-rewards/

Reinforcement Learning with Prediction-Based Rewards

代码:

https://github.com/openai/random-network-distillation

你可能感兴趣的:(深度学习)