参数优化
推导最简单的策略梯度
我们考虑一个随机的, 参数化的策略
我们会用梯度下降 (
其中
为了使用该算法, 我们需要一个能够用数值计算的策略梯度表达式. 这包括两个步骤:
- 推导出策略性能的解析梯度 (
, 什么是解析梯度? 详情看这篇文章) , 以期望值的形式表现 (便于用平均值估计). - 算出在样本上的估计的期望值, 可以使用有限步代理人-环境交互的数据.
这里列出对推导解析梯度有帮助的一些事实.
- 轨迹的概率. 采取策略
所做出的轨迹 的概率是
- 对数的把戏. 我们知道
对 的导数是 , 于是根据链式法则有
- 轨迹的对数概率
- 环境函数的梯度. 由于
与 都无关, 因此它们的梯度为 . - 由第 4 条与第 3 条可知, 轨迹的对数概率的梯度是
由以上全部推导就有
这样我们就可以用样本的平均值来估计策略梯度了. 假如我们有轨迹的集合
其中
损失函数
在强化学习中, 我们同样可以定义类似监督学习中的损失函数的概念, 但是在强化学习中的损失函数与监督学习中的损失函数有很大区别. 损失函数的梯度与策略梯度是相同的. 其接受的数据包含了 (状态, 动作, 权重) 三元组.
与参数关系
在监督学习中, 损失只与数据有关而与参数无关, 但是在强化学习中, 由于数据是遵循最近的策略采样得来的, 因此损失也与参数有关.
描述性能
在强化学习中, 我们关心的是期望回报
EGLP 定理
在这里我们会推导出一个在策略梯度中被广泛使用的一个中间结果, 我们称其为梯度对数概率期望 (
别让过去影响你
梯度更新表达式
每次更新, 都可以让每个动作的对数概率随着
这被称为奖励策略梯度 (
证明过程比较繁琐, 不想看的可以略过.
证明
我们先提出一个函数
如果我们能证明当 $t'
根据贝叶斯法则, 我们有
若
因此就有
而
当 $t'
这是因为
因此有
此时就要用到我们的
因此当 $t'
而当
既然期望是相同的, 但根据这个式子来训练为什么会更好呢? 这是因为策略梯度需要用样本轨迹来估计, 而且最好是低方差的. 如果方差较大, 说明估计不太准确. 如果公式中包括过去的奖励, 虽然它们均值为
, 但方差并不是, 在公式中增加它们只会给策略梯度的样本估计增加噪音, 增加方差. 而这会导致需要较多的样本轨迹才能得到一个相对稳定的值 (收敛) . 删除它们后, 我们就可以用更少的样本轨迹得到低方差的估计, 也就是说更容易收敛. 举个例子, 如果你要估计一系列数字的期望 (也就是算平均值) , 它们服从的概率分布的期望其实都是 , 但是一个方差很大, 一会 一会 一会 , 你需要很多数字才能得到一个较为准确的值. 而另一个方差很小, 基本就是 , , 这样, 只需要几个数字就能估计得差不多.
策略梯度的基线
由
这使得我们可以在策略梯度的表达式中任意加上 (或删除) 这样的项而不改变最终结果, 比如说
函数
基线函数一般是策略上的价值函数 (
经验上, 让基线
事实上,
策略梯度的其他形式
我们已经见到了策略梯度的很多等价形式
又或者
再或者
但还有两种重要的形式.
- 状态-动作价值函数
证明可以看这里.
- 优势方程
而
由基线得知等价.
为了更详细的了解这个主题, 你应该阅读 Generalized Advantage Estimation (GAE). 也可以参考我的文章 GAE 算法 .