文章目录
引言
强化学习方法的分类
强化学习方法可以分为:基于值函数的方法、基于策略的方法和Actor-Critic。
- 基于值函数的方法: 用值函数进行策略评价+策略优化,用值函数导出策略
- 基于策略的方法: 直接学习策略
- Actor-Critic: 学习值函数 + 策略
之前的强化学习方法都是基于值函数的方法,在值函数近似中,我们使用带参数w的函数去近似值函数,如下:
在基于值函数的方法中,策略是从值函数中导出的
- 使用贪婪的方法导出最优策略(最终收敛得到的策略)
- 使用 -贪婪方法导出行为策略(智能体真正做的策略)
而基于策略的方法,直接将策略进行参数化。
基于值函数的方法的局限性
- 针对确定性策略
- 存在策略退化: 收敛后,若存在误差,则很容易因为微小的值函数差,发生策略退化现象
- 难以处理高维度的状态/动作空间
- 不能处理连续的状态/动作空间
- 收敛速度慢: 反复进行策略迭代(策略评价+策略提升),速度较慢
策略梯度算法的优缺点
策略梯度算法,也就是基于策略的方法,具有的优缺点:
优点:
- 更好的收敛性
- 能够有效地处理高维和连续的动作空间
- 能够学到随机策略
- 不会导致策略退化
缺点:
- 更容易收敛到局部最优值
- 难以评价一个策略,而且评价的方差较大
策略模型的建模方式
左侧2个是值函数方法,右侧2个是基于策略的方法。
策略梯度算法
策略梯度目标函数
在策略梯度算法中,我们用一个参数 θ 建模策略 ,如何寻找最优的参数 θ?
值函数近似时,优化的目标是使值函数的输出接近目标值。那么,如何不利用值函数,直接评价一个策略 的好坏?
策略梯度的推导
用 表示每次仿真的状态-行为序列 ,每一个轨迹代表了强化学习的一个样本。轨迹的回报:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKizjotD-1583932365986)(http://monteyang.cn/images/RL-策略梯度-轨迹回报值.png)]
用 表示轨迹 出现的概率, 强化学习的目标函数可表示为
对所有条轨迹进行累加: 轨迹的回报值 * 该轨迹出现的概率
强化学习的目标是最大化整个过程的奖励,也就是最大化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVLXeORe-1583932365987)(http://monteyang.cn/images/RL-策略梯度-目标.png)]
在上式中,不同的策略只是影响了不同轨迹出现的概率。
如何求解 ?
- 未知
- 无法用一个可微分的数学模型直接表达
策略梯度解决的问题是,即使未知 的具体形式,也能求其梯度。
从似然率的角度:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lUjeXFe-1583932365988)(http://monteyang.cn/images/RL-策略梯度-似然率.png)]
为什么要推导成这样的形式?
- 可以通过 的模型表达 (后面会证明)
- 可以通过采样的方式估计
- 期望符号 E 可以通过经验平均去估算
利用当前策略 采样 m 条轨迹,使用经验平均来估计梯度(MC形式):
- 是轨迹 的概率随参数 变化最陡的方向
- 沿正方向,轨迹出现的概率会变大
- 沿负方向,轨迹出现的概率会变小
- 控制了参数更新的方向和步长,正负决定了方向,大小决定了增大 (减小) 的幅度
在策略梯度算法中,
- 增大了高回报轨迹出现的概率,回报值越大增加越多
- 减少了低回报轨迹出现的概率,回报值越小减少越多
注意到似然率梯度只是改变轨迹出现的概率,而没有尝试去改变轨迹
轨迹 出现的概率 是未知的,根据马尔科夫链:
由于状态转移概率 中不包含参数 θ,因此求导的过程可以消掉,所以:
因此,综上可得,我们可以在仅有可微分的策略模型 πθ 的情况下,求得
其中,
是 的无偏估计
弥补策略梯度的缺陷
- 方差大
- 如果所有的 R(τ) 都是正的,那么所有轨迹出现的概率都会增加
我们可以通过以下方法减小方差:
- 引入基线 (baseline)
- 修改回报函数
- Actor-Critic 方法
- 优势函数
引入基线
引入基线 b ,不影响策略梯度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jis7uK9K-1583932365990)(http://monteyang.cn/images/RL-策略梯度-基线.png)]
由上式可知,这是因为对基线求期望值,结果会抵消为0。
选择基线的方法:
- 选择回报值函数的期望值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mpx82BHF-1583932365990)(http://monteyang.cn/images/RL-策略梯度-基线1.png)]
- 最小方差
修改回报值函数
在当前的估计值值,对回报值 进行修改。
由于将来的动作不依赖过去的奖励,因此我们可以修改回报值来降低方差。
Actor-Critic
MC 策略梯度 (REINFORCE)
- 使用梯度上升算法更新参数 θ
- 使用采样回报值 估计真实回报值
梯度上升:采用梯度上升是因为在策略梯度算法中,要最大化目标函数。
采样回报值的方差很大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LiImXL6R-1583932365993)(http://monteyang.cn/images/RL-策略梯度-REINFORCE2.png)]
使用 Critic 函数减小方差
REINFORCE中的采样回报值 方差很大,
我们可以使用critic函数来估计回报值减小方差
要注意的是:Actor-Critic 中的 Critic 只是为了减小策略梯度算法中估计回报值的方差。真正做决策的是 Actor(策略梯度算法)。
Actor-Critic 算法维持两个参数:
- Critic 更新 Q 函数的参数 w
- Actor 使用 Critic 的方向更新策略参数 θ
将回报值替换为Q函数,近似策略梯度:
使用优势函数减小误差
优势函数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S5vj89hu-1583932365995)(http://monteyang.cn/images/RL-策略梯度-优势函数.png)]
表示在当前状态下,每个动作相对于平均情况,能创造多少优势。
即通过 V 函数估计基线,用 Q 函数估计回报函数。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLeOXBG8-1583932365995)(http://monteyang.cn/images/RL-策略梯度-优势函数2.png)]
近似策略梯度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3UIDbtp8-1583932365996)(http://monteyang.cn/images/RL-策略梯度-优势函数3.png)]
使用 TD 误差替代优势函数
对于真实的值函数 $V^{π_θ}(s), TD 误差为
TD 误差是优势函数的无偏估计
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQMi1Xr4-1583932365997)(http://monteyang.cn/images/RL-策略梯度-TD误差2.png)]
使用 TD 误差来计算策略梯度
策略梯度多种形式的总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltjjQsfP-1583932365997)(http://monteyang.cn/images/RL-策略梯度-多种形式总结.png)]
其中 Advantage Actor-Critic 为 A2C 算法。
又由于TD误差是 优势函数 A的无偏估计,所以 TD Actor-Critic 也是 A2C,实际中的 A2C 也是用 TD Actor-Critic。
该式中有两部分:
- 求梯度的部分(∇):控制着策略更新的方向
- 及其变种:控制着策略更新的步长(重要)
Critic 使用了策略评价 (MC 或 TD) 来估计 或
A2C 算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoAklqcI-1583932365998)(http://monteyang.cn/images/RL-策略梯度-A2C.png)]
- 通过在当前状态s下,执行动作a,获得奖励r、并到达下一个状态s’,
- 此时计算 TD 误差,
- 再根据 TD 误差 更新 Critic 和 Actor。
A2C 中为了满足样本独立同分布,常常使用多进程的思路。
来源:CSDN
作者:程序员MONTE
链接:https://blog.csdn.net/weixin_39129504/article/details/104805898