强化学习-7.策略梯度算法

Deadly 提交于 2020-03-12 08:47:31

引言

强化学习方法的分类

强化学习方法可以分为:基于值函数的方法、基于策略的方法和Actor-Critic。

  • 基于值函数的方法: 用值函数进行策略评价+策略优化,用值函数导出策略
  • 基于策略的方法: 直接学习策略
  • Actor-Critic: 学习值函数 + 策略

之前的强化学习方法都是基于值函数的方法,在值函数近似中,我们使用带参数w的函数去近似值函数,如下:

在这里插入图片描述

在基于值函数的方法中,策略是从值函数中导出的

  • 使用贪婪的方法导出最优策略(最终收敛得到的策略)
  • 使用 ϵ\epsilon-贪婪方法导出行为策略(智能体真正做的策略)

而基于策略的方法,直接将策略进行参数化。

基于值函数的方法的局限性

  • 针对确定性策略
  • 存在策略退化: 收敛后,若存在误差,则很容易因为微小的值函数差,发生策略退化现象
  • 难以处理高维度的状态/动作空间
    • 不能处理连续的状态/动作空间
  • 收敛速度慢: 反复进行策略迭代(策略评价+策略提升),速度较慢

策略梯度算法的优缺点

策略梯度算法,也就是基于策略的方法,具有的优缺点:

优点:

  • 更好的收敛性
  • 能够有效地处理高维和连续的动作空间
  • 能够学到随机策略
  • 不会导致策略退化

缺点:

  • 更容易收敛到局部最优值
  • 难以评价一个策略,而且评价的方差较大

策略模型的建模方式

左侧2个是值函数方法,右侧2个是基于策略的方法。

策略梯度算法

策略梯度目标函数

在策略梯度算法中,我们用一个参数 θ 建模策略 πθ(s,a)π_θ(s,a),如何寻找最优的参数 θ?

值函数近似时,优化的目标是使值函数的输出接近目标值。那么,如何不利用值函数,直接评价一个策略 πθπ_θ 的好坏?

策略梯度的推导

ττ 表示每次仿真的状态-行为序列 S0,A0,http://monteyang.cn.,ST,ATS_0,A_0,http://monteyang.cn. ,S_T,A_T,每一个轨迹代表了强化学习的一个样本。轨迹的回报:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKizjotD-1583932365986)(http://monteyang.cn/images/RL-策略梯度-轨迹回报值.png)]

P(τ;θ)P(τ; θ) 表示轨迹 ττ 出现的概率, 强化学习的目标函数可表示为

对所有条轨迹进行累加: 轨迹的回报值 * 该轨迹出现的概率

