返回介绍

数学基础

统计学习

深度学习

工具

Scala

1.1 背景:策略优化

发布于 2023-07-17 23:38:23 字数 39719 浏览 0 评论 0 收藏 0

  1. 策略梯度方法:策略梯度方法的工作原理是,计算策略梯度的估计值并应用到随机梯度上升算法中。最常用的梯度估计器的形式是 :

    (1)g^=E^t[θlogπθ(atst)A^t]

    其中:

    • πθ$ \pi_\theta $ 为一个随机策略。
    • A^t=Qπ(st,at)Vπ(st)$ \hat A_t = Q_\pi(s_t,a_t) - V_\pi(s_t) $ 为 timestept$ t $ 时的 advantage function 的一个估计,其中Qπ(s,a)$ Q_\pi(s,a) $ 为动作状态价值函数,Vπ(s)$ V_\pi(s) $ 为状态价值函数。
    • E^t[]$ \hat{\mathbb E}_t[\cdot] $ 为在一个有限的 batch 上样本的经验均值。这里的样本是在一个交替执行采样和优化的算法中获取。

    推导过程:

    定义回报Ut$ U_t $ 为从t$ t $ 时刻开始的所有奖励之和,它依赖于时刻t$ t $ 开始的所有状态和动作:St,At,St+1,At+1,$ S_t,A_t,S_{t+1},A_{t+1},\cdots $ ,这些状态和动作都是随机变量(这里大写字母代表随机变量,小写字母代表对应的观察值)。现在我们观察到t$ t $ 时刻的状态为st$ s_t $ 、动作为at$ a_t $ ,而之后的状态和动作是未知的、随机的,因此Ut$ U_t $ 是随机变量。

    定义动作状态价值函数:Qπ(st,at)=E[UtSt=at,At=at]$ Q_\pi(s_t,a_t) = \mathbb E[U_t\mid S_t=a_t,A_t=a_t] $ ,它是关于(st,at)$ (s_t,a_t) $ 的条件期望。定义状态价值函数:Vπ(st)=EAtπ(st;θ)[Qπ(st,At)]$ V_\pi(s_t) = \mathbb E_{A_t\sim \pi(\cdot\mid s_t;\theta)}[Q_\pi(s_t,A_t)] $ 。

    如果一个策略很好,那么对于所有的状态S$ S $ ,状态价值Vπ(S)$ V_\pi(S) $ 的均值应该相当大。因此定义目标函数:

    (2)J(θ)=ES[Vπ(S)]

    因此策略学习可以描述为最优化问题:

    (3)maxθJ(θ)

    策略梯度为:

    (4)θJ(θ)

    根据:

    (5)Vπ(s)θ=θaAπ(as;θ)×Qπ(s,a)=aA(π(as;θ)×Qπ(s,a))θ=aAπ(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=aAπ(As;θ)×1π(As;θ)×π(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=aAπ(As;θ)×logπ(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=EAπ(s;θ)[logπ(As;θ)θ×Qπ(s,A)]+EAπ(s;θ)[Qπ(s,A)θ]EAπ(s;θ)[logπ(As;θ)θ×Qπ(s,A)]

    因此:

    (6)θJ(θ)=θES[Vπ(S)]=ES[θVπ(S)]ESEA[logπ(AS;θ)θ×Qπ(S,A)]

    为了训练更稳定,我们用 advantage functionA~(S,A)=Qπ(S,A)Vπ(S)$ \tilde A(S,A) = Q_\pi(S,A) - V_\pi(S) $ 来代替Qπ(S,A)$ Q_\pi(S,A) $ ,因此得到:

    (7)θJ(θ)=ES,A[θlogπ(AS;θ)×A~]

    用采样值来估计θJ(θ)$ \nabla_\theta J(\theta) $ ,则得到:

    (8)g^=E^t[θlogπθ(atst)A^t]

    其中A^t$ \hat A_t $ 为A~$ \tilde A $ 的经验估计。

    使用自动微分软件的实现方法是构建一个目标函数,这个目标函数的梯度是策略梯度估计器 policy gradient estimator 。估计器g^$ \hat{\mathbf{\vec g}} $ 是通过对目标函数进行微分得到:

    (9)LPG(θ)=E^t[logπθ(atst)A^t]

    虽然使用相同的轨迹 trajectory 对这个损失函数LPG$ \mathcal L^\text{PG} $ 进行多步优化是很有吸引力的,但这样做的理由并不充分。根据经验,这种优化经常导致破坏性的 large policy update (见实验部分;结果没有显示,但与 "no clipping or penalty"setting 相似或更差)。

  2. Trust Region 方法:在 TRPO 方法中,一个目标函数(即,surrogate objective )被最大化,同时约束了 policy update 的大小。具体而言:

    (10)maxθE^t[πθ(atst)πθold(atst)A^t]subject toE^t[KL[πθold(st),πθ(st)]]δ

    其中:θold$ \theta_\text{old} $ 为更新之前的策略参数,KLKL 距离函数,δ$ \delta $ 为一个正的超参数。

    注意,对于θ$ \theta $ 而言,θold$ \theta_\text{old} $ 就是一个常数,因此maxθE^t[πθ(atst)πθold(atst)A^t]$ \max_\theta \hat{\mathbb E}_t\left[\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\theta_\text{old}}(a_t\mid s_t)}\hat A_t\right] $ 等价于maxθE^t[πθ(atst)A^t]$ \max_\theta \hat{\mathbb E}_t\left[ \pi_\theta(a_t\mid s_t) \hat A_t\right] $ 。从下式可以看出二者区别:

    (11)θlogπθ=θπθπθ,θπθπθold=θπθπθold

    因此,后者在分母上用更新之前的策略参数θold$ \theta_\text{old} $ 来代替πθ$ \pi_\theta $ 。

    在对目标函数进行线性近似、以及对约束进行二次近似之后,这个问题可以有效地使用共轭梯度算法进行近似解决。

    证明 TRPO 的理论实际上建议使用惩罚项而不是约束,也就是说,解决无约束的优化问题:

    (12)maxθE^t[πθ(atst)πθold(atst)A^tβ×KL[πθold(st),πθ(st)]]

    其中β$ \beta $ 为 KL 惩罚项的系数。

    这源于这样一个事实:即某个 surrogate objective (计算状态上的最大 KL 值,即max[KL(,)]$ \max[\text{KL}(\cdot,\cdot)] $ ,而不是平均 KL 值,即Et[KL(,)]$ \mathbb E_t[\text{KL}(\cdot,\cdot)] $ )对策略π$ \pi $ 的性能形成了一个下限(即一个悲观的下界)。

    TRPO 使用硬约束而不是惩罚,因为很难选择一个β$ \beta $ 值从而在不同问题上表现良好;或者甚至很难选择一个β$ \beta $ 值从而在单个问题中表现良好,因为在学习过程中问题的特性会发生变化。因此,为了实现我们一阶算法的目标(即,模仿对 TRPO 的单调改进 monotonic improvement ),实验表明,仅仅选择一个固定的惩罚系数β$ \beta $ 、以及使用 SGD 优化这个无约束优化问题的目标函数是不够的,还需要进行额外的修改。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文