深度强化学习
Published:
本文主要关注于使用深度学习方法进行强化学习,同样包括了基于值函数和策略函数的方法,再到演员-评论家算法等,并包含了模仿学习、逆向强化学习等的简介。
主要参考了 李宏毅‘强化学习
本文的很多内容基于 强化学习 , 不了解的读者可以先参见该文章。
Proximal Policy Optimization(PPO)
PPO是基于策略函数的方法,也即 强化学习 中的策略梯度的方法。
假设智能体(Agent)在训练中得到的回报为$R$,希望令回报$R$最大,基于梯度的方法进行优化,
\[\nabla E_{\theta} [R] = E_{\theta} [R(s,a) \nabla \log p_\theta(a \vert s))]\]可以从分类的角度理解策略梯度的方法,$\log p_\theta(a \vert s)$类似于分类问题中的交叉熵损失函数,也即希望网络学习到的策略的分类结果为$\theta(a \vert s)$,其权重为$R(s,a)$, 希望回报越大的$(s,a)$被赋予更多的分类的可能性。
并且考虑增加Baseline的优化方法,其中$A(s,a)$又通常称为动作$a$的优势函数(Advantage Function),
\[\begin{align} \nabla E_{\theta} [R] &= E_{\theta} [A(s,a) \nabla \log p_\theta(a \vert s))] \\ \text{Let } A(s,a) &= R(a,s) - V(s) \\ \end{align}\]上述的算法为同策略(On-Policy)的方法,每次训练都需要重新采样,考虑引入重要性采样的技术,使用另一个智能体(Agent),通常可以是前几轮训练的结果进行采样。
关于重要性采样,可以参加 蒙特卡罗方法 中的对应部分。
此时梯度可以变为,
\[\begin{align} E_{\theta} [A(s,a) \nabla \log p_\theta(a \vert s))] &= E_{\theta'}[\frac{p(a \vert s,\theta)}{p(a \vert s,\theta')} A(s,a)] \\ \end{align}\]在重要性采样中,如果$p(a \vert s,\theta),p(a \vert s,\theta’)$分布的差距很大,采样的效果会很差,因此PPO中希望两者较为接近。
可以考虑使用下面的目标函数,
\[\begin{align} \max(E_{\theta'}[\frac{p(a \vert s,\theta)}{p(a \vert s,\theta')} A(s,a)],(1+ \epsilon)A(s,a)), A(s,a) > 0 \\ \min(E_{\theta'}[\frac{p(a \vert s,\theta)}{p(a \vert s,\theta')} A(s,a)],(1- \epsilon)A(s,a)), A(s,a) < 0 \\ \end{align}\]上式的含义是,当$A(s,a)$为正值的时候,鼓励$p(a \vert s,\theta)$增大,但其不能超过$p(a \vert s,\theta’)$的$1+\epsilon$倍。而当$A(s,a)$为负值的时候,鼓励$p(a \vert s,\theta)$减小,但其不能超过$p(a \vert s,\theta’)$的$1-\epsilon$倍。PPO利用上面的目标函数,权衡了优化目标和重要性采样中的分布限制。
目标函数也可以写成,
\[E_{\theta'}[\min(\frac{p(a \vert s,\theta)}{p(a \vert s,\theta')} A(s,a), \text{clip }(\frac{p(a \vert s,\theta)}{p(a \vert s,\theta')},1 +\epsilon, 1-\epsilon) A(s,a))]\]Deep Q-Learning(DQN)
DQN其实就是 强化学习 中的值函数近似的方法,采用神经网络估动作-状态值函数$Q(s,a)$,作为对期望总回报的估计。
可以采用蒙特卡罗方法(MC,Monte Carlo)或者时序差分方法(TD,Temporal Difference)
MC 蒙特卡罗方法方法基于采样,
\[Q(s_t,a_t) \approx E[G(s_t,a_t)]\]TD 而时序差分方法基于动态规划的思想,
\[Q(s_t,a_t) \approx R(s_t,a_t) + \max_{a_{t+1}} Q(s_{t+1},a_{t+1})\]据此将问题转化为回归任务,使用神经网络回归对应的值函数即可。
而网络的结果设计是其核心,可以加入Noisy Network, Distribution Network,Duel Network等,可以参见 Rainbow
Asynchronous Advantage Actor-Critic(A3C)
基于策略的方法(Policy-Based),例如PPO,需要经过采样获得回报或优势函数的期望,而采样的效率通常较低。而基于值函数的方法(Value-Based),例如DQN,需要基于贪心的思想选择最大的Q值作为对应的策略,较难支持随机性的策略。
演员-评论家算法(Actor-Critic)可以认为结合了两者,将基于策略的方法看作一个演员(Actor)在和环境的交互过程中不断优化自己的策略,而将基于值的方法看作一个评论家(Critic),在观察的过程中对值函数做出评估,而两者正好可以相结合。
考虑利用DQN预测出每个状态的值函数$V(s)$, 将优势函数$A(s,a)$写为,
\[A(s_t,a_t) = R(s_t,a_t) + V(s_{t+1},a_{t+1}) - V(s_t,a_t)\]再代入策略梯度的目标中,可以得到
\[\nabla E_{\theta} [R] = E_{\theta} [R(s_t,a_t) + V(s_{t+1},a_{t+1}) - V(s_t,a_t)\nabla \log p_\theta(a \vert s))]\]由于上述使用到了优势(Advantage)函数$A(s,a)$,因此该方法实际上为Advantage Actor-Critic方法。
进一步,利用分布式机器学习的思想,可以同时(Asynchronous)训练多个演员,同时更新参数,也即著名的Asynchronous Advantage Actor-Critic方法,简称为A3C。
Pathwise Derivative Policy Gradient(PDPG)
PDPG也可以看作将基于策略和基于值函数两种方法的结合,其最大的优点是可以解决连续动作状态的问题。
在DQN的评论家(Critic)估计中,由于$\max$操作的存在,一般不加改进的话,只能应用在有限离散的动作上。
\[Q(s_t,a_t) \approx R(s_t,a_t) + \max_{a_{t+1}} Q(s_{t+1},a_{t+1})\]而PDPG考虑使用另一个网络直接寻找最优的$a_{t+1}$,该网络也可以视作一个演员(Actor),其输入一个状态$s$,输出对应的最佳动作$a$,
\[\begin{align} Q(s_t,a_t) &\approx R(s_t,a_t) + Q(s_{t+1},\text{Act}(s_{t+1})) \\ \text{With } \text{Act }(s_t) & \approx \text{argmax} a_t \\ \end{align}\]类似的思想也可以类比为生成对抗网络(GAN,Generative Adversarial Networks )中的生成器(Generator)和判别器(Discriminator),可以参见 GAN 和 CycleGAN
如果将A3C方法看作将值函数的方法融入策略梯度的方法中,那么PDPG则是将策略梯度的方法融入到值函数的方法中,因此两种方法本质上又是共通的,也可以看作广义的演员-评论家算法。
Inverse Reinforce Learning
本节介绍逆向强化学习(Inverse Reinforce Learning,IRL)
在例如自动驾驶等真实场景下,通常得不到回报函数$R(s,a)$,但可以得到人类的决策(Expert),逆向强化学习的目的是从人类的决策或者专家的行为中学习到智能体Agent应有的行为。
最简单的方法是模仿学习(Imitate Learning),也即将行为看作一个回归任务,但缺点是训练的智能体与专家可能遇见了不同的情况,例如Agent可能会做出Expert从来没做过的动作,从而无从模仿。
逆向强化学习IRL需要从Expert的行为中反推出世界的模型,该操作可以使用一个网络进行,该网络在某种意义上有时一个评论员(Critic),对专家的行为进行评论得到$R(s,a)$,评论员的评论要求是区分开专家的行为和智能体的行为,也即给专家的行为赋予更高的$R(s,a)$,而给智能体(或称演员Actor)的行为赋予更低的$R(s,a)$,这在某种意义上又是GAN中的判别网络和生成网络。