强化学习的目标是最大化整个过程的奖励,也就是最大化U(θ)U(\theta)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVLXeORe-1583932365987)(http://monteyang.cn/images/RL-策略梯度-目标.png)]

在上式中,不同的策略只是影响了不同轨迹出现的概率。

如何求解 θU(θ)∇_θU(θ)?

  • P(τ;θ)P(τ; θ) 未知
  • 无法用一个可微分的数学模型直接表达 U(θ)U(θ)

策略梯度解决的问题是,即使未知 U(θ)U(θ) 的具体形式,也能求其梯度。

从似然率的角度:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lUjeXFe-1583932365988)(http://monteyang.cn/images/RL-策略梯度-似然率.png)]

为什么要推导成这样的形式?

  • P(τθ)P(τ|θ) 可以通过 π(as)π(a|s) 的模型表达 (后面会证明)
  • R(τ)R(τ) 可以通过采样的方式估计
  • 期望符号 E 可以通过经验平均去估算

利用当前策略 πθπ_θ 采样 m 条轨迹,使用经验平均来估计梯度(MC形式):

θU(θ)1mi=1mθlogP(τi;θ)R(τi)\bigtriangledown_\theta U(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} \bigtriangledown_\theta \log \mathbb{P}(\tau_i ; \theta) R(\tau_i)

  • θlogP(τ;θ)∇_θ \log \mathbb{P} (τ; θ) 是轨迹 ττ 的概率随参数 θθ 变化最陡的方向
    • 沿正方向,轨迹出现的概率会变大
    • 沿负方向,轨迹出现的概率会变小
  • R(τ)R(τ) 控制了参数更新的方向和步长,正负决定了方向,大小决定了增大 (减小) 的幅度

在策略梯度算法中,

  • 增大了高回报轨迹出现的概率,回报值越大增加越多
  • 减少了低回报轨迹出现的概率,回报值越小减少越多

注意到似然率梯度只是改变轨迹出现的概率,而没有尝试去改变轨迹

轨迹 τ\tau 出现的概率 P(τ;θ)\mathbb{P} (τ; θ) 是未知的,根据马尔科夫链:

由于状态转移概率 P(st+1(i)st(i),at(i))P(s_{t+1}^{(i)} |s_t^{(i)}, a_t^{(i)}) 中不包含参数 θ,因此求导的过程可以消掉,所以:

因此,综上可得,我们可以在仅有可微分的策略模型 πθ 的情况下,求得 θU(θ)∇_θU(θ)

η^=θU(θ)1mi=1mθlogP(τi;θ)R(τi)\hat{\eta} =∇_\theta U(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} ∇_\theta \log \mathbb{P}(\tau_i ; \theta) R(\tau_i)

其中,

η^\hat{\eta}θU(θ)∇_θU(θ) 的无偏估计

E[η^]=θU(θ)E[\hat{\eta}]=∇_θU(\theta)

弥补策略梯度的缺陷

  • 方差大
  • 如果所有的 R(τ) 都是正的,那么所有轨迹出现的概率都会增加

我们可以通过以下方法减小方差:

  • 引入基线 (baseline)
  • 修改回报函数
  • Actor-Critic 方法
  • 优势函数

引入基线

引入基线 b ,不影响策略梯度

θU(θ)1mi=1mθlogP(τi;θ)R(τi)=1mi=1mθlogP(τi;θ)(R(τi)b)∇_\theta U(\theta) \approx \frac{1}{m} \sum_{i=1}^{m} ∇_\theta \log \mathbb{P}(\tau_i ; \theta) R(\tau_i)=\frac{1}{m} \sum_{i=1}^{m} ∇_\theta \log \mathbb{P}(\tau_i ; \theta) (R(\tau_i)-b)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jis7uK9K-1583932365990)(http://monteyang.cn/images/RL-策略梯度-基线.png)]

由上式可知,这是因为对基线求期望值,结果会抵消为0。

选择基线的方法:

  1. 选择回报值函数的期望值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mpx82BHF-1583932365990)(http://monteyang.cn/images/RL-策略梯度-基线1.png)]

  1. 最小方差

修改回报值函数

在当前的估计值值,对回报值 R(τ)R(\tau) 进行修改。

由于将来的动作不依赖过去的奖励,因此我们可以修改回报值来降低方差。

Actor-Critic

MC 策略梯度 (REINFORCE)

  • 使用梯度上升算法更新参数 θ
  • 使用采样回报值 gtg_t 估计真实回报值

梯度上升:采用梯度上升是因为在策略梯度算法中,要最大化目标函数。
采样回报值的方差很大

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LiImXL6R-1583932365993)(http://monteyang.cn/images/RL-策略梯度-REINFORCE2.png)]

使用 Critic 函数减小方差

REINFORCE中的采样回报值gtg_t 方差很大,
我们可以使用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。

该式中有两部分:

  • 求梯度的部分(∇):控制着策略更新的方向
  • gtg_t 及其变种:控制着策略更新的步长(重要)

Critic 使用了策略评价 (MC 或 TD) 来估计 Qπ(s,a);Aπ(s,a)Q_π(s, a); A_π(s, a)
Vπ(s)V_π(s)

A2C 算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoAklqcI-1583932365998)(http://monteyang.cn/images/RL-策略梯度-A2C.png)]

  1. 通过在当前状态s下,执行动作a,获得奖励r、并到达下一个状态s’,
  2. 此时计算 TD 误差,
  3. 再根据 TD 误差 更新 Critic 和 Actor。

A2C 中为了满足样本独立同分布,常常使用多进程的思路。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!