强化学习入门教程

视频教程链接

图文教程链接

名词解释

价值函数

在马尔可夫奖励过程中,一个状态的期望回报(即从这个状态出发的未来累积奖励的期望)被称为这个状态的价值(value)。所有状态的价值就组成了价值函数(value function). 于是我们可以将价值函数形式化的定义为:

展开可以得到:

根据马尔科夫概率转移过程我们可以将上面的式子改写为:

贝尔曼方程(Bellman equation)

若一个马尔科夫奖励过程一共有个状态,即:

将所有状态的价值表同样表示为一个向量的形式:

同理将奖励函数写成一个列向量:

于是我们可以将Bellman方程写为:

简记为:

可以直接求得解析解:

上述计算式的计算复杂度是,对于大规模的马尔科夫奖励过程并不现实;解较大规模的马尔可夫奖励过程中的价值函数时,可以使用动态规划(dynamic programming)算法、蒙特卡洛方法(Monte-Carlo method)和时序差分(temporal difference). 这些算法都将在后续计算.

马尔科夫决策

之前讨论到的马尔可夫过程和马尔可夫奖励过程都是自发改变的随机过程;而如果有一个外界的“刺激”来共同改变这个随机过程,就有了马尔可夫决策过程(Markov decision process,MDP)。我们将这个来自外界的刺激称为智能体(agent)的动作.

MDP可以由于一个五元组 来描述;相比于...

to be continue

经典强化学习策略

REINFORCE-基于策略梯度的强化学习算法

我们记一个马尔科夫序列的反馈值为:

在策略梯度中,策略经常用一个带参数集的函数表示:.由策略决定的目标函数可以定义为:

使用梯度上升策略来更新策略参数

其中:

而且其中又满足:

对上式对数求导:

于是有:

REINFORCE算法中的是基于蒙特卡洛采样的策略梯度方法采样得到的一个轨迹。也就是agent的采样策略是从开始状态一直到最终状态,是一个完整的轨迹。

Actor-Critic 算法

在上述REINFORCE算法里面我们可以将简记为:

其中可以取很多形式

  • , 一条采样的总回报;

  • , 采取动作之后的回报;

  • , 基准线版本的改进;

  • ,时序差分残差;

这个可以是任何我们想要给定策略参数想要达到的最大化或最小化的效应, 比如...

提到 REINFORCE 通过蒙特卡洛采样的方法对策略梯度的估计是无偏的,但是方差非常大。我们可以用上述形式引入基线函数(baseline function)来减小方差。REINFORCE 算法基于蒙特卡洛采样,只能在序列结束后进行更新,这同时也要求任务具有有限的步数,而 Actor-Critic 算法则可以在每一步之后都进行更新,并且不对任务的步数做限制。

Actor-Critic 算法顾名思义就是将强化学习算法分为两部分:

  • Critic 要做的是通过 Actor 与环境交互收集的数据学习一个价值函数,这个价值函数会用于判断在当前状态什么动作是好的,什么动作不是好的,进而帮助 Actor 进行策略更新。

对于单个数据定义的如下的价值函数的损失函数:

和DQN中一样,我们将上述视作我们的差分目标,不会产生梯度来更新价值函数. 于是价值函数的梯度为:

  • Actor 要做的是与环境交互,并在 Critic 价值函数的指导下用策略梯度学习一个更好的策略。

所以我们的Actor-Critic算法可以描述为:

  • 初始化策略网格参数以及价值网格参数

  • 使用当前的动作策略采样agent轨迹得到:

  • 为每一步数据计算

  • 更新价值网格参数

  • 根据更新之后的价值网格参数来更新策略网格参数

TRPO算法

之前提到的两种基于策略的算法,在实际训练过程中极易出现训练不稳定的情况;

具体回顾一下基于策略的算法策略:

假设是策略的参数,定义价值函数:

基于策略的方法的目标就是找到最优的;

但是这种算法有一个明显的缺点:当策略网络是深度模型时,沿着策略梯度更新参数,很有可能由于步长太长,策略突然显著变差,进而影响训练效果。

针对以上问题,我们考虑在更新时找到一块信任区域(trust region),在这个区域上更新策略时能够得到某种策略性能的安全性保证,这就是信任区域策略优化(trust region policy optimization,TRPO)算法的主要思想。

具体来说考虑到初始状态的分布和我们的策略无关,所以我们的目标函数可以写做:

基于上述推导,我们可以得到新旧策略之间目标函数的差异:

如若定义残差函数:

注意看的第一项取决于新策略的状态访问分布,而后面两项取决于原始策略的状态访问分布;但是当我们策略更新步幅很小的时候,的状态访问分布可以近似相等;

我们定义:

于是我们的优化目标为:

进一步处理:

此外为了保证新旧策略足够接近,TRPO 使用了库尔贝克-莱布勒(Kullback-Leibler,KL)散度来衡量策略之间的距离.于是整体的优化公式修改为:

这里的不等式约束定义了策略空间中的一个 KL 球,被称为信任区域。在这个区域中,可以认为当前学习策略和环境交互的状态分布与上一轮策略最后采样的状态分布一致,进而可以基于一步行动的重要性采样方法使当前学习策略稳定提升。

PPO算法

介绍的 TRPO 算法在很多场景上的应用都很成功,但是我们也发现它的计算过程非常复杂,每一步更新的运算量非常大。于是,TRPO 算法的改进版——PPO 算法在 2017 年被提出,PPO 基于 TRPO 的思想,但是其算法实现更加简单。

让我们回忆一下TRPO的优化目标:

TRPO 使用泰勒展开近似、共轭梯度、线性搜索等方法直接求解。但 PPO 用了一些相对简单的方法来求解。具体来说,PPO 有两种形式,一是 PPO-惩罚,二是 PPO-截断,我们接下来对这两种形式进行介绍。

PPO-惩罚算法

PPO-惩罚(PPO-Penalty)用拉格朗日乘数法直接将 KL 散度的限制放进了目标函数中,这就变成了一个无约束的优化问题,在迭代的过程中不断更新 KL 散度前的系数。即:

, 那么的更新规则如下:

  • 如果,那么.
  • 如果,那么.
  • 否则.

其中,是事先设定的一个超参数,用于限制学习策略和之前一轮策略的差距。

PPO截断

PPO 的另一种形式 PPO-截断(PPO-Clip)更加直接,它在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大,即: