深度强化学习(王树森)笔记11

news/2024/5/18 23:06:18 标签: 强化学习

深度强化学习(DRL)

本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。

参考链接

Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL

源代码链接:https://github.com/DeepRLChinese/DeepRL-Chinese

B站视频:【王树森】深度强化学习(DRL)

豆瓣: 深度强化学习

文章目录

  • 深度强化学习(DRL)
  • 策略学习高级技巧
    • Trust Region Policy Optimization (TRPO)
      • 置信域方法
      • 策略学习
      • TRPO 数学推导
      • 训练流程
    • 后记

策略学习的高级技巧:置信域策略优化 (TRPO)

PPO算法就是在TRPO的基础上推出的。

策略学习高级技巧

本章介绍策略学习的高级技巧。介绍置信域策略优化 (TRPO), 它是一种策略学习方法,可以代替策略梯度方法。

Trust Region Policy Optimization (TRPO)

置信域策略优化 (trust region policy optimization, TRPO) 是一种策略学习方法,跟以前学的策略梯度有很多相似之处。跟策略梯度方法相比,TRPO 有两个优势:第一,TRPO 表现更稳定,收敛曲线不会剧烈波动,而且对学习率不敏感;第二,TRPO 用更少的经验(即智能体收集到的状态、动作、奖励) 就能达到与策略梯度方法相同的表现。

学习TRPO 的关键在于理解置信域方法(trustregion methods)。置信域方法不是TRPO 的论文提出的,而是数值最优化领域中一类经典的算法,历史至少可以追溯到 1970 年。TRPO 论文的贡献在于巧妙地把置信域方法应用到强化学习中,取得非常好的效果。

置信域方法

有这样一个优化问题: max ⁡ θ J ( θ ) \max_{\boldsymbol{\theta}}J(\boldsymbol{\theta}) maxθJ(θ)。这里的 J ( θ ) J(\boldsymbol{\theta}) J(θ) 是目标函数, θ \theta θ 是优化变量。求解这个优化问题的目的是找到一个变量 θ \theta θ 使得目标函数 J ( θ ) J(\theta) J(θ) 取得最大值。有各种各样的优化算法用于解决这个问题。几乎所有的数值优化算法都是做这样的迭代:

θ n e w ← U p d a t e ( Data;  θ n o w ) . \begin{array}{rcl}\theta_\mathrm{new}&\leftarrow&\mathrm{Update}\left(\text{Data; }\theta_\mathrm{now}\right).\end{array} θnewUpdate(Data; θnow).

此处的 θ n o w \theta_\mathrm{now} θnow θ n e w \theta_\mathrm{new} θnew 分别是优化变量当前的值和新的值。不同算法的区别在于具体怎么样利用数据更新优化变量。

置信域方法用到一个概念——置信域。下面介绍置信域。给定变量当前的值 θ n o w \theta_\mathrm{now} θnow,用 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow) 表示 θ n o w \theta_\mathrm{now} θnow 的一个邻域。举个例子:

N ( θ n o w )   =   { θ   ∣   ∥ θ − θ n o w ∥ 2 ≤ Δ } . ( 9.1 ) \mathcal{N}(\theta_{\mathrm{now}})\:=\:\Big\{\theta\:\Big|\:\left\|\theta-\theta_{\mathrm{now}}\right\|_{2}\leq\Delta\Big\}.\quad(9.1) N(θnow)={θ θθnow2Δ}.(9.1)
这个例子中,集合 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow) 是以 θ n o w \theta_\mathrm{now} θnow 为球心、 以 Δ \Delta Δ为半径的球;见右图。球中的点都足够接近 θ n o w \theta_\mathrm{now} θnow

在这里插入图片描述

置信域方法需要构造一个函数 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow),这个函数要满足这个条件:

L ( θ ∣ θ n o w )  很接近  J ( θ ) , ∀ θ ∈ N ( θ n o w ) , L(\boldsymbol{\theta}\mid\boldsymbol{\theta_\mathrm{now}})\text{ 很接近 }J(\boldsymbol{\theta}),\quad\forall\boldsymbol{\theta}\in\mathcal{N}(\boldsymbol{\theta_\mathrm{now}}), L(θθnow) 很接近 J(θ),θN(θnow),

那么集合 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow)就被称作置信域。顾名思义,在 θ n o w \theta_\mathrm{now} θnow的邻域上,我们可以信任 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow), 可以拿 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow) 来替代目标函数 J ( θ ) J(\theta) J(θ)

图 9.2 用一个一元函数的例子解释 J ( θ ) J(\theta) J(θ) L ( θ ∣ θ n o w ) L(\theta\mid\theta_\mathrm{now}) L(θθnow) 的关系。图中横轴是优化变量 θ \theta θ,纵轴是函数值。如图 9.2(a)所示,函数 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow) 未必在整个定义域上都接近 J ( θ ) J(\theta) J(θ),而只是在 θ n o w \theta_\mathrm{now} θnow的领域里接近 J ( θ ) J(\theta) J(θ) θ n o w \theta_\mathrm{now} θnow 的邻域就叫做置信域。

在这里插入图片描述

通常来说, J J J是个很复杂的函数,我们甚至可能不知道 J J J 的解析表达式(比如 J J J 是某个函数的期望)。而我们人为构造出的函数 L L L 相对较为简单,比如 L L L J J J 的蒙特卡洛近似,或者是 J J J θ n o w \theta_\mathrm{now} θnow这个点的二阶泰勒展开。既然可以信任 L L L,那么不妨用 L L L 代替复杂的函数 J J J,然后对 L L L做最大化。这样比直接优化 J J J 要容易得多。这就是置信域方法的思想。

具体来说,置信域方法做下面这两个步骤,一直重复下去,当无法让 J J J 的值增大的时候终止算法。

第一步——做近似:给定 θ n o w \theta_\mathrm{now} θnow,构造函数 L ( θ ∣ θ n ε w ) L(\theta\mid\theta_{n\varepsilon w}) L(θθnεw),使得对于所有的 θ ∈ N ( θ n o w ) \theta\in \mathcal{N} ( \theta_\mathrm{now}) θN(θnow),函数值 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow) J ( θ ) J(\theta) J(θ) 足够接近。图9.2(b) 解释了做近似这一步。

第二步一一最大化:在置信域 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow) 中寻找变量 θ \theta θ 的值, 使得函数 L L L 的值最大化。把找到的值记作

θ n e w   =   a r g m a x ⁡ θ ∈ N ( θ n o w )   L ( θ ∣ θ n o w )   . \theta_{\mathrm{new}}\:=\:\underset{\theta\in\mathcal{N}(\theta_{\mathrm{now}})}{\operatorname*{\mathrm{argmax}}}\:L(\boldsymbol{\theta}\mid\boldsymbol{\theta_{\mathrm{now}}})\:. θnew=θN(θnow)argmaxL(θθnow).

图 9.2( c) 解释了最大化这一步。

置信域方法其实是一类算法框架,而非一个具体的算法。有很多种方式实现实现置信域方法。第一步需要做近似,而做近似的方法有多种多样,比如蒙特卡洛、二阶泰勒展开。第二步需要解一个带约束的最大化问题;求解这个问题又需要单独的数值优化算法,比如梯度投影算法、拉格朗日法。除此之外,置信域 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow) 也有多种多样的选择, 既可以是球,也可以是两个概率分布的 KL 散度 (KL Divergence)。

ChatGPT对梯度投影算法的介绍

梯度投影算法的基本步骤可以通过数学公式进行介绍。考虑带有约束的优化问题:

m i n x f ( x ) min_{x} f(x) minxf(x)

其中 (f(x)) 是目标函数,(x) 是优化变量,同时满足一组约束条件:

g i ( x ) ≤ 0 , i = 1 , 2 , … , m g_i(x) \leq 0, \quad i = 1, 2, \ldots, m gi(x)0,i=1,2,,m

梯度投影算法的迭代过程如下:

  1. 初始化: 选择初始解 ( x 0 x_0 x0),设置学习率 ( α \alpha α) 和停止准则。

  2. 梯度计算: 计算目标函数在当前解 ( x k x_k xk) 处的梯度 ( ∇ f ( x k ) \nabla f(x_k) f(xk))。

  3. 梯度投影: 将梯度投影到满足约束条件的空间中。假设投影操作为 (P(x)),则更新方向为 ( Δ x k = P ( x k − α ∇ f ( x k ) ) − x k \Delta x_k = P(x_k - \alpha \nabla f(x_k)) - x_k Δxk=P(xkαf(xk))xk)。

  4. 更新变量: 使用投影后的梯度信息来更新变量 ( x k x_k xk):

x k + 1 = x k + α Δ x k x_{k+1} = x_k + \alpha \Delta x_k xk+1=xk+αΔxk

  1. 收敛判断: 判断算法是否达到停止条件,例如目标函数的变化足够小或者达到预定的迭代次数。

在这里,梯度投影的关键在于投影操作 (P(x)) 的定义。具体的投影形式取决于约束条件的性质。例如,对于线性约束 ( g i ( x ) ≤ 0 g_i(x) \leq 0 gi(x)0),投影操作可以表示为 ( P ( x ) = max ⁡ ( 0 , g i ( x ) ) P(x) = \max(0, g_i(x)) P(x)=max(0,gi(x)))。对于更一般的非线性约束,可能需要使用专门的数学工具或算法来进行梯度投影。

需要注意的是,实际应用中可能需要根据具体问题对算法进行调整和定制。

策略学习

首先复习策略学习的基础知识。策略网络记作 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ), 它是个概率质量函数。动作价值函数记作 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a),它是回报的期望。状态价值函数记作

V π ( s )   =   E A ∼ π ( ⋅ ∣ s ; θ ) [ Q π ( s , A ) ]   =   ∑ a ∈ A π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) . ( 9.2 ) V_{\pi}(s)\:=\:\mathbb{E}_{A\sim\pi(\cdot|s;\theta)}\big[Q_{\pi}(s,A)\big]\:=\:\sum_{a\in\mathcal{A}}\pi(a|s;\boldsymbol{\theta})\cdot Q_{\pi}(s,a). \quad(9.2) Vπ(s)=EAπ(s;θ)[Qπ(s,A)]=aAπ(as;θ)Qπ(s,a).(9.2)

注意, V π ( s ) V_{\pi}(s) Vπ(s) 依赖于策略网络 π, 所以依赖于 π \pi π 的参数 θ \theta θ。策略学习的目标函数是

J ( θ ) = E S [ V π ( S ) ] . ( 9.3 ) J(\boldsymbol{\theta})=\mathbb{E}_{S}\big[V_{\pi}(S)\big].\quad(9.3) J(θ)=ES[Vπ(S)].(9.3)

J ( θ ) J(\theta) J(θ) 只依赖于 θ \theta θ,不依赖于状态 S S S 和动作 A A A。前面介绍的策略梯度方法 (包括 REINFORCE 和 Actor-Critic) 用蒙特卡洛近似梯度 ∇ θ J ( θ ) \nabla_{\theta}J(\theta) θJ(θ), 得到随机梯度,然后做随机梯度上升更新 θ \theta θ,使得目标函数 J ( θ ) J(\theta) J(θ) 增大。

下面我们要把目标函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) 变换成一种等价形式。从等式(9.2)出发,把状态价值写成

V π ( s ) =   ∑ a ∈ A π ( a ∣   s ;   θ n o w )   ⋅   π ( a   ∣   s ;   θ ) π ( a   ∣ s ;   θ n o w )   ⋅   Q π ( s , a ) = E A ∼ π ( ⋅ ∣ s ; θ n o w ) [   π ( A   ∣   s ;   θ ) π ( A   ∣   s ;   θ n o w )   ⋅   Q π ( s , A )   ] . ( 9.4 ) \begin{gathered} V_{\pi}(s) =\:\sum_{a\in\mathcal{A}}\pi\big(a\big|\:s;\:\theta_{\mathrm{now}}\big)\:\cdot\:\frac{\pi(a\:|\:s;\:\boldsymbol{\theta})}{\pi(a\:|s;\:\boldsymbol{\theta}_{\mathrm{now}})}\:\cdot\:Q_{\pi}(s,a) \\ =\quad\mathbb{E}_{A\sim\pi(\cdot|s;\theta_{\mathrm{now}})}\bigg[\:\frac{\pi(A\:|\:s;\:\boldsymbol{\theta})}{\pi(A\:|\:s;\:\boldsymbol{\theta}_{\mathrm{now}})}\:\cdot\:Q_{\pi}(s,A)\:\bigg]. \end{gathered}\quad(9.4) Vπ(s)=aAπ(a s;θnow)π(as;θnow)π(as;θ)Qπ(s,a)=EAπ(s;θnow)[π(As;θnow)π(As;θ)Qπ(s,A)].(9.4)
第一个等式很显然,因为连加中的第一项可以消掉第二项的分母。第二个等式把策略网络 π ( A ∣ s ; θ n o w ) \pi(A|s;\boldsymbol{\theta}_\mathrm{now}) π(As;θnow) 看做动作 A A A 的概率质量函数,所以可以把连加写成期望。由公式 (9.3) 与(9.4) 可得定理 9.1。定理 9.1 是 TRPO 的关键所在,甚至可以说 TRPO 就是从这个公式推出的。

在这里插入图片描述

定理 9.1. 目标函数的等价形式目标函数 J ( θ ) J(\theta) J(θ)可以等价写成:

J ( θ )   =   E S [ E A ∼ π ( ⋅ ∣ S , θ n o w ) [ π ( A   ∣   S ;   θ ) π ( A   ∣   S ;   θ n o w )   ⋅   Q π ( S , A ) ] ] . J(\boldsymbol{\theta})\:=\:\mathbb{E}_{S}\bigg[\mathbb{E}_{A\sim\pi(\cdot|S,\boldsymbol{\theta}_{\mathrm{now}})}\bigg[\frac{\pi(A\:|\:S;\:\boldsymbol{\theta})}{\pi(A\:|\:S;\:\boldsymbol{\theta}_{\mathrm{now}})}\:\cdot\:Q_{\pi}(S,A)\bigg]\bigg]. J(θ)=ES[EAπ(S,θnow)[π(AS;θnow)π(AS;θ)Qπ(S,A)]].

上面 Q π Q_\pi Qπ 中的 π \pi π 指的是 π ( A ∣ S ; θ ) \pi(A|S;\boldsymbol{\theta}) π(AS;θ)

公式中的期望是关于状态 S S S 和动作 A A A 求的。状态 S S S 的概率密度函数只有环境知道, 而我们并不知道,但是我们可以从环境中获取 S S S 的观测值。动作 A A A 的概率质量函数是策略网络 π ( A ∣ S ; θ n o w ) \pi(A|S;\theta_\mathrm{now}) π(AS;θnow); 注意,策略网络的参数是旧的值 θ n o w \theta_\mathrm{now} θnow.

TRPO 数学推导

前面介绍了数值优化的基础和价值学习的基础,终于可以开始推导 TRPO。TRPO 是置信域方法在策略学习中的应用,所以 TRPO 也遵循置信域方法的框架,重复做近似和最大化这两个步骤,直到算法收敛。收敛指的是无法增大目标函数 J ( θ ) J(\theta) J(θ) , 即无法增大期望回报。

第一步——做近似

我们从定理 9.1 出发。定理把目标函数 J ( θ ) J(\theta) J(θ) 写成了期望的形式。我们无法直接算出期望,无法得到 J ( θ ) J(\theta) J(θ) 的解析表达式;原因在于只有环境知道状态 S S S 的概率密度函数,而我们不知道。我们可以对期望做蒙特卡洛近似,从而把函数 J J J 近似成函数 L L L。用策略网络 π ( A ∣ S ; θ n o w ) \pi(A|S;\theta_\mathrm{now}) π(AS;θnow) 控制智能体跟环境交互,从头到尾玩完一局游戏观测到一条轨迹:

s 1 ,   a 1 ,   r 1 ,   s 2 ,   a 2 ,   r 2 ,   ⋯   ,   s n ,   a n ,   r n . s_1,\:a_1,\:r_1,\:s_2,\:a_2,\:r_2,\:\cdots,\:s_n,\:a_n,\:r_n. s1,a1,r1,s2,a2,r2,,sn,an,rn.

其中的状态 { s t } t = 1 n \{s_t\}_{t=1}^n {st}t=1n 都是从环境中观测到的,其中的动作 { a t } t = 1 n \{a_t\}_{t=1}^n {at}t=1n 都是根据策略网络 π ( ⋅ ∣ s t ; θ n o w ) \pi(\cdot|s_t;\theta_\mathrm{now}) π(st;θnow) 抽取的样本。所以,

π ( a t ∣ s t ; θ ) π ( a t ∣ s t ; θ n o w ) ⋅ Q π ( s t , a t ) ( 9.5 ) \frac{\pi(a_t\mid s_t;\boldsymbol{\theta})}{\pi(a_t\mid s_t;\boldsymbol{\theta_\mathrm{now}})}\cdot Q_\pi(s_t,a_t) \quad(9.5) π(atst;θnow)π(atst;θ)Qπ(st,at)(9.5)

是对定理 9.1 中期望的无偏估计。我们观测到了 n n n 组状态和动作,于是应该对公式 (9.5) 求平均,把得到均值记作:

L ( θ   ∣   θ n o w )   =   1 n ∑ t = 1 n π ( a t   ∣   s t ; θ ) π ( a t   ∣   s t ;   θ n o w   )   ⋅   Q π ( s t , a t ) ⏟ 定理 9.1 中期望的无偏估计   . ( 9.6 ) L(\boldsymbol{\theta}\:|\:\boldsymbol{\theta_\mathrm{now}})\:=\:\frac{1}{n}\sum_{t=1}^{n}\underbrace{\frac{\pi(a_{t}\:|\:s_{t};\boldsymbol{\theta})}{\pi(a_{t}\:|\:s_{t};\:\boldsymbol{\theta_\mathrm{now}}\:)}\:\cdot\:Q_{\pi}\left(s_{t},a_{t}\right)}_{定理 9.1 中期望的无偏估计}\:.\quad(9.6) L(θθnow)=n1t=1n定理9.1中期望的无偏估计 π(atst;θnow)π(atst;θ)Qπ(st,at).(9.6)

既然连加里每一项都是期望的无偏估计,那么 n n n 项的均值 L L L 也是无偏估计。所以可以拿 L L L作为目标函数 J J J 的蒙特卡洛近似。

公式(9.6) 中的 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow) 是对目标函数 J ( θ ) J(\theta) J(θ) 的近似。可惜我们还无法直接对 L L L 求最大化,原因是我们不知道动作价值 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)。解决方法是做两次近似:

Q π ( s t , a t ) ⟹ Q π o l d ( s t , a t ) ⟹ u t . Q_{\pi}(s_{t},a_{t})\quad\Longrightarrow\quad Q_{\pi_{\mathrm{old}}}(s_{t},a_{t})\quad\Longrightarrow\quad u_{t}. Qπ(st,at)Qπold(st,at)ut.

公式中 Q π Q_\pi Qπ 中的策略是 π ( a t ∣ s t ; θ ) \pi(a_t\mid s_t;\boldsymbol{\theta}) π(atst;θ), 而 Q π o l d Q_\mathrm{\pi_\mathrm{old}} Qπold 中的策略则是旧策略 π ( a t ∣ s t ; θ n o w ) \pi(a_t\mid s_t;\boldsymbol{\theta_\mathrm{now}}) π(atst;θnow)。我们用旧策略 π ( a t ∣ s t ; θ n o w ) \pi(a_t\mid s_t;\theta_\mathrm{now}) π(atst;θnow)生成轨迹 { ( s j , a j , r j , s j + 1 ) } j = 1 n \{(s_j,a_j,r_j,s_{j+1})\}_{j=1}^n {(sj,aj,rj,sj+1)}j=1n。所以折扣回报

u t   =   r t + γ ⋅ r t + 1 + γ 2 ⋅ r t + 2 + ⋯ + γ n − t ⋅ r n u_{t}\:=\:r_{t}+\gamma\cdot r_{t+1}+\gamma^{2}\cdot r_{t+2}+\cdots+\gamma^{n-t}\cdot r_{n} ut=rt+γrt+1+γ2rt+2++γntrn

是对 Q π o l d Q_\mathrm{\pi_\mathrm{old}} Qπold 的近似,而未必是对 Q π Q_\mathrm{\pi} Qπ 的近似。仅当 θ \theta θ接近 θ r o w \theta_\mathrm{row} θrow 的时候, u t u_t ut 才是 Q π Q_\pi Qπ 的有效近似。这就是为什么要强调置信域,即 θ \theta θ θ n o w \theta_\mathrm{now} θnow的邻域中。

u t u_t ut 替代 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at),那么公式(9.6) 中的 L ( θ ∣ θ n o w ) L(\theta|\theta_\mathrm{now}) L(θθnow) 变成了

L ~ ( θ ∣ θ n o w ) = 1 n ∑ t = 1 n π ( a t ∣ s t ; θ ) π ( a t ∣ s t ; θ n o w ) ⋅ u t . ( 9.7 ) \boxed{\quad\tilde{L}(\boldsymbol{\theta}\mid\boldsymbol{\theta}_{\mathrm{now}})=\frac1n\sum_{t=1}^n\frac{\pi(a_t\mid s_t;\boldsymbol{\theta})}{\pi(a_t\mid s_t;\boldsymbol{\theta}_{\mathrm{now}})}\cdot u_t.}\quad(9.7) L~(θθnow)=n1t=1nπ(atst;θnow)π(atst;θ)ut.(9.7)

总结一下,我们把目标函数 J J J 近似成 L L L,然后又把 L L L 近似成 L ~ \tilde{L} L~。在第二步近似中,我们需要假设 θ \theta θ 接近 θ n o w \theta_\mathrm{now} θnow

第二步——最大化

TRPO 把公式 (9.7) 中的 L ~ ( θ ∣ θ n o w ) \tilde{L}(\theta|\theta_\mathrm{now}) L~(θθnow) 作为对目标函数 J ( θ ) J(\theta) J(θ) 的近似,然后求解这个带约束的最大化问题:

max ⁡ θ L ~ ( θ ∣ θ n o w ) ; s . t .   θ ∈ N ( θ n o w ) . ( 9.8 ) \boxed{\max_{\theta}\tilde{L}\left(\boldsymbol{\theta}\mid\boldsymbol{\theta}_{\mathrm{now}}\right);\quad\mathrm{s.t.~}\boldsymbol{\theta}\in\mathcal{N}(\boldsymbol{\theta}_{\mathrm{now}}).}\quad(9.8) θmaxL~(θθnow);s.t. θN(θnow).(9.8)

公式中的 N ( θ n o w ) \mathcal{N} ( \theta_\mathrm{now}) N(θnow) 是置信域,即 θ n o w \theta_\mathrm{now} θnow的一个邻域。该用什么样的置信域呢?

  • 一种方法是用以 θ n o w \theta_\mathrm{now} θnow为球心、以 Δ \Delta Δ为半径的球作为置信域。这样的话,公式(9.8)就变成

max ⁡ θ   L ~ ( θ   ∣   θ n o w ) ; s.t.   ∥ θ − θ n o w ∥ 2 ≤ Δ . ( 9.9 ) \max_{\boldsymbol{\theta}}\:\tilde{L}(\boldsymbol{\theta}\:|\:\boldsymbol{\theta}_{\mathrm{now}});\quad\text{s.t.}\:\left\|\boldsymbol{\theta}-\boldsymbol{\theta}_{\mathrm{now}}\right\|_2\leq\Delta.\quad(9.9) θmaxL~(θθnow);s.t.θθnow2Δ.(9.9)

  • 另一种方法是用 KL 散度衡量两个概率质量函数—— π ( ⋅ ∣ s i ; θ n o w ) \pi(\cdot|s_i;\theta_\mathrm{now}) π(si;θnow) π ( ⋅ ∣ s i ; θ ) \pi(\cdot|s_i;\theta) π(si;θ)—— 的距离。两个概率质量函数区别越大,它们的 KL 散度就越大。反之,如果 θ \theta θ 很接近 θ n o w \theta_\mathrm{now} θnow,那么两个概率质量函数就越接近。用 KL 散度的话,公式(9.8)就变成

max ⁡ θ L ~ ( θ ∣ θ n o w ) ; s . t .   1 t ∑ i = 1 t   KL [   π (   ⋅   ∣   s i ;   θ n o w )   ∥   π (   ⋅   ∣   s i ;   θ )   ]   ≤   Δ . ( 9.10 ) \max_{\boldsymbol{\theta}}\tilde{L}\left(\boldsymbol{\theta}\mid\boldsymbol{\theta}_{\mathrm{now}}\right);\quad\mathrm{s.t.}\:\frac{1}{t}\sum_{i=1}^{t}\:\text{KL}\Big[\:\pi\big(\:\cdot\:\big|\:s_{i};\:\boldsymbol{\theta}_{\mathrm{now}}\big)\:\big\Vert\:\pi\big(\:\cdot\:\big|\:s_{i};\:\boldsymbol{\theta}\big)\:\Big]\:\le\:\Delta. \quad(9.10) θmaxL~(θθnow);s.t.t1i=1tKL[π( si;θnow) π( si;θ)]Δ.(9.10)

用球作为置信域的好处是置信域是简单的形状,求解最大化问题比较容易,但是用球做置信域的实际效果不如用 KL 散度。

TRPO 的第二步—最大化——需要求解带约束的最大化问题(9.9) 或者 (9.10)。注意,这种问题的求解并不容易;简单的梯度上升算法并不能解带约束的最大化问题。数值优化教材通常有介绍带约束问题的求解,有兴趣的话自己去阅读数值优化教材,这里就不详细解释如何求解问题 (9.9) 或者 (9.10)。读者可以这样看待优化问题:只要你能把一个优化问题的目标函数和约束条件解析地写出来,通常会有数值算法能解决这个问题。

训练流程

在本节的最后,我们总结一下用 TRPO 训练策略网络的流程。TRPO 需要重复做近似和最大化这两个步骤:

  1. 做近似——构造函数 L ~ \tilde{L} L~ 近似目标函数 J ( θ ) : J(\theta): J(θ):

(a). 设当前策略网络参数是 θ n o w \theta_\mathrm{now} θnow。用策略网络 π ( a ∣ s ; θ n o w ) \pi(a\mid s;\theta_\mathrm{now}) π(as;θnow) 控制智能体与环境交互,玩完一局游戏,记录下轨迹:

s 1 ,   a 1 ,   r 1 ,   s 2 ,   a 2 ,   r 2 ,   ⋯   ,   s n ,   a n ,   r n . s_{1},\:a_{1},\:r_{1},\:s_{2},\:a_{2},\:r_{2},\:\cdots,\:s_{n},\:a_{n},\:r_{n}. s1,a1,r1,s2,a2,r2,,sn,an,rn.

​(b). 对于所有的 t = 1 , ⋯   , n t=1,\cdots,n t=1,,n, 计算折扣回报 u t = ∑ k = t n γ k − t ⋅ r k u_t=\sum_{k=t}^n\gamma^{k-t}\cdot r_k ut=k=tnγktrk.
​(c ). 得出近似函数:
L ~ ( θ   ∣   θ n o w )   =   1 n ∑ t = 1 n π ( a t   ∣   s t ;   θ ) π ( a t   ∣   s t ; θ n o w )   ⋅   u t . \tilde{L}\left(\boldsymbol{\theta}\:|\:\boldsymbol{\theta}_{\mathrm{now}}\right)\:=\:\frac{1}{n}\sum_{t=1}^{n}\frac{\pi(a_{t}\:|\:s_{t};\:\boldsymbol{\theta})}{\pi(a_{t}\:|\:s_{t};\boldsymbol{\theta}_{\mathrm{now}})}\:\cdot\:u_{t}. L~(θθnow)=n1t=1nπ(atst;θnow)π(atst;θ)ut.

  1. 最大化——用某种数值算法求解带约束的最大化问题:

θ n e w   =   a r g m a x   L ~ ( θ   ∣   θ n o w ) ; s . t .   ∥ θ − θ n o w ∥ 2   ≤   Δ . \theta_{\mathrm{new}}\:=\:\mathrm{argmax}\:\tilde{L}(\boldsymbol{\theta}\:|\:\theta_{\mathrm{now}});\quad\mathrm{s.t.}\:\left\|\theta-\theta_{\mathrm{now}}\right\|_{2}\:\leq\:\Delta. θnew=argmaxL~(θθnow);s.t.θθnow2Δ.

​ 此处的约束条件是二范数距离。可以把它替换成 KL 散度,即公式 (9.10)。

TRPO 中有两个需要调的超参数:一个是置信域的半径 Δ \Delta Δ, 另一个是求解最大化问题的数值算法的学习率。通常来说, Δ \Delta Δ 在算法的运行过程中要逐渐缩小。虽然 TRPO 需要调参,但是 TRPO 对超参数的设置并不敏感。即使超参数设置不够好,TRPO 的表现也不会太差。相比之下,策略梯度算法对超参数更敏感。

TRPO 算法真正实现起来并不容易,主要难点在于第二步一一最大化。不建议读者自己去实现 TRPO。

后记

截至2024年1月30日16点52分,完成王树森的深度强化学习视频课程。后面的多智能体部分听完了两节课,但是没有做相应的笔记。

回顾这几天的学习:2024年1月25日晚上闲来无事确定学习王树森的这门课,2024年1月26日正式开始学习,截至2024年1月30日,总共花费5天时间学习深度强化学习。形成了系列笔记。

后续可能会跟进动手学强化学习这门课。

2024年1月31日坐高铁回家过年,在回家之前完成了自己设定的计划——学习完王树森的《深度强化学习》。看到TODO list上又完成了一件事,整个人还是比较开心的。

2024春节快乐。


http://www.niftyadmin.cn/n/5357261.html

相关文章

合并K个有序链表----链表OJ

https://leetcode.cn/problems/merge-k-sorted-lists/submissions/499384099/?envTypestudy-plan-v2&envIdtop-100-liked 1、两两合并 前面我们做过合并两个有序链表,那么这里合并K个有序链表,是否可以联想到合并两个呢?答案是可以的&am…

vue中nextTick()

在 Vue.js 中&#xff0c;nextTick() 是一个非常有用的方法&#xff0c;用于在下一个 DOM 更新循环结束后执行延迟回调。这在你需要读取或写入刚刚更新的 DOM 时非常有用。 下面是一个简单的示例代码&#xff0c;用于解析 nextTick() 的用法&#xff1a; <template> &…

SolidWorks基本应用

SolidWorks初始配置 新建零件&#xff0c;快捷键【Ctrl n】 保存零件&#xff0c;最好是新建一个【桌面小屏幕】文件夹&#xff0c;进行保存。 屏幕工程图&#xff1a; 建模&#xff1a; 单击功能栏的【草图栏】&#xff0c;然后点击【草图绘制】&#xff0c;草图绘制前…

Cocos creator 动作系统

动作系统简介 是用于控制物体运动的一套系统&#xff0c;完全依赖代码进行实现&#xff0c;动态调节节点的移动。 移动 cc.moveTo 移动到某个坐标&#xff08;x,y&#xff09; //1秒时间内&#xff0c;移动到0,0let action1 cc.moveTo(1,0,0)this.node.runAction(action1)c…

Pandas进阶--map映射,分组聚合和透视pivot_table详解

文章目录 1.Pandas的map映射&#xff08;1&#xff09;映射&#xff08;2&#xff09;map充当运算工具 2.数据分组和透视&#xff08;1&#xff09;分组统计 - groupby功能 是pandas最重要的功能&#xff08;2&#xff09;聚合agg 3.透视表pivot_table&#xff08;1&#xff09…

2024美赛数学建模C题思路+代码

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…

幻兽帕鲁服务器一键部署保姆教程

在帕鲁的世界&#xff0c;你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活&#xff0c;也可以为你在工厂工作。你也可以将它们进行售卖&#xff0c;或肢解后食用。 想要部署属于自…

产品原型图设计规范大全

目前&#xff0c;市场上许多产品经理或设计师都在使用一些优秀的原型设计规范&#xff0c;这些规范几乎涵盖了原型设计的许多方面。一套好的、完整的原型设计规范可以统一产品设计风格&#xff0c;检验产品的可用性&#xff0c;有效提高产品经理绘制原型图的效率&#xff0c;更…