强化学习能够按照方法学习策略来划分红基于值和基于策略两种。而在深度强化学习领域将深度学习与基于值的Q-Learning算法相结合产生了DQN算法,经过经验回放池与目标网络成功的将深度学习算法引入了强化学习算法。其中最具表明性分别是Q-Learning与Policy Gradient算法,将Q-Learning算法与深度学习相结合产生了Deep Q Network,然后又出现了将两种方式的优点结合在一块儿的更为优秀Actor Critic,DPG, DDPG,A3C,TRPO,PPO等算法。而本文所采用的是目前效果较好的近端策略优化算法PPO。算法
PPO算法思想
PPO算法是一种新型的Policy Gradient算法,Policy Gradient算法对步长十分敏感,可是又难以选择合适的步长,在训练过程当中新旧策略的的变化差别若是过大则不利于学习。PPO提出了新的目标函数能够再多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以肯定的问题。其实TRPO也是为了解决这个思想可是相比于TRPO算法PPO算法更容易求解。编程
PolicyGradient回顾
从新回顾一下PolicyGradient算法,Policy Gradient不经过偏差反向传播,它经过观测信息选出一个行为直接进行反向传播,固然出人意料的是他并无偏差,而是利用reward奖励直接对选择行为的可能性进行加强和减弱,好的行为会被增长下一次被选中的几率,很差的行为会被减弱下次被选中的几率。
策略以下图方式定义,详细公式信息接下来会介绍。网络
公式推导
PolicyGradient算法原来是On-Policy的,(感谢指正,更正:PPO也是on-policy)。机器学习
important sampling不能算是off-policy,PPO里面的 important sampling
采样的过程仍然是在同一个策略生成的样本,并未使用其余策略产生的样本,所以它是on-policy的。而DDPG这种使用其余策略产生的数据来更新另外一个策略的方式才是off-policy函数
- On-Policy:只与相同的环境下进行交互学习
- off-Policy:能够与学习本身环境下的经验也能够得到其余环境下的经验
策略τ的回报指望以下学习
原来是使用 与环境交互,当
更新时就对训练数据从新采样,那要变成off-policy根据以前的经验就须要使用另一个网络来帮助采样,就像DQN里的targetNet,如今目标是使用
采样来训练
被固定因此从新使用采样数据。
上图中所示,PolicyGradient是model-free的因此不知道模型的几率,因此只能经过与真实环境数据的分布P(x)中去采样加和平均求指望。但如今咱们为了把它变成offpolicy,就不能直接从P(x)中去直接采样。这时候把指望等价写成而后引入新的采样分布q(x)进行变换
,这时候咱们发现这和最大熵模型引入隐含变量的套路有点类似,而后就能够把原来x~p的指望改写成x~q的指望。因此最终能够获得优化
上述推导就是important sample的技巧。在这个式子中其中的就是important weight。经过这个公式咱们也能够想象获得,若是采样的分布p与真实的分布q差得不少,那么确定会致使两个指望不一致。下图经过举了一个例子来说解
上图的p(x)与q(x)差别很大左边为负右边为正,当采样次数不多右边采样不少的状况,就会得出与右边为正的错误结果,可是若是在左边也被采样到一个样本时这个这个时候由于做为权重修正就至关于给左边的样本一个很大的权重,就能够将结果修正为负的。因此这就是 important weight的做用。可是咱们也能看出来,采样次数要足够多,万一采样次数少只采到了一边那就凉凉了。
因此有了上述的 Important Sampling的技巧咱们就能够将原来的on-policy变成off-policy了。url
上文提到咱们不但愿与
的差距过大,因此要想办法约束它。KL散度也叫相对熵,能够用来衡量两个分布之间的差别性。因此最直接的办法,就是对目标函数增长一个约束条件让他的KL散度小于
。这个办法其实就TRPO的思想啦~spa
直接求解TRPO这种带约束的问题是十分复杂的,他与PPO算法的效果差很少,可是PPO将KL散度做为惩罚项,更加容易求解。.net
另外还有一种PPO2算法效果比PPO要好一些,以下图所示利用clip函数将其固定在了必定的范围以内,一样也能够起到限制约束
的做用。
承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的都可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。
本文同步分享在 博客“于小勇”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。