TRPO

最简单的策略梯度

img

是学习率

缺陷

在传统策略梯度算法中,我们根据目标函数和步长来更新策略权重,这样的更新过程可能会出现两个问题:

  • 过冲(Overshooting):更新错过了奖励峰值,并落入了次优策略区域
  • 下冲(Undershooting):在梯度方向上采取过小的更新步长,会导致收敛缓慢

在监督学习中,Overshooting并不是什么大问题,因为数据是固定的,我们可以在下一个epoch中重新纠正,但在强化学习中,如果因为Overshooting陷入了一个较差的策略区域,则未来的样本批次可能不会提供太多有意义的信息,用较差的数据样本再去更新数据,从而陷入了糟糕的正反馈中无法恢复,较小的学习率可能会解决这个问题,但会导致收敛速度变慢的Undershooting问题

纠正

为了避免Overshooting,一种直觉方法是限制每次更新步长的上限: 其中表示更新前后策略权重的欧式距离

但是仅仅关注的变化量是不合理的,可能发生了较小的变化,会对的输出产生较大的影响,我们更应该考虑分布对参数变化的敏感度,传统的策略梯度算法无法考虑到这种曲率变化,我们需要引入二阶导数

限制策略更新的差异

我们需要表示策略(分布)之间的差异,而不是参数本身的差异。计算两个概率分布之间的差异,最常见的是KL散度,也成为相对熵,描述了两个概率分布之间的距离: 调整后的策略更新限制为: 通过上述表达式,我们可以确保在参数空间中执行大更新的同时,保证策略本身的改变不超过阈值,然而,计算KL散度需要遍历所有的状态-动作对,因此我们需要一些化简来处理现实的RL问题

首先,我们使用拉格朗日松弛将原表达式的发散约束转化为惩罚项,得到一个更容易求解的表达式: 泰勒展开: 目标函数近似于一阶泰勒展开,KL散度近似于二阶泰勒展开,我们可以进一步化简:

缺陷

  • 近似值可能会违反KL约束,从而导致分析得出的步长过大,超出限制要求
  • 矩阵的计算时间太长,是
  • 我们没有检查更新是否真的改进了策略,由于存在大量的近似过程,策略可能并没有优化

TRPO

全称Trust Region Policy Optimization,它以自然策略梯度优化为基础

针对自然策略梯度算法的问题,我们希望可以对策略的优化进行量化,从而保证每次更新一定是有优化作用的,为此,我们需要计算两种策略之间预期回报的差异,采用原策略预期回报添加新策略预期优势的方式。该表达式在原策略下计算优势函数,无需重新采样: 其中优势函数的定义为: 由于时间范围是无限的,引入状态的折扣分布 原差异表达式可以重新表达为: 我们无法在不对更新策略采样的情况下,知道对应于更新策略的状态分布,故引入近似误差,使用当前策略近似 接下来,我们将状态分布求和替换成期望,方便实际计算时使用蒙特卡洛模拟进行采样,同时将动作求和替换成重要性采样。通过重要性采样,可以有效利用当前策略的行动期望,并针对新策略下的概率进行修正: