[强化学习三]基于值函数和基于策略的学习方法

笔记参考链接https://nndl.github.io/的14章内容

4.2 基于值函数的学习方法

值函数是对策略 π \pi π的评估,如果策略 π \pi π有限,即状态数和动作数都有限,可以对所有的策略进行评估并选出最优策略 π ∗ \pi^* π
∀ s , π ∗ = arg ⁡ max ⁡ π V π ( s ) \forall s,\pi^{*}=\underset{\pi}{\arg \max } V^{\pi}(s) s,π=πargmaxVπ(s)
但这种方式在实践中很难实现,一种可行的方式是通过迭代的方法不断优化策略,直到选出最优策略。对于一个策略 π ( a ∣ s ) \pi(a|s) π(as),其 Q Q Q函数为 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a),我们可以设置一个新的策略 π ′ ( a ∣ s ) \pi'(a|s) π(as),

π ’ ( a ∣ s ) = { 1  if  a = arg ⁡ max ⁡ a Q π ( s , a ^ ) 0  otherwise  \pi’(a|s)= \left\{\begin{array}{ll} 1 & \text { if } a=\underset {a}{\arg \max } Q^{\pi}(s, \hat{a}) \\ 0 & \text { otherwise } \end{array}\right. π(as)={10 if a=aargmaxQπ(s,a^) otherwise 
π ’ ( a ∣ s ) \pi’(a|s) π(as)是一个确定性的策略,也可以直接写为:
π ’ ( a ∣ s ) = arg ⁡ max ⁡ a Q π ( s , a ) \pi’(a|s)=\underset {a}{\arg \max } Q^{\pi}(s, {a}) π(as)=aargmaxQπ(s,a)
如果执行 π ′ \pi' π,会有
∀ s , V π ′ ( s ) ≥ V π ( s ) \forall s,V^{\pi'}(s)\ge V^{\pi}(s) s,Vπ(s)Vπ(s)

这是因为V值是Q值的期望,如果找使得每一个Q值都是最大的策略,就可以让该策略下的任意V值都是比之前策略要好的。

因此,我们可以通过下面方式来学习最优策略:先随机初始化一个策略,计算该策略的值函数,并根据值函数来设置新的策略,然后一直反复迭代直到收敛。

基于值函数的策略最关键的是如何计算策略 π \pi π的值函数,一般有动态规划蒙特卡洛两种计算方式.

4.2.1 动态规划算法-Model-based

从贝尔曼方程可知,如果直到马尔可夫决策过程中的,状态转移概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)和奖励 r ( s , a , s ′ ) r(s,a,s') r(s,a,s),我们直接可以通过贝尔曼方程来计算其值函数,这种模型已知的强化学习算法也称为基于模型的强化学习,模型指的是马尔可夫决策过程。

在模型已知时,可以通过动态规划的方法来计算,常用的方法主要有策略迭代算法和值迭代算法。

4.2.1.1 策略迭代算法

策略迭代算法,每次迭代可以分为两步:

  • 策略评估:计算当前策略下每个状态的值函数(3-6步)。策略评估可以根据贝尔曼方程进行迭代计算 V π ( s ) V^\pi(s) Vπ(s).
  • 策略改进:根据值函数来更新策略(7-8步)

收敛是因为折扣系数使得最后V值不变了(或者在很小的误差之内)

14.18   V π ( s ) = E a ∼ π ( a ∣ s ) E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ’ ) ] 14.18\ V^{\pi}(s)=E_{a\sim \pi(a|s)}E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s’)] 14.18 Vπ(s)=Eaπ(as)Esp(ss,a)[r(s,a,s)+γVπ(s)]

14.19   Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] 14.19\ Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s')] 14.19 Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γVπ(s)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZWGdZmzY-1611490025582)(C:\Users\孙昊一\OneDrive\markdown\隐马尔可夫模型.assets\image-20210121125955862.png)]

4.2.1.2 值迭代算法

策略迭代算法中的策略评估和策略改进是交替轮流进行,其中策略评估也是通过一个内部迭代来进行计算,其中策略评估也是通过一个内部迭代来进行计算,其计算量比较大,事实上,我们不需要每次计算出策略对应的精确的值函数,也就是说,内部迭代不需要执行到完全收敛

值迭代算法将策略评估和策略改进两个过程合并,来直接计算出最优策略。其最优策略 π ∗ \pi^* π对应的函数为最优值函数,其中包括最优状态值函数 V ∗ ( s ) V^*(s) V(s)最优状态-动作值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),它们之间的关系为:
V ∗ ( s ) = m a x a Q ∗ ( s , a ) V^*(s)=\underset{a}{max}Q^*(s,a) V(s)=amaxQ(s,a)
根据贝尔曼方程,我们可以通过迭代的方式来计算最优状态值函数 V ∗ ( s ) V^*(s) V(s)最优状态-动作值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)
V ∗ ( s ) = E a ∼ π ( a ∣ s ) E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V ∗ ( s ’ ) ] V^{*}(s)=E_{a\sim \pi(a|s)}E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{*}(s’)] V(s)=Eaπ(as)Esp(ss,a)[r(s,a,s)+γV(s)]

Q ∗ ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ E a ′ ∼ π ( a ′ ∣ s ′ ) Q ∗ ( s ′ , a ′ ) ] Q^{*}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma E_{a'\sim \pi(a'|s')}Q^{*}(s',a')] Q(s,a)=Esp(ss,a)[r(s,a,s)+γEaπ(as)Q(s,a)]

这两个公式称为贝尔曼最优方程

值迭代算法通过直接优化贝尔曼最优方程,迭代计算最优值函数,值迭代算法如图所示。

14.19   Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] 14.19\ Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s')] 14.19 Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γVπ(s)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkuXrAEE-1611490025594)(C:\Users\孙昊一\OneDrive\markdown\隐马尔可夫模型.assets\image-20210121131959139.png)]

策略迭代值迭代
复杂度与迭代次数时间复杂度比策略迭代小,但迭代次数比策略迭代多
更新值函数根据贝尔曼方程更新值函数,并根据当前的值函数来改进策略直接使用贝尔曼最优方程来更新值函数,收敛时的值函数就是最优的值函数,其对应的策略也就是最优的策略

策略迭代算法需要策略评估和改进两个步骤,而值迭代通过最优方程收敛的结果直接就是最优的策略。

基于模型的强化学习算法实际上是一种动态规划算法,在实际应用中有以下两点限制:

(1) 要求模型已知,即要给出马尔可夫决策过程中的状态转移概率奖励函数,但实际应用中这个要求很难满足,如果我们事先不知道模型,那么可以先让智能体与环境交互来估计模型,即估计状态转移概率和奖励函数。

一个简单的模型估计方法是 R − m a x R-max Rmax,通过随机游走的方法来探索环境,每次随机一个策略并执行,然后收集状态转移和奖励的样本,在收集一定的样本后,就可以通过统计或监督学习来重构出马尔可夫决策过程。但是,这种基于重构过程的复杂度也非常高,只能应用于状态数非常少的场合。

(2) 效率问题,即状态数量较多时,算法效率比较低,但在实际应用中,很多问题的状态数量和动作状态非常多,不管是值迭代还是策略迭代,以当前计算机的计算能力,根本无法计算,一个有效的办法是通过一个函数,如神经网络来近似计算值函数,以减少复杂度并提高泛化能力。

4.2.2 蒙特卡洛方法-Model-free

在很多应用场景下,马尔可夫决策过程的状态转移概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)和奖励函数 r ( s , a , s ′ ) r(s,a,s') r(s,a,s)都是未知的,在这种情况下,我们一般需要智能体和环境进行交互,并收集一些样本,然后再根据这些样本来求解马尔可夫最优策略,这种情况未知,基于采样的学习算法也成为模型无关的强化学习算法。

Q Q Q函数 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)是初始状态为 s s s,并执行动作 a a a后所能得到的期望总回报:
Q π ( s , a ) = E τ ∼ p ( τ ) [ G ( τ s 0 = s , a 0 = a ) ] Q^\pi(s,a)=E_{\tau \sim p(\tau)}[G(\tau_{s_0=s,a_0=a})] Qπ(s,a)=Eτp(τ)[G(τs0=s,a0=a)]
其中, τ s 0 = s , a 0 = a \tau_{s_0=s,a_0=a} τs0=s,a0=a表示轨迹 τ \tau τ的起始状态和动作为 s , a s,a s,a

如果模型未知, Q Q Q函数可以通过采样来计算,这就是蒙特卡洛算法。对于一个策略 π \pi π,智能体从状态 s s s,执行动作 a a a开始,然后通过随机游走的方法来探索环境,并计算其得到的总汇报。假设我们进行了 N N N次实验,得到 N N N个轨迹 τ ( 1 ) , τ ( 2 ) , . . . τ ( N ) \tau^{(1)},\tau^{(2)},...\tau^{(N)} τ(1),τ(2),...τ(N),其总汇报分别为 G [ τ ( 1 ) ] , G [ τ ( 2 ) ] , . . . G [ τ ( N ) ] G[\tau^{(1)}],G[\tau^{(2)}],...G[\tau^{(N)}] G[τ(1)],G[τ(2)],...G[τ(N)] Q Q Q函数可以近似为:
Q π ( s , a ) ≈ Q ^ π ( s , a ) = 1 N ∑ n = 1 N G ( τ s 0 = s , a 0 = a ( n ) ) Q^{\pi}(s,a) \approx \hat{Q}^{\pi}(s,a)=\frac{1}{N}\sum_{n=1}^NG(\tau_{s_0=s,a_0=a}^{(n)}) Qπ(s,a)Q^π(s,a)=N1n=1NG(τs0=s,a0=a(n))
N → ∞ N\rightarrow \infty N时候, Q ^ π ( s , a ) → Q π ( s , a ) \hat{Q}^{\pi}(s,a)\rightarrow Q^{\pi}(s,a) Q^π(s,a)Qπ(s,a)

在近似估计出 Q Q Q函数的 Q ^ π ( s , a ) \hat{Q}^{\pi}(s,a) Q^π(s,a)后,就可以进行策略改进,然后在新的策略下重新采样来估计 Q Q Q函数,并不断重复直至收敛。

  • 利用和探索 Exploitation and exploration

π ( s ) \pi(s) π(s)为在状态 s s s下采取该策略 π \pi π的动作 a = π ( s ) a=\pi(s) a=π(s)

在蒙特卡洛算法中,如果采用确定性策略 π \pi π,每次实验得到的轨迹是一样的,只能计算出 Q π ( s , π ( s ) ) Q^\pi(s,\pi(s)) Qπ(s,π(s)),而无法计算其他动作 a ′ a' a Q Q Q函数,因此也无法进一步改进策略。这样情况仅仅是对当前策略的利用,而缺少了对环境的探索,即实验的轨迹应该尽可能覆盖所有的状态和动作,以找到更好的策略。

为了平衡利用和探索,我们可以采用 ϵ − g r e e d y M e t h o d \epsilon-greedy Method ϵgreedyMethod,对于一个目标策略 π \pi π,其对应的贪心策略为:
π ϵ ( s ) = { π ( s ) ,  按概率  1 − ϵ ,  随机选择中的动作,   按概率  ϵ . \pi^{\epsilon}(s)=\left\{\begin{array}{cc} \pi(s), & \text { 按概率 } 1-\epsilon, \\ \text { 随机选择中的动作, } & \text { 按概率 } \epsilon . \end{array}\right. πϵ(s)={π(s), 随机选择中的动作 按概率 1ϵ, 按概率 ϵ.
这样,将一个仅利用的策略转为带探索的策略。

  • 同策略 On-Policy

在蒙特卡洛算法中,如果采样策略是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s),不断改进策略也是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s)而不是目标策略 π ( s ) \pi(s) π(s),这种采样与改进策略相同的强化学习算法叫同策略方法,

  • 异策略 Off-Policy

如果采样策略是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s),而优化目标是策略 π \pi π,可以通过重要性采样,引入重要性权重来事先对目标策略 π \pi π的优化。这种采样与改进分别使用不同策略的强化学习方法叫异策略方法。

补充重要性采样

如果采样的目的是计算分布 p ( x ) p(x) p(x)下函数的期望,那么实际上抽取的样本不需要严格服从分布 p ( x ) p(x) p(x),也可以通过另一个分布,即提议分布 q ( x ) q(x) q(x),直接采样并估计 E [ f ( x ) ] E_[f(x)] E[f(x)]

函数 f ( x ) f(x) f(x)在分布 p ( x ) p(x) p(x)下的期望可以写为:
E p [ f ( x ) ] = ∫ x f ( x ) p ( x ) d x = ∫ x f ( x ) p ( x ) q ( x ) q ( x ) d x = ∫ x f ( x ) w ( x ) q ( x ) d x = E q [ f ( x ) w ( x ) ] \begin{aligned} E_p[f(x)]&=\int_xf(x)p(x)dx \\ &=\int_xf(x)\frac{p(x)}{q(x)}q(x)dx \\ &=\int_xf(x)w(x)q(x)dx \\ &=E_q[f(x)w(x)] \\ \end{aligned} Ep[f(x)]=xf(x)p(x)dx=xf(x)q(x)p(x)q(x)dx=xf(x)w(x)q(x)dx=Eq[f(x)w(x)]
原来 f ( x ) ∼ p ( x ) f(x)\sim p(x) f(x)p(x),经过转换后 f ( x ) ∼ q ( x ) f(x)\sim q(x) f(x)q(x)

其中 w ( x ) w(x) w(x)重要性权重,重要性采样是通过引入重要性权重,将分布 p ( x ) p(x) p(x) f ( x ) f(x) f(x)的期望变为在分布 q ( x ) q(x) q(x) f ( x ) w ( x ) f(x)w(x) f(x)w(x)的期望,从而近似为
f ^ N = 1 N ( f ( x ( 1 ) ) w ( x ( 1 ) ) + ⋯ + f ( x ( N ) ) w ( x ( N ) ) \hat{f}_{N}=\frac{1}{N}(f(x^{(1)}) w(x^{(1)})+\cdots+f(x^{(N)}) w(x^{(N)}) f^N=N1(f(x(1))w(x(1))++f(x(N))w(x(N))
其中, x ( 1 ) , x ( 2 ) , . . . x ( N ) x^{(1)},x^{(2)},...x^{(N)} x(1),x(2),...x(N)为独立从 q ( x ) q(x) q(x)中随机抽取的点。

重要性采样也可以在只知道为归一化的分布 p ^ ( x ) \hat{p}(x) p^(x)的情况下计算 f ( x ) f(x) f(x)的期望。

p ( x ) = p ^ ( x ) Z p(x)=\frac{\hat{p}(x)}{Z} p(x)=Zp^(x),Z为配分函数。第三行表示成了期望的定义。

E p [ f ( x ) ] = ∫ x f ( x ) p ( x ) d x = ∫ x f ( x ) p ^ ( x ) Z d x = ∫ x p ^ ( x ) f ( x ) d x ∫ x p ^ ( x ) d x ≈ ∑ n = 1 N f ( x ( n ) ) w ^ ( x ( n ) ) ∑ n = 1 N w ^ ( x ( n ) ) \begin{aligned} E_p[f(x)]&=\int_xf(x)p(x)dx \\ &=\int_xf(x)\frac{\hat{p}(x)}{Z}dx \\ &=\frac{\int_x\hat{p}(x)f(x)dx}{\int_x\hat{p}(x)dx} \\ &\approx\frac{\sum_{n=1}^{N} f(x^{(n)}) \hat{w}(x^{(n)})}{\sum_{n=1}^{N} \hat{w}(x^{(n)})} \end{aligned} Ep[f(x)]=xf(x)p(x)dx=xf(x)Zp^(x)dx=xp^(x)dxxp^(x)f(x)dxn=1Nw^(x(n))n=1Nf(x(n))w^(x(n))

其中 ω ^ ( x ) = p ^ ( x ) q ( x ) \hat{\omega}(x)=\frac{\hat{p}(x)}{q(x)} ω^(x)=q(x)p^(x)为独立从 q ( x ) q(x) q(x)中随机抽取的点。

4.2.3 时序差分学习方法-Temporal-Difference Learning

蒙特卡洛方法一般要拿到完整的轨迹,才能对策略进行评估并更新模型,因此效率也比较低。时序差分学习方法是蒙特卡洛方法的一种改进,通过引入动态规划来提高学习效率,时序差分学习方法是模拟一段轨迹,每行动一步或者几步,就利用贝尔曼方程来评估行动前状态的价值。

首先,将蒙特卡洛方法中的 Q Q Q函数 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)的估计改为增量的方式,假设第 N N N次实验后值函数 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)的平均为:
Q ^ N π ( s , a ) = 1 N ∑ n = 1 N G ( τ s 0 = s , a 0 = a ( n ) ) = 1 N ( G ( τ s 0 = s , a 0 = a ( N ) ) + ∑ n = 1 N − 1 G ( τ s 0 = s , a 0 = a ( n ) ) ) = 1 N ( G ( τ s 0 = s , a 0 = a ( N ) ) + ( N − 1 ) 1 N − 1 ∑ n = 1 N − 1 G ( τ s 0 = s , a 0 = a ( n ) ) ) = 1 N ( G ( τ s 0 = s , a 0 = a ( N ) + ( N − 1 ) Q ^ N − 1 π ( s , a ) ) = Q ^ N − 1 π ( s , a ) + 1 N ( G ( τ s 0 = s , a 0 = a ( N ) − Q ^ N − 1 π ( s , a ) ) \begin{aligned} \hat{Q}_{N}^\pi(s,a)&=\frac{1}{N}\sum_{n=1}^NG(\tau_{s_0=s,a_0=a}^{(n)}) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)})+\sum_{n=1}^{N-1}G(\tau_{s_0=s,a_0=a}^{(n)})\right) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)})+(N-1)\frac{1}{N-1}\sum_{n=1}^{N-1}G(\tau_{s_0=s,a_0=a}^{(n)})\right) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)}+(N-1)\hat{Q}_{N-1}^\pi(s,a)\right)\\ &=\hat{Q}_{N-1}^\pi(s,a)+\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)}-\hat{Q}_{N-1}^\pi(s,a)\right) \end{aligned} Q^Nπ(s,a)=N1n=1NG(τs0=s,a0=a(n))=N1(G(τs0=s,a0=a(N))+n=1N1G(τs0=s,a0=a(n)))=N1(G(τs0=s,a0=a(N))+(N1)N11n=1N1G(τs0=s,a0=a(n)))=N1(G(τs0=s,a0=a(N)+(N1)Q^N1π(s,a))=Q^N1π(s,a)+N1(G(τs0=s,a0=a(N)Q^N1π(s,a))
值函数 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)在第 N N N次实验后的平均等于第 N − 1 N-1 N1次实验的平均加上一个增量,更一般地,我们将权重系数换位一个比较小的系数 α \alpha α,这样每次采用一个新的轨迹,就可以更新 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)
Q ^ π ( s , a ) ← Q ^ π ( s , a ) + α ( G ( τ s 0 = s , a 0 = a − Q ^ π ( s , a ) ) \hat{Q}^\pi(s,a) \leftarrow \hat{Q}^\pi(s,a)+\alpha\left(G(\tau_{s_0=s,a_0=a}-\hat{Q}^\pi(s,a)\right) Q^π(s,a)Q^π(s,a)+α(G(τs0=s,a0=aQ^π(s,a))
其中增量称为蒙特卡洛误差,表示当前轨迹的真实回报 G ( τ s 0 = s , a 0 = a ) G(\tau_{s_0=s,a_0=a}) G(τs0=s,a0=a)与期望回报 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)之间的差距。

在上述的更新公式中, G ( τ s 0 = s , a 0 = a ) G(\tau_{s_0=s,a_0=a}) G(τs0=s,a0=a)为一次试验的完整轨迹所得到的总汇报,为了提高效率,可以借助动态规划的方法来计算 G ( τ s 0 = s , a 0 = a ) G(\tau_{s_0=s,a_0=a}) G(τs0=s,a0=a),而不需要得到完整的轨迹,从 s , a s,a s,a开始,采样的下一步的状态和动作 ( s ′ , a ′ ) (s',a') (s,a),并得到奖励 r ( s , a , s ′ ) r(s,a,s') r(s,a,s),然后利用白尔曼公式来近似估计 G ( τ s 0 = s , a 0 = a ) G(\tau_{s_0=s,a_0=a}) G(τs0=s,a0=a)
贝 尔 曼 公 式 : Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ E a ′ ∼ π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) ] 贝尔曼公式:Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma E_{a'\sim \pi(a'|s')}Q^{\pi}(s',a')] :Qπ(s,a)=Esp(ss,a)[r(s,a,s)+γEaπ(as)Qπ(s,a)]
那么有:
G ( τ s 0 = s , a 0 = a , s 1 = s ′ , a 1 = a ′ ) = r ( s , a , s ′ ) + γ G ( τ s 0 = s ′ , a 0 = a ′ ) ≈ r ( s , a , s ′ ) + γ Q ^ π ( s ′ , a ′ ) \begin{aligned} G(\tau_{s_0=s,a_0=a,s_1=s',a_1=a'})&=r(s,a,s')+\gamma G(\tau_{s_0=s',a_0=a'}) \\ &\approx r(s,a,s')+\gamma \hat{Q}^{\pi}(s',a') \end{aligned} G(τs0=s,a0=a,s1=s,a1=a)=r(s,a,s)+γG(τs0=s,a0=a)r(s,a,s)+γQ^π(s,a)
其中, Q ^ π ( s ′ , a ′ ) \hat{Q}^{\pi}(s',a') Q^π(s,a)是当前的 Q Q Q函数的近似估计,因此更新公式可以修改为:
Q ^ π ( s , a ) ← Q ^ π ( s , a ) + α ( r ( s , a , s ′ ) + γ Q ^ π ( s ′ , a ′ ) − Q ^ π ( s , a ) ) \hat{Q}^\pi(s,a) \leftarrow \hat{Q}^\pi(s,a)+\alpha\left(r(s,a,s')+\gamma \hat{Q}^{\pi}(s',a')-\hat{Q}^\pi(s,a)\right) Q^π(s,a)Q^π(s,a)+α(r(s,a,s)+γQ^π(s,a)Q^π(s,a))
因此,更新 Q ^ π ( s ′ , a ′ ) \hat{Q}^{\pi}(s',a') Q^π(s,a)只需要知道当前的状态 s s s和动作 a a a,奖励 r ( s , a , s ′ ) r(s,a,s') r(s,a,s),下一步的状态 s ′ s' s和动作 a ′ a' a。这种策略学习方法叫做SARSA算法(State Action Reward State Action)。

4.2.3.1 SARSA(on-policy)

S A R S A SARSA SARSA算法的学习过程如图所示,其采样和优化的策略都是 π ϵ \pi^\epsilon πϵ,因此这是一种同策略算法(on-policy),为了提高计算效率,我们不需要对环境中所有的 s , a s,a s,a组合进行穷举,并计算值函数,只需要将当前探索 ( s , a , r , s ′ , a ′ ) (s,a,r,s',a') (s,a,r,s,a)中的 s ′ , a ′ s',a' s,a作为下一次估计的起始状态和动作。
在这里插入图片描述

时序差分学习是强化学习的主要学习方法,其关键步骤就是在每次迭代中优化 Q Q Q函数来减少现实与预期的差距。这和动物学系的机制十分相像,在大脑神经元中,多巴胺的释放机制和时序差分学习十分吻合,多巴胺的释放,来自对于实际奖励和预期奖励的差异,而不是奖励本身。

算法不同
时序差分TD只需要一步,其总汇报需要通过马尔可夫性质近似估计
蒙特卡洛MC需要一条完整的路径才知道其总回报
4.2.3.2 Q学习(off-policy)

Q Q Q学习算法是一种异策略的时序差分学习算法,在 Q Q Q学习中, Q Q Q函数的估计方法为:
Q ( s , a ) ← Q ( s , a ) + α ( r ( s , a , s ′ ) + γ m a x Q ( s ′ , a ′ ) a ′ − Q ( s , a ) ) {Q}(s,a) \leftarrow {Q}(s,a)+\alpha\left(r(s,a,s')+\gamma \underset{a'}{max{Q}(s',a')}-{Q}(s,a)\right) Q(s,a)Q(s,a)+α(r(s,a,s)+γamaxQ(s,a)Q(s,a))

相当于让 Q ( s , a ) Q(s,a) Q(s,a)直接去估计最优状态值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)

S A R S A SARSA SARSA算法不同, Q Q Q学习方法不通过 π ϵ \pi^\epsilon πϵ来选择下一步的动作 a ′ a' a,而是直接选最优的 Q Q Q函数,因此更新后的 Q Q Q函数是关于策略 π \pi π的,而不是策略 π ϵ \pi^\epsilon πϵ的,因此是off-policy算法。

在这里插入图片描述

4.2.4 深度Q网络

为了在连续的状态和动作空间中计算值函数 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a),我们可以用一个函数 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)来表示近似计算,称为值函数近似。
Q ϕ ( s , a ) ≈ Q π ( s , a ) Q_\phi(s,a) \approx Q^\pi(s,a) Qϕ(s,a)Qπ(s,a)
其中 s , a s,a s,a分别是状态和动作的向量表示,函数 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)通常是一个参数为 ϕ \phi ϕ的函数,比如神经网络,输出为一个实数,称为Q网络

如果动作为有限离散的 M M M个动作 a 1 , . . . a M a_1,...a_M a1,...aM,我们可以让 Q Q Q网络输出一个 M M M维向量,其中第 m m m维表示 Q ϕ ( s , a m ) Q_\phi(s,a_m) Qϕ(s,am),对应值函数$ Q^\pi(s,a_m)$的近似值。
Q ϕ ( s ) = [ Q ϕ ( s , a 1 ) ⋮ Q ϕ ( s , a M ) ] ≈ [ Q π ( s , a 1 ) ⋮ Q π ( s , a M ) ] Q_{\phi}(\boldsymbol{s})=\left[\begin{array}{c} Q_{\phi}\left(\boldsymbol{s}, a_{1}\right) \\ \vdots \\ Q_{\phi}\left(\boldsymbol{s}, a_{M}\right) \end{array}\right] \approx\left[\begin{array}{c} Q^{\pi}\left(s, a_{1}\right) \\ \vdots \\ Q^{\pi}\left(s, a_{M}\right) \end{array}\right] Qϕ(s)=Qϕ(s,a1)Qϕ(s,aM)Qπ(s,a1)Qπ(s,aM)
我们需要学习一个参数 ϕ \phi ϕ使得函数 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)可以逼近值函数 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)

  • 如果采用蒙特卡洛方法,就直接让 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)去逼近平均的总回报 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)
  • 如果采用时序差分方法,就让 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)去逼近 E s ′ , a ′ [ r ( s , a , s ′ ) + γ Q ϕ ( s ′ , a ′ ) ] E_{s',a'}[r(s,a,s')+\gamma {Q}_{\phi}(s',a')] Es,a[r(s,a,s)+γQϕ(s,a)]

以Q学习为例,采取随机梯度下降,其目标函数为:
L ( s , a , s ′ ∣ ϕ ) = ( r + γ max ⁡ a ′ Q ϕ ( s ′ , a ′ ) − Q ϕ ( s , a ) ) 2 \mathcal{L}\left(s, a, s^{\prime} \mid \phi\right)=\left(r+\gamma \max _{a^{\prime}} Q_{\phi}\left(s^{\prime}, \boldsymbol{a}^{\prime}\right)-Q_{\phi}(\boldsymbol{s}, \boldsymbol{a})\right)^{2} L(s,a,sϕ)=(r+γamaxQϕ(s,a)Qϕ(s,a))2
然而,这个目标函数存在两个问题:一个是目标不稳定,参数学习的目标依赖于参数本身;二是样本之间有很强的相关性。为了解决这两个问题, D Q N DQN DQN网络采用了两个措施

  • F r e e z i n g T a r g e t N e t w o r k s Freezing Target Networks FreezingTargetNetworks目标网络冻结,即在一个时间段内固定目标中的参数,来稳定学习目标
  • E x p e r i e n c e R e p l a y Experience Replay ExperienceReplay经验回放,即构建一个经验池( R e p l a y B u f f e r Replay Buffer ReplayBuffer)来取出数据相关性,经验池是由智能体最近的经历组成的数据集。

训练时,随机从经验吃中抽取样本来代替当前的样本用来进行训练,这样,就打破了和相邻训练样本的相似性,避免模型陷入局部最优。经验回放在一定程度的上类似于监督学习,先收集样本,然后在这些样本上进行训练。深度 Q Q Q网络的学习算法如下。
在这里插入图片描述

整体上,在基于值函数的学习方法中,策略一般为确定性策略。策略优化通常依赖于值函数,比如贪心策略 π ( s ) = a r g m a x Q ( s , a ) a \pi(s)=\underset {a}{argmaxQ(s,a)} π(s)=aargmaxQ(s,a)。最优策略一般需要遍历当前状态 s s s下的所有动作,并找出最优的 Q ( s , a ) Q(s,a) Q(s,a)。当动作空间离散但是很大时,遍历球最大需要很高的时间复杂度,当动作空间是连续的并且 Q Q Q为非凸时,也很难求解出最佳的策略。

4.3 基于策略函数的学习方法

强化学习的目标是学习到一个策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)来最大化期望回报。一种直接的方法是在策略空间直接搜索来得到最佳策略,称为策略搜索,策略搜索本质是一个优化问题,可以分为基于梯度的优化无梯度优化。策略搜索和基于值函数的方法相比,策略搜索可以不需要值函数,直接优化策略,参数化的策略能够处理连续状态和动作,可以直接学出随机性策略。

策略梯度(Policy Gradient)是一种基于梯度的强化学习算法,假设 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)是一个关于 θ \theta θ的连续可微函数,我们可以用梯度上升的方法来优化参数 θ \theta θ使得目标函数 J ( θ ) J(\theta) J(θ)最大。

回顾一下强化学习的目标函数为:
J ( θ ) = E τ ∼ p θ ( τ ) [ G ( τ ) ] = E τ ∼ p θ ( τ ) ∑ t = 0 T − 1 γ t r t + 1 J(\theta)=E_{\tau\sim p_{\theta}(\tau)}[G(\tau)]=E_{\tau\sim p_{\theta}(\tau)}\sum_{t=0}^{T-1}\gamma^{t}r_{t+1} J(θ)=Eτpθ(τ)[G(τ)]=Eτpθ(τ)t=0T1γtrt+1

目标函数 J ( θ ) J(\theta) J(θ)关于策略参数 θ \theta θ的导数为:

期望就是概率和分布函数乘积的积分。

∂ J ( θ ) ∂ θ = ∂ ∂ θ ∫ p θ ( τ ) G ( τ ) d τ = ∫ ( ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( 1 p θ ( τ ) ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) d τ = E τ ∼ p θ ( τ ) [ ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) ] \begin{aligned} \frac{\partial J(\theta)}{\partial\theta}&=\frac{\partial }{\partial\theta}\int p_\theta(\tau)G(\tau)d\tau \\&=\int (\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{1}{p_\theta(\tau)}\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)d\tau\\ &=E_{\tau \sim p_\theta(\tau)}[\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)] \end{aligned} θJ(θ)=θpθ(τ)G(τ)dτ=(θpθ(τ))G(τ)dτ=pθ(τ)(pθ(τ)1θpθ(τ))G(τ)dτ=pθ(τ)(θlogpθ(τ))G(τ)dτ=Eτpθ(τ)[θlogpθ(τ))G(τ)]

其中,参数 θ \theta θ优化的方向是使得总回报 G ( τ ) G(\tau) G(τ)最大的轨迹 τ \tau τ的概率 p θ ( τ ) p_\theta(\tau) pθ(τ)也越大。

∂ ∂ θ l o g p θ ( τ ) \frac{\partial}{\partial\theta}logp_\theta(\tau) θlogpθ(τ)可以进一步分解为:
∂ ∂ θ l o g p θ ( τ ) = ∂ ∂ θ l o g ( p ( s 0 ) ∏ t = 0 T − 1 π θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) ) = ∂ ∂ θ ( l o g ( p ( s 0 ) + ∑ t = 0 T − 1 l o g π θ ( a t ∣ s t ) + ∑ t = 0 T − 1 l o g p ( s t + 1 ∣ s t , a t ) = ∂ ∂ θ ∑ t = 0 T − 1 l o g π θ ( a t ∣ s t ) = ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) \begin{aligned} \frac{\partial}{\partial\theta}logp_\theta(\tau)&=\frac{\partial}{\partial\theta}log(p(s_0)\prod_{t=0}^{T-1}\pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t))\\ &=\frac{\partial}{\partial\theta}(log(p(s_0)+\sum_{t=0}^{T-1}log\pi_\theta(a_t|s_t)+\sum_{t=0}^{T-1}logp(s_{t+1}|s_t,a_t)\\ &=\frac{\partial}{\partial\theta}\sum_{t=0}^{T-1}log\pi_\theta(a_t|s_t)\\ &=\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t) \end{aligned} θlogpθ(τ)=θlog(p(s0)t=0T1πθ(atst)p(st+1st,at))=θ(log(p(s0)+t=0T1logπθ(atst)+t=0T1logp(st+1st,at)=θt=0T1logπθ(atst)=t=0T1θlogπθ(atst)
因此, ∂ ∂ θ l o g p θ ( τ ) \frac{\partial}{\partial\theta}logp_\theta(\tau) θlogpθ(τ)是和状态转移概率无关,只和策略函数有关。

那么策略梯度 ∂ J ( θ ) ∂ θ \frac{\partial J(\theta)}{\partial\theta} θJ(θ)可以写为:

回顾一下, G ( τ ) = ∑ t = 0 T − 1 γ t r t + 1 G(\tau)=\sum_{t=0}^{T-1}\gamma^{t}r_{t+1} G(τ)=t=0T1γtrt+1

∂ J ( θ ) ∂ θ = ∂ ∂ θ ∫ p θ ( τ ) G ( τ ) d τ = ∫ ( ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( 1 p θ ( τ ) ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) d τ = E τ ∼ p θ ( τ ) [ ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( G ( τ 0 : t ) + γ t G ( τ t : T ) ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( γ t G ( τ t : T ) ) ] \begin{aligned} \frac{\partial J(\theta)}{\partial\theta}&=\frac{\partial }{\partial\theta}\int p_\theta(\tau)G(\tau)d\tau \\&=\int (\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{1}{p_\theta(\tau)}\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)d\tau\\ &=E_{\tau \sim p_\theta(\tau)}[\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)G(\tau)]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(G(\tau_{0:t})+\gamma^tG(\tau_{t:T}))]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T}))]\\ \end{aligned} θJ(θ)=θpθ(τ)G(τ)dτ=(θpθ(τ))G(τ)dτ=pθ(τ)(pθ(τ)1θpθ(τ))G(τ)dτ=pθ(τ)(θlogpθ(τ))G(τ)dτ=Eτpθ(τ)[θlogpθ(τ))G(τ)]=Eτpθ(τ)[t=0T1θlogπθ(atst)G(τ)]=Eτpθ(τ)[t=0T1θlogπθ(atst)(G(τ0:t)+γtG(τt:T))]=Eτpθ(τ)[t=0T1θlogπθ(atst)(γtG(τt:T))]

时刻 t t t之前的回报和时刻 t t t之后的动作无关。

其中 G ( τ t : T ) G(\tau_{t:T}) G(τt:T)表示从时刻 t t t作为起始时刻收到的总回报。
G ( τ t : T ) = ∑ t ′ = t T − 1 γ t ′ − t r t ′ + 1 G(\tau_{t:T})=\sum_{t'=t}^{T-1}\gamma^{t'-t}r_{t'+1} G(τt:T)=t=tT1γttrt+1

4.3.1 REINFORCE算法

期望可以通过采样的方式来近似,根据当前的策略 π θ \pi_\theta πθ,通过随机游走的方式来采集多个轨迹 τ ( 1 ) , τ ( 2 ) , . . . τ ( N ) \tau^{(1)},\tau^{(2)},...\tau^{(N)} τ(1),τ(2),...τ(N),其中每一条轨迹 τ ( n ) = s 0 n , a 0 n , s 1 n , a 1 n , . . . \tau^{(n)}=s_0^{n},a_0^{n},s_1^{n},a_1^{n},... τ(n)=s0n,a0n,s1n,a1n,...那么策略梯度 ∂ J ( θ ) ∂ θ \frac{\partial J(\theta)}{\partial\theta} θJ(θ)可以写为:
∂ J ( θ ) ∂ θ ≈ 1 N ∑ n = 1 N [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ( n ) ∣ s t ( n ) ) ( γ t G ( τ t : T ( n ) ) ) ] \frac{\partial J(\theta)}{\partial\theta} \approx \frac{1}{N} \sum_{n=1}^N[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t^{(n)}|s_t^{(n)})(\gamma^tG(\tau_{t:T}^{(n)}))] θJ(θ)N1n=1N[t=0T1θlogπθ(at(n)st(n))(γtG(τt:T(n)))]
结合随机梯度上升算法,我们可以每次采集一条轨迹,计算每个时刻的梯度并更新参数,称为 R E I N F O R C E REINFORCE REINFORCE算法。

在这里插入图片描述

4.3.2 带基准线的REINFORCE算法

R E I N F O R C E REINFORCE REINFORCE算法的一个主要缺点是不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡洛方法的通病。一种减少方差的通用方法是引入一个控制变量,假设要估计函数 f f f的期望,为了减少 f f f的方差,我们引入一个已知期望的函数 g g g,令
f ^ = f − α ( g − E [ g ] ) \hat{f}=f-\alpha(g-E[g]) f^=fα(gE[g])
因为 E [ f ^ ] = E [ f ] E[\hat{f}]=E[f] E[f^]=E[f],可以用 f ^ \hat{f} f^的期望来估计函数 f f f的期望,同时利用函数 g g g来减少 f ^ \hat{f} f^的方差。

函数 f ^ \hat{f} f^的方差为:

补充期望和方差的公式, D ( x ) = E ( x 2 ) − [ E ( x ) 2 ] D(x)=E(x^2)-[E(x)^2] D(x)=E(x2)[E(x)2],且 E [ g ] E[g] E[g]为常数,常数的方差为0。 g g g是参数,是变量,而 E ( g ) E(g) E(g)是一个常数

D ( f ^ ) = D ( f ) + D ( α ( g − E [ g ] ) ) − 2 c o v ( f , α ( g − E ( g ) ) ) = D ( f ) + α 2 D ( g − E [ g ] ) − 2 c o v ( f , α g ) + 2 c o v ( f , α E ( g ) ) = D ( f ) + α 2 [ D ( g ) + D ( E [ g ] ) − 2 c o v ( g , E ( g ) ) ] − 2 α c o v ( f , g ) + 2 α c o v ( f , E ( g ) ) = D ( f ) + α 2 D ( g ) + α 2 D ( E [ g ] ) − 2 α c o v ( f , g ) + 2 α c o v ( f , E ( g ) ) = D ( f ) + α 2 D ( g ) − 2 α c o v ( f , g ) \begin{aligned} D(\hat{f})&=D(f)+D(\alpha(g-E[g]))-2cov(f,\alpha(g-E(g)))\\ &=D(f)+\alpha^2D(g-E[g])-2cov(f,\alpha g)+2cov(f,\alpha E(g))\\ &=D(f)+\alpha^2[D(g)+D(E[g])-2cov(g,E(g))]-2\alpha cov(f,g)+2\alpha cov(f,E(g))\\ &=D(f)+\alpha^2D(g)+\alpha^2D(E[g])-2\alpha cov(f,g)+2\alpha cov(f,E(g))\\ &=D(f)+\alpha^2D(g)-2\alpha cov(f,g) \end{aligned} D(f^)=D(f)+D(α(gE[g]))2cov(f,α(gE(g)))=D(f)+α2D(gE[g])2cov(f,αg)+2cov(f,αE(g))=D(f)+α2[D(g)+D(E[g])2cov(g,E(g))]2αcov(f,g)+2αcov(f,E(g))=D(f)+α2D(g)+α2D(E[g])2αcov(f,g)+2αcov(f,E(g))=D(f)+α2D(g)2αcov(f,g)

如果想让 D ( f ^ ) D(\hat{f}) D(f^)最小,令 ∂ D ( f ^ ) ∂ α = 0 \frac{\partial D(\hat{f})}{\partial\alpha}=0 αD(f^)=0,则有:
α = c o v ( f , g ) D ( g ) \alpha=\frac{cov(f,g)}{D(g)} α=D(g)cov(f,g)
因此
D ( f ^ ) = D ( f ) + c o v ( f , g ) 2 D ( g ) − 2 c o v ( f , g ) 2 D ( g ) = ( 1 − c o v ( f , g ) 2 D ( g ) D ( f ) ) D ( f ) = ( 1 − c o r r ( f , g ) 2 ) D ( f ) \begin{aligned} D(\hat{f})&=D(f)+\frac{cov(f,g)^2}{D(g)}-\frac{2cov(f,g)^2}{D(g)}\\ &=(1-\frac{cov(f,g)^2}{D(g)D(f)})D(f)\\ &=(1-corr(f,g)^2)D(f) \end{aligned} D(f^)=D(f)+D(g)cov(f,g)2D(g)2cov(f,g)2=(1D(g)D(f)cov(f,g)2)D(f)=(1corr(f,g)2)D(f)
其中, c o r r ( f , g ) corr(f,g) corr(f,g)为函数 f f f g g g的相关性,如果相关性越高,则 f ^ \hat{f} f^的方差越小。

带基准线的REINFORCE算法在每个时刻 t t t,其策略梯度变为:
∂ J ( θ ) ∂ θ = E s t [ E a t [ ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( γ t G ( τ t : T ) ] ] \frac{\partial J(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})]\right] θJ(θ)=Est[Eat[θlogπθ(atst)(γtG(τt:T)]]
为了减少策略梯度的方差,我们引入一个与 a t a_t at无关的基准函数 b ( s t ) b(s_t) b(st)
∂ J ^ ( θ ) ∂ θ = E s t [ E a t [ ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( γ t G ( τ t : T ) − b ( s t ) ] ] \frac{\partial \hat{J}(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})-b(s_t)]\right] θJ^(θ)=Est[Eat[θlogπθ(atst)(γtG(τt:T)b(st)]]
因为 b ( s t ) b(s_t) b(st) a t a_t at无关,则有

∫ a t π θ ( a t ∣ s t ) d a t = 1 \int_{a_t}\pi_\theta(a_t|s_t)da_t=1 atπθ(atst)dat=1,所有策略的积分是1。第三个等号处 b ( s t ) b(s_t) b(st) θ \theta θ无关,可以拿出来也可以放进去。

先积分后求导和先求导后积分是等价的。

E a t [ b ( s t ) ∂ ∂ θ l o g π θ ( a t ∣ s t ) ] = ∫ a t ( b ( s t ) ∂ ∂ θ l o g π θ ( a t ∣ s t ) ) π θ ( a t ∣ s t ) d a t = ∫ a t ( b ( s t ) ∂ ∂ θ π θ ( a t ∣ s t ) ) d a t = ∂ ∂ θ ( b ( s t ) ∫ a t π θ ( a t ∣ s t ) d a t ) = ∂ ∂ θ ( b ( s t ) ⋅ 1 ) = 0 \begin{aligned} E_{a_t}[b(s_t)\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)]&=\int_{a_t}\left(b(s_t)\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)\right)\pi_{\theta}(a_t|s_t)da_t\\ &=\int_{a_t}\left(b(s_t)\frac{\partial}{\partial\theta}\pi_\theta(a_t|s_t)\right)da_t\\ &=\frac{\partial}{\partial\theta}\left(b(s_t)\int_{a_t}\pi_\theta(a_t|s_t)da_t\right)\\ &=\frac{\partial}{\partial\theta}(b(s_t)\cdot 1)\\ &=0 \end{aligned} Eat[b(st)θlogπθ(atst)]=at(b(st)θlogπθ(atst))πθ(atst)dat=at(b(st)θπθ(atst))dat=θ(b(st)atπθ(atst)dat)=θ(b(st)1)=0

因此可以知道 ∂ J ^ ( θ ) ∂ θ = ∂ J ( θ ) ∂ θ \frac{\partial \hat{J}(\theta)}{\partial\theta}=\frac{\partial {J}(\theta)}{\partial\theta} θJ^(θ)=θJ(θ)

为了有效减小方差, b ( s t ) b(s_t) b(st) G ( τ t : T ) G(\tau_{t:T}) G(τt:T)越相关越好,一个很自然的选择是令 b ( s t ) b(s_t) b(st)为值函数 V π θ ( s t ) V^{\pi_\theta}(s_t) Vπθ(st),而值函数未知,我们可以用一个科学系的函数 V ϕ ( s t ) V_\phi(s_t) Vϕ(st)来近似值函数,目标函数为
L ( ϕ ∣ s t , π θ ) = ( V π θ ( s t ) − V ϕ ( s t ) ) 2 L(\phi|s_t,\pi_\theta)=(V^{\pi_\theta}(s_t)-V_\phi(s_t))^2 L(ϕst,πθ)=(Vπθ(st)Vϕ(st))2
其中, V π θ ( s t ) = E [ G ( τ t : T ) ] V^{\pi_\theta}(s_t)=E[G(\tau_{t:T})] Vπθ(st)=E[G(τt:T)]也用蒙特卡洛方法估计。采用随机梯度下降法,参数 ϕ \phi ϕ的梯度为:

其中的系数2已经不重要了。

∂ L ( ϕ ∣ s t , π θ ) ∂ ϕ = − ( G ( τ t : T ) − V ϕ ( s t ) ) ∂ V ϕ ( s t ) ∂ ϕ \frac{\partial \mathcal{L}\left(\phi | s_{t}, \pi_{\theta}\right)}{\partial \phi}=-\left(G\left(\tau_{t: T}\right)-V_{\phi}\left(s_{t}\right)\right) \frac{\partial V_{\phi}\left(s_{t}\right)}{\partial \phi} ϕL(ϕst,πθ)=(G(τt:T)Vϕ(st))ϕVϕ(st)
策略函数参数 θ \theta θ的梯度为:
∂ J ^ ( θ ) ∂ θ = E s t [ E a t [ ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( γ t G ( τ t : T ) − b ( s t ) ] ] \frac{\partial \hat{J}(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})-b(s_t)]\right] θJ^(θ)=Est[Eat[θlogπθ(atst)(γtG(τt:T)b(st)]]
在这里插入图片描述

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于函数强化学习方法是一类经典的强化学习算法,用于解决在未知环境中做决策的问题。该方法通过学习一个函数来评估不同状态下的行动价,从而帮助智能体做出最优的决策。 在基于函数强化学习方法中,常见的算法包括Q-learning和深度Q网络(Deep Q-Network, DQN)等。 1. Q-learning: Q-learning是一种基于动态规划的无模型强化学习算法。它通过学习一个Q函数来评估在不同状态下采取不同行动的价。Q表示在当前状态下采取某个行动所能获得的长期累积回报。 Q-learning算法的基本思想是通过不断迭代更新Q函数的估计,使其逼近真实的Q。智能体在环境中与之交互,根据当前状态选择行动,并观察到下一个状态和奖励信号。然后,根据Bellman方程更新Q函数的估计,以使其更接近真实的Q。这个过程通过迭代进行,直到收敛到最优的Q函数。 2. 深度Q网络(DQN): 深度Q网络是一种基于神经网络的函数近似方法。它利用深度神经网络来近似Q函数,解决了状态空间较大时传统Q-learning算法的局限性。 DQN算法使用一个深度神经网络作为Q函数的近似器。智能体通过与环境交互,收集样本数据,然后利用这些数据进行经验回放和目标网络更新来训练神经网络。经验回放是指将智能体的经验存储在经验回放缓冲区中,并随机采样进行训练,以减少样本之间的相关性。目标网络更新是指使用一个目标网络来计算目标Q,减少训练过程中的目标偏差。 DQN算法通过不断迭代训练神经网络,使其逼近最优的Q函数。最终,智能体可以根据神经网络的输出选择最优的行动策略。 基于函数强化学习方法在很多领域都有广泛的应用,包括游戏智能、机器人控制、自动驾驶等。它具有一定的理论基础和实际效果,并且可以通过结合其他技术手段进一步优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值