一、算法背景 大部分强化学习算法 很难保证单调收敛 ,这使得即使参数空间中看似很小的差异也会在性能上产生非常大的差异结果,因此一个错误的步骤可能会导致策略性能崩溃。而TRPO通过采取 尽可能大的步骤提高性能来更新策略 ,利用KL散度对新旧策略接近程度进行约束,避免了这种情况。
置信域策略优化算法(Trust Region Policy Optimization,TRPO)是一种基于策略的方法,即先对策略进行参数化,并设计衡量策略质量的指标或目标函数,然后通过梯度上升法来最大化这指标,让策略逼近局部最优。一般的策略梯度算法在沿着策略梯度更新参数时,可能因为步长太大,使策略变差。TRPO在更新参数的时候会先试探权重参数下一步要更新的位置是否失控,如果失控则调整步长,否则视该区域为置信域(Trust Region),在该区域内能保障策略提升的单调性。
二、定义 策略评估(policy evaluation) 策略 π 下产生的一系列状态-动作对的预期累计回报:
其 中 , 为 环 境 的 初 始 状 态 , 与 策 略 无 关 , 由 环 境 自 动 生 成 , 即 ; (1) η ( π ) = E s 0 , a 0 , s 1 , a 1 , ⋯ [ ∑ t = 0 ∞ γ t r ( s t ) ] 其 中 , s 0 为 环 境 的 初 始 状 态 , 与 策 略 无 关 , 由 环 境 自 动 生 成 , 即 s 0 ∼ ρ ( s 0 ) ; a t ∼ π ( ⋅ ∣ s t ) ; s t + 1 ∼ P ( s t + 1 ∣ s t , a t ) ; 状态值函数(state value function) (2) V π ( s t ) = E a t , s t + 1 , ⋯ [ ∑ l = 0 ∞ γ l r ( s t + l ) ] 状态-动作值函数(state-action value function) (3) Q π ( s t , a t ) = E s t + 1 , a t + 1 , ⋯ [ ∑ l = 0 ∞ γ l r ( s t + l ) ] 动作优势函数(advantage action function) 即状态s下使用动作a产生的回报与状态s时所有动作产生平均回报的差,衡量某个特定动作相对平均收益的优势
三、将新策略的回报表示为旧策略的回报+其他值 其 中 (5) η ( π ~ ) = η ( π ) + E s 0 , a 0 , ⋯ ∼ π ~ [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] 其 中 , s 0 ∼ ρ ( s 0 ) , a t ∼ π ( ⋅ ∣ s t ) , s t + 1 ∼ P ( s t + 1 ∣ s t , a t ) 证明:
此 处 等 价 于 其 中 : 证 毕 E τ ∣ π ~ [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] = E τ ∣ π ~ [ ∑ t = 0 ∞ γ t [ Q π ( s t , a t ) − V π ( s t ) ] ] = E τ ∣ π ~ [ ∑ t = 0 ∞ γ t ( r ( s t ) + γ V π ( s t + 1 ) − V π ( s t ) ) ] = E τ ∣ π ~ [ ∑ t = 0 ∞ γ t r ( s t ) ] + E τ ∣ π ~ [ ∑ t = 0 ∞ γ t ( γ V π ( s t + 1 ) − V π ( s t ) ) ] = η ( π ~ ) + E τ ∣ π ~ [ − V π ~ ( s 0 ) + γ V π ~ ( s 1 ) − γ V π ~ ( s 1 ) + γ 2 V π ~ ( s 2 ) + ⋯ ] = η ( π ~ ) + ( − E s 0 [ V π ( s 0 ) ] ) ⟶ 此 处 s 0 ∼ π 等 价 于 s 0 ∼ π ~ = η ( π ~ ) − η ( π ) 其 中 : E s 0 [ V π ( s 0 ) ] = E s 0 [ E a 0 , s 1 , ⋯ [ ∑ t = 0 ∞ γ t r ( s 0 + t ) ] ] = E a 0 , s 1 , ⋯ [ ∑ t = 0 ∞ γ t r ( s 0 + t ) ] = η ( π ) 证 毕 定义:
(6) ρ π ( s ) = P ( s 0 = s ) + γ P ( s 1 = s ) + γ 2 P ( s 2 = s ) + ⋯ 即每个状态的(未标准化的)折扣访问频率(Discounted Visitation Frequencies),其将时间步上的累加,转为了状态上的累加。当 γ 为1时,可以将其理解为状态的占用度量。
将该定义带入式(5),得到:
(7) η ( π ~ ) = η ( π ) + ∑ s ρ π ~ ( s ) ∑ a π ~ ( a | s ) A π ( s , a ) 证明:
η ( π ~ ) = η ( π ) + ∑ t = 0 ∞ ∑ s P ( s t = s | π ~ ) ∑ a [ π ~ ( a | s ) ⋅ γ t ⋅ A π ( s , a ) ] = η ( π ) + ∑ s ∑ t = 0 ∞ γ t P ( s t = s | π ~ ) ∑ a [ π ~ ( a | s ) ⋅ A π ( s , a ) ] = η ( π ) + ∑ s ρ π ~ ( s ) ⋅ ∑ a π ~ ( a | s ) ⋅ A π ( s , a ) 四、对 η ( π ~ ) 近似,获得替代回报函数 如果先大量采样得到 ρ π ~ ( s ) ,再验证式(7)右边第二项 ≥ 0,计算量太大,需要对不同的 π ~ 都进行大量采样,也就是盲目地选择一个策略,然后大量采样,看看式(7)第二项是否大于0,这种方法显然是不现实的,而强化学习的目标就是减少采样次数。
考虑这样一种情况,将原回报函数中的 ρ π ~ ( s ) 替换为 ρ π ( s ) ,定义替换函数:
(8) L π ( π ~ ) = η ( π ) + ∑ s ρ π ( s ) ⋅ ∑ a π ~ ( a | s ) A π ( s , a ) 当 η ( π ~ ) 和 L π ( π ~ ) 相差很小时,两者可以相互替代,将其均看成 π ~ 的函数, π ~ 和 π 均为 θ 的函数,当 η ( π ~ ) 和 L π ( π ~ ) 在 π θ o l d 处一阶近似时,即:
(9) L π θ old ( π θ old ) = η ( π θ old ) ∇ θ L π θ old ( π θ ) | θ = θ old = ∇ θ η ( π θ ) | θ = θ old 证明:
1)对于式(9)的第一个式子:
式(7)中的 π 和 π o l d 是一样的,都是指的原来的策略,故:
η ( π o l d ) = η ( π o l d ) + ∑ s ρ π o l d ( s ) ∑ a π o l d ( a | s ) A π o l d ( s , a ) 其中,
上式等号右边第二项为0,故式(9)第一个式子得证。
2)对于式(9)的第二个式子,分别让式(7)和(8)对 θ 求偏导,得:
第 一 项 是 常 数 , 故 当 时 , 即 的 参 数 等 于 的 参 数 时 , , 故 有 代 入 , 即 ∇ θ η ( π ~ ) | θ = θ old = ∇ θ η ( π π θ o l d ) + ∑ s ∇ θ ρ π ~ ( s ) ∑ a π ~ ( a | s ) A π ( s , a ) + ∑ s ρ π ~ ( s ) ∑ a ∇ π ~ ( a | s ) A π ( s , a ) ( 1 ) 第 一 项 η ( π θ o l d ) 是 常 数 , 故 ∇ η ( π θ o l d ) = 0 ( 2 ) 当 π ~ = π o l d 时 , 即 π ~ 的 参 数 θ 等 于 π o l d 的 参 数 θ o l d 时 , ∑ a π ~ ( a | s ) A π ( s , a ) = 0 , 故 有 = ∑ s ρ π ~ ( s ) ∑ a ∇ π ~ ( a | s ) A π ( s , a ) 代 入 θ = θ o l d , 即 π ~ = π o l d = ∑ s ρ π θ o l d ( s ) ∑ a ∇ π ~ ( a | s ) A π θ o l d ( s , a ) 原 式 第 一 项 是 常 数 , 故 ∇ θ L π θ o l d ( π ~ ) | θ = θ old = 0 + ∑ s ρ π θ o l d ( s ) ∑ a ∇ π ~ ( a | s ) A π θ o l d ( s , a ) ⟶ 原 式 第 一 项 η ( π θ o l d ) 是 常 数 , 故 ∇ η ( π θ o l d ) = 0 证毕。
当 η ( π ~ ) 和 L π ( π ~ ) 在 π θ o l d 处一阶近似时,则在 π o l d 附近,改善L的策略也能改善原汇报函数 η ,只要步长控制在 π o l d 合理的邻域内。
五、控制 π 和 π ~ 之间的散度小于 α ,就能保证回报单调增长 如果要使用L回报函数替代 η 回报函数,则 π 和 π ~ 不能差太多,否则一阶近似邻域将非常小,导致极其小的步长,会使得训练变慢。
Kakade和Langford在2002年提出过一个保守策略迭代更新方案,可以为 η 更新提供明确的下界,即对于策略改进采用以下混合方式时:
(10) π n e w ( a | s ) = ( 1 − α ) π o l d ( a | s ) + α π ′ ( a | s ) 其中, π ′ = a r g min π ′ L π o l d ( π ′ ) ,有
(11) η ( π n e w ) ≥ L π o l d − 2 ϵ γ ( 1 − γ ) 2 α 2 , ϵ = max s | E a ∼ π ~ ( a | s ) [ A π ( s , a ) ] | 证明:
首先定义 A ― ( s ) :
A ― ( s ) = E a ∼ π ~ ( a | s ) [ A π ( s , a ) ] A ― ( s ) 表示在状态s时采用策略 π ~ 相对于之前策略的改进。
用 A ― ( s ) 改写式(7)和(8),得到:
η ( π ~ ) = η ( π ) + E τ ∼ π ~ [ ∑ t = 0 ∞ γ t A ¯ ( s t ) ] L π ( π ~ ) = η ( π ) + E τ ∼ π [ ∑ t = 0 ∞ γ t A ¯ ( s t ) ] 由于策略按照 的 模 式 混 合 , 假 设 新 策 略 是 由 和 π n e w ( a | s ) = ( 1 − α ) π o l d ( a | s ) + α π ‘ ( a | s ) 的 模 式 混 合 , 假 设 新 策 略 π ~ 是 由 π o l d 和 π ‘ 各自按照一定权重进行混合的,策略可以表示为策略对 ( π , π ~ ) ,由策略对产生的动作对 ( a , a ~ ) 。
从这种视角看,产生动作 a ~ 的概率为 α ,因为不同策略也可能产生相同的动作,所以在改进的策略 π n e w 中,产生和原策略的动作(即a)不同的概率最多为 α ,即 P ( a ≠ a ~ | s ) ≤ α 。
于是有:
定 义 , 所 以 这 个 等 号 就 是 减 去 了 当 时 A ― = E a ~ ∼ π ~ [ A π ( s , a ~ ) ] ⟶ 定 义 = E ( a , a ~ ) ∼ ( π , π ~ ) [ A π ( s , a ~ ) − A π ( s , a ) ] ⟶ E a ∼ π A π ( s , a ) = 0 , 所 以 这 个 等 号 就 是 减 去 了 0 = P ( a ≠ a ~ | s ) E ( a , a ~ ) ∼ ( π , π ~ ) | a ≠ a ~ [ A π ( s , a ~ ) − A π ( s , a ) ] ⟶ 当 a = a ~ 时 , A π ( s , a ~ ) − A π ( s , a ) = 0 于是有:
(12) | A ― | ≤ P ( a ≠ a ~ | s ) ( | E a ~ ∼ π ~ [ A π ( s , a ~ ) | + | E a ∼ π A π ( s , a ) ] | ) ≤ α ⋅ 2 ⋅ max s , a | A π ( s , a ) | 用 n t 表示在时刻t之前策略 π 和 π ~ 产生的不同动作的数量,有:
(13) E s t ∼ π ~ [ A ― ( s i ) ] = P ( n t = 0 ) E s t ∼ π ~ | n t = 0 [ A ― ( s t ) ] + P ( n t > 0 ) E s t ∼ π ~ | n t > 0 [ A ― ( s t ) ] 和
(14) E s t ∼ π [ A ― ( s i ) ] = P ( n t = 0 ) E s t ∼ π | n t = 0 [ A ― ( s t ) ] + P ( n t > 0 ) E s t ∼ π | n t > 0 [ A ― ( s t ) ] n t = 0 时,策略 π 和 π ~ 动作相同,将到达相同的状态,则有:
E s t ∼ π ~ | n t = 0 [ A ― ( s t ) ] = E s t ∼ π | n t = 0 [ A ― ( s t ) ] 则式(13)减去式(14)有:
使 用 式 的 结 论 | E s t ∼ π ~ | n t > 0 [ A ― ( s t ) ] − E s t ∼ π | n t > 0 [ A ― ( s t ) ] | ≤ | E s t ∼ π ~ | n t > 0 [ A ― ( s t ) ] | + | E s t ∼ π | n t > 0 [ A ― ( s t ) ] | ⟶ 使 用 式 ( 12 ) 的 结 论 ≤ 4 α max s , a | A π ( s , a ) | 又 P ( n t = 0 ) ≥ ( 1 − α ) t ,故 P ( n t > 0 ) ≤ 1 − ( 1 − α ) t
于是有:
| E s t ∼ π ~ [ A ― ( s i ) ] − E s t ∼ π [ A ― ( s i ) ] | = P ( n t > 0 ) | E s t ∼ π ~ | n t > 0 [ A ― ( s t ) ] − E s t ∼ π | n t > 0 [ A ― ( s t ) ] | ≤ ( 1 − ( 1 − α ) t ) ⋅ 4 α max s , a | A π ( s , a ) | 从而有:
而 不 是 | η ( π ~ ) − L π ( π ~ ) | = ∑ t = 0 ∞ γ t | E τ ∼ π ~ [ A ― ( s t ) ] − E τ ∼ π [ A ― ( s t ) ] | ≤ ∑ t = 0 ∞ γ t ⋅ 4 ϵ α ( 1 − ( 1 − α ) t ) ⟶ ϵ = max s | A π ( s , a ) | 而 不 是 max s | E a ∼ π ~ ( a | s ) [ A π ( s , a ) ] | = 4 ϵ α ( 1 1 − γ − 1 1 − γ ( 1 − α ) ) = 4 α 2 γ ϵ ( 1 − γ ) ( 1 − γ ( 1 − α ) ) ≤ 4 α 2 γ ϵ ( 1 − γ ) 2 证毕。
由式(11)可知,可以保证在一定的误差范围内可以用 L π ( π ~ ) 代替 η ( π ~ ) 。
但混合策略,即式(12)在实际应用中用得很少,个人理解是超参数 α 很难设定,而 α 其实表征的是两个策略之间的距离,而策略其实就是概率分布,衡量两个概率分布的相似程度自然而然想到散度,于是使用总方差散度(the Total Variation divergence)。
对于离散的取值,我们有:
(15) D T V ( p | | q ) = 1 2 ∑ i | p i − q i | D T V m a x ( π , π ~ ) = max s ( π ( ⋅ | s ) | | π ~ ( ⋅ | s ) ) 又有:
[ D T V ( p | | q ) ] 2 ≤ D K L ( p | | q ) D K L m a x ( π , π ~ ) = max s D K L ( π ( ⋅ | s ) | | π ~ ( ⋅ | s ) ) 从而有:
η ( π ~ ) ≥ L π ( π ~ ) − C D K L m a x ( π , π ~ ) where C = 4 ϵ γ ( 1 − γ ) 2 可以用KL散度控制 π 和 π ~ 之间的距离小于 α 时,就能够在误差确定的情况下使用 L π ( π ~ ) 替代 η ( π ~ ) ,从而在优化 L π ( π ~ ) 时, η ( π ~ ) 也在优化。
在保证回报函数单调不减的情况下,求取更新策略的算法:
算法:保证预期回报 η 不减的近似策略迭代算法
输入:初始化策略 π 0
For i=0,1,2,3, ⋯ until 收敛 do:
计算优势函数 A π i ( s , a )
求解如下约束问题:
π i + 1 = a r g m a x π ( L π i ( π ) − 4 ϵ γ ( 1 − γ ) 2 D K L m a x ( π i , π ) ) ,
其中 ϵ = max s | E a ∼ π ~ ( a | s ) [ A π ( s , a ) ]
L π i ( π i ) = η ( π i ) + ∑ s ρ π i ( s ) ∑ a π ( a | s ) A π i ( s , a )
End for
证明以上算法的有效性:
设 M i ( π ) = L π i ( π ) − C D K L m a x ( π i , π )
则 M i ( π i ) = L π i ( π i ) = η ( π i ) ⟶ D K L m a x ( π i , π i ) = 0
取 π i + 1 = a r g m a x π ( L π i ( π ) − C ⋅ D K L m a x ( π i , π ) )
则 η ( π i + 1 ) ≥ M i + 1 ( π i + 1 )
于是有 η ( π i + 1 ) − η ( π i ) ≥ M i ( π i + 1 − M i ( π i ) )
故改善 M i 也会改善 η
证毕。
六、采取重要性采样,Q函数替代A函数,对算法进一步近似 参数化的策略是通过改变参数来优化目标函数,即实现 max θ ( L θ o l d ( θ ) − C ⋅ D K L m a x ( θ o l d , θ ) ) ,可以改写为:
(16) max θ L θ o l d ( θ ) subject to D K L m a x ( θ o l d , θ ) ≤ δ 但上式的约束太严格,要求状态空间的每一点都维持在KL散度在一定范围内,所以在实际应用中用平均散度来作为最大KL散度的近似,这样就可以使用采样的方法,即:
(17) D ― K L ρ ( θ 1 , θ 2 ) := E s ∼ ρ [ D K L ( π θ 1 ( ⋅ | s ) | | π θ 2 ( ⋅ | s ) ) ] 则有:
(18) max θ ∑ s ρ θ o l d ( s ) ∑ a π θ ( a | s ) A θ o l d ( s , a ) subject to D ― K L ρ θ o l d ( θ o l d , θ ) ≤ δ 式(18)中的 ∑ s ρ θ o l d ( s ) [ ⋯ ] 可以根据其定义,使用 1 1 − γ E s ∼ ρ θ o l d [ ⋯ ] 代替(将 ρ 定义中的 γ 考虑为权重,要让权重为1,则必须先乘上 1 − γ ,然后再除以 1 − γ ,这样 ∑ s ρ ( s ) = 1 。
解释:
∑ s ρ θ o l d ( s ) [ ⋯ ] = ∑ s ∑ t γ t P ( s t | π θ o l d ) [ ⋯ ] = ∑ t γ t ∑ s P ( s t | π θ o l d ) [ ⋯ ] ≈ 1 1 − γ E s ∼ ρ θ o l d [ ⋯ ] 又因为式(18)第二个 ∑ 的策略是按照新的策略,所以得引入重要性采样,用原策略采样得到的轨迹来训练
即:
(19) ∑ s π θ ( a | s ) A θ o l d ( s , a ) = E a ∼ π θ o l d [ π θ ( a | s ) π θ o l d ( a | s ) A θ o l d ( s , a ) ] 再一个优化是用状态-动作价值函数Q(s,a)代替优势函数A(s,a)
解释:
是 常 数 ∑ a π θ ( a | s ) A θ o l d ( s , a ) = ∑ a π θ ( a | s ) [ Q θ o l d ( s ) − V θ o l d ( s , a ) ] = ∑ a [ π θ ( a | s ) Q θ o l d ( s , a ) ] − V θ o l d ( s ) ∑ a π θ ( a | s ) = ∑ a [ π θ ( a | s ) Q θ o l d ( s , a ) ] − V θ o l d ( s ) ⟶ V θ o l d ( s ) 是 常 数 原论中提到可以用Q替代A,但在代码实现中还是用A来实现的居多,应该是运用了类似Dueling DQN差不多的技巧,以加快训练速度。
最终TRPO的目标转化为转化为:
(20) max s E s ∼ ρ θ o l d , a ∼ π θ o l d [ π θ ( a | s ) π θ o l d ( a | s ) Q θ o l d ( s , a ) ] subject to E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ | s ) | | π θ ( ⋅ | s ) ) ] ≤ δ 七、对目标函数进行一阶逼近,对约束函数进行二阶逼近 纯理论上的TRPO更新不是最容易使用的,所以实际的TRPO算法进行了一些近似操作以快速获得答案。
1)对目标函数进行一阶逼近
记 L θ o l d ( θ ) = E s ∼ ρ θ o l d , a ∼ π θ o l d [ π θ ( a | s ) π θ o l d ( a | s ) A θ o l d ( s , a ) ]
得到:
(21) min θ − ∇ θ L θ o l d ( θ ) | θ = θ o l d ⋅ ( θ − θ o l d ) 解释:
函数f(x)在x=a处的一阶泰勒展开为 f ( x ) = f ( a ) + f ‘ ( a ) ( x − a )
故对式(20)的第一个式子在 θ = θ o l d 处进行一阶泰勒展开,得到
L θ o l d ( θ ) = L θ o l d ( θ o l d ) + ∇ θ L θ o l d ( θ ) | θ = θ o l d ⋅ ( θ − θ o l d ) 显然等号第一项为0,最大化一个数等价于最小化它的相反数,且在机器学习中一般习惯于最小化目标函数
故
max s E s ∼ ρ θ o l d , a ∼ π θ o l d [ π θ ( a | s ) π θ o l d ( a | s ) A θ o l d ( s , a ) ] ⇔ min θ − ( ∇ θ L θ o l d ( θ ) | θ = θ o l d ⋅ ( θ − θ o l d ) ) 2)对约束函数进行二阶逼近
得到:
其 中 是 费 舍 尔 信 息 矩 阵 (22) 1 2 ( θ − θ o l d ) T F ( θ o l d ) ( θ − θ o l d ) ≤ δ 其 中 F 是 费 舍 尔 信 息 矩 阵 解释:
根据KL散度的定义得:
D K L ( π θ o l d ( ⋅ | s ) | | π θ ( ⋅ | s ) ) = ∫ π θ o l d ( ⋅ | s ) log π θ o l d ( ⋅ | s ) π θ ( ⋅ | s ) d x = ∫ π θ o l d ( ⋅ | s ) ) log π θ o l d ( ⋅ | s ) ) d x − ∫ π θ o l d ( ⋅ | s ) ) log π θ ( ⋅ | s ) ) = E x ∼ π θ o l d log π θ o l d − E x ∼ π θ o l d log π θ 对 D K L 进行一阶求导,即:
代 入 常 数 ∇ θ D K L ( π θ o l d ( ⋅ | s ) | | π θ ( ⋅ | s ) ) = − ∫ π θ o l d ( x | s ) ) ∇ θ log π θ ( x | s ) ) d x = − ∫ π θ o l d ( x | s ) ⋅ ∇ θ π θ ( x | s ) π θ ( x | s ) d x ⟶ 代 入 θ = θ o l d = − ∫ ∇ θ π θ o l d ( x | s ) d x = − ∇ ∫ π θ o l d ( x | s ) d x = ∇ 常 数 = 0 对 D K L 进行二阶求导
记 费 舍 尔 信 息 矩 阵 ∇ θ 2 D K L ( π θ o l d ( ⋅ | s ) | | π θ ( ⋅ | s ) ) | θ = θ o l d = − ∫ π θ o l d ( x | s ) ) ∇ θ 2 log π θ ( x | s ) ) d x | θ = θ o l d ⟶ 记 H = ∇ θ 2 log π θ ( x | s ) ) | θ = θ o l d = − ∫ π θ o l d ( x | s ) H log π θ d x | θ = θ o l d = − E π θ o l d [ H log π θ o l d ] = F ⟶ 费 舍 尔 信 息 矩 阵 注:
两个重要结论
结论1 :Fisher矩阵F是Hessian矩阵H的负期望
F = − E p ( x | θ ) [ ∇ θ log p ( x | θ ) ∇ log p ( x | θ ) T ] = − E p ( x | θ ) [ H log p ( x | θ ) ] 当黑塞矩阵中的被微分的函数是对数函数时,其与费舍尔信息矩阵就相差一个负号
证明:
F = E x ∼ p ( x , θ ) [ ∇ θ log p ( x | θ ) ∇ θ log p ( x | θ ) T ] H log p ( x | θ ) = ∇ θ ( ∇ θ log p ( x | θ ) ) = ∇ θ ( ∇ θ p ( x | θ ) p ( x | θ ) ) = p ( x | θ ) ∇ θ 2 p ( x | θ − ∇ θ p ( x | θ ) ∇ θ p ( x | θ ) T ) p 2 ( x | θ ) = ∇ θ 2 p ( x | θ ) p ( x | θ ) − ∇ θ log p ( x | θ ) ∇ θ log p ( x | θ ) T E x ∼ p ( x , θ ) [ H log p ( x | θ ) ] = E x ∼ p ( x , θ ) [ ∇ θ 2 p ( x | θ ) p ( x | θ ) ] − F = ∫ ∇ θ 2 p ( x | θ ) p ( x | θ ) p ( x | θ ) d x − F = ∇ θ 2 ∫ p ( x | θ ) d x − F = − F 结论2 :Fisher矩阵F是KL散度的Hessian矩阵H
即对 D K L 的二阶求导结果,即:
K L [ p θ | | p θ + d ] ≈ K L [ p θ | | p θ + d ] + ( ∇ θ ′ K L [ p θ | | p θ ′ ] | θ ′ = θ ) T d + 1 2 d T F d = K L [ p θ | | p θ + d ] − E p ( x | θ ) [ ∇ θ log p ( x | θ ) ] T d + 1 2 d T F d = 1 2 d T F d 记 m ( θ ) = E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ | s ) | | π θ ( ⋅ | s ) ) ] ,则 在 m ( θ ) 在 θ = θ o l d 处的二阶泰勒展开为:
由 前 面 的 推 导 m ( θ ) ≈ m ( θ o l d ) + ∇ θ m ( θ ) | θ = θ o l d ( θ − θ o l d ) + 1 2 ( θ − θ o l d ) T ∇ θ 2 m ( θ ) | θ = θ o l d ( θ − θ o l d ) ⟶ 由 前 面 的 推 导 = − 1 2 ( θ − θ o l d ) T E s ∼ ρ θ o l d [ H log π θ o l d ] ( θ − θ o l d ) = 1 2 ( θ − θ o l d ) T E s ∼ ρ θ o l d [ F π θ o l d ] ( θ − θ o l d ) 另一种证明方法:
K L [ log p ( x | θ ) | log p ( x | θ ′ ) ] = ∫ p ( x | θ ) log log p ( x θ ) log p ( x | θ ′ ) = E x ∼ p ( x , θ ) [ log p ( x | θ ) ] − E x ∼ p ( x , θ ) [ log p ( x | θ ′ ) ] ∇ θ ′ K L [ log p ( x | θ ) | log p ( x | θ ′ ) ] = − ∇ θ ′ E x ∼ p ( x , θ ) [ log p ( x | θ ′ ) ] ∇ θ ′ 2 K L [ log p ( x | θ ) | log p ( x | θ ′ ) ] | θ ′ = θ = − ∇ θ ′ 2 E x ∼ p ( x , θ ) [ log p ( x | θ ′ ) ] | θ ′ = θ = − E x ∼ p ( x , θ ) H log p ( x | θ ) = F 八、利用共轭梯度法求解最优更新量 对式(21)和(22)构造拉格朗日函数,即
(23) L ( θ , λ ) = − ( ∇ θ L θ o l d ( θ ) | θ = θ o l d ⋅ ( θ − θ o l d ) ) + λ ( 1 2 ( θ − θ o l d ) T F ( θ o l d ) ( θ − θ o l d ) − δ ) 利用KKT条件:
(24) ∂ L ( θ , λ ) ∂ θ = − ∇ θ L θ o l d ( θ ) | θ = θ o l d + λ F ( θ o l d ) ( θ − θ o l d ) = 0 λ ≥ 0 λ ( 1 2 ( θ − θ o l d ) T F ( θ o l d ) ( θ − θ o l d ) − δ ) = 0 1 2 ( θ − θ o l d ) T F ( θ o l d ) ( θ − θ o l d ) − δ ≤ 0 令 d = λ ( θ − θ o l d ) ,可以看出 与 d 与 θ − θ o l d 同向,则d为最优更新量的搜索方向,即满足:
或 (25) F ( θ o l d ) d = ∇ θ L θ o l d ( θ ) | θ = θ o l d 或 d = F − 1 ( θ o l d ) ∇ θ L θ o l d ( θ ) | θ = θ o l d 其 中 (26) θ = θ o l d + 2 δ g T F − 1 g F − 1 g , 其 中 g = − ∇ θ L θ o l d ( θ )
1)计算更新步长: 设步长为 β ,则:
, 其 中 这 里 为 式 ( ) 中 的 (27) δ = 1 2 ( β d ∗ ) T F ( θ o l d ) ( β d ∗ ) ⇒ β = 2 δ d ∗ T F d ∗ , 其 中 d ∗ = F − 1 g , 这 里 d ∗ = − d , g 为 式 ( 26 ) 中 的 g 2)计算搜索方向 式(25)是个线性方程组,如果直接求逆,算法复杂度很高,达到 O ( n 3 ) ,其中n是矩阵大小,所以采用共轭梯度的方法来求解,即将求解线性方程组的问题转化为求解与之等价的二次函数极小值问题,具体如下:
首先构造目标函数:
其 中 为 正 定 矩 阵 , 其 极 小 值 点 为 的 解 其 中 式 这 种 的 , 和 具 体 算 法 过 程 中 的 没 有 关 系 f ( x ) = 1 2 x T A x + b T x , 其 中 A = A T 为 正 定 矩 阵 , 其 极 小 值 点 为 A x = b 的 解 其 中 b T = − ∇ θ L θ o l d ( θ ) | θ = θ o l d = g ⟶ 式 ( 26 ) 这 种 的 g , 和 具 体 算 法 过 程 中 的 g 没 有 关 系 A = − E p ( x | θ o l d ) [ ∇ θ log p ( x | θ ) ∇ log p ( x | θ ) T ] = − E p ( x | θ o l d ) [ ∇ θ 2 D K L ( p ( x | θ o l d ) | | p ( x | θ ) ) ] = H K L [ p ( x | θ o l d ) | | p ( x | θ ] ) = F 具体算法过程:
第一步:给定初始迭代点 x ( 0 ) 以及停止条件(阈值 或 最 大 迭 代 次 数 ϵ 或 最 大 迭 代 次 数 n )
第二步:计算 g ( 0 ) = ∇ f ( x ( 0 ) ) = A x ( 0 ) + b ,如果 g ( 0 ) = 0 则停止迭代,否则 d ( 0 ) = − g ( 0 )
第三步:for k=0 to n-1 do:
a) α k = − ( g ( k ) ) T d k ( d k ) T A d k
b) x ( k + 1 ) = x ( k ) + α k d ( k )
c) g ( k + 1 ) = ∇ f ( x ( k + 1 ) ) = A x ( k + 1 ) + b ,如果 g ( k + 1 ) = 0 ,停止迭代
d) β k = ( g ( k + 1 ) ) T A d k ( d k ) T A d k
e) d ( k + 1 ) = − g ( k + 1 ) + β k d ( k )
End for
输出 x n + 1
此外:
a)、d)都需要计算 A d k ,需要计算和存储黑塞矩阵A,为了避免大矩阵出现,只计算 A d k 向量:
H v = ∇ θ ( ( ∇ θ ( D K L v π θ k ( π θ k , π θ ′ ) ) ) T ) v = ∇ θ ( ( ∇ θ ( D K L v π θ k ( π θ k , π θ ′ ) ) ) T v ) 即现用一阶梯度和向量 v 点乘后再计算二阶梯度
九、线性搜索 由前所述,TRPO对目标函数进行了一阶近似,对约束条件进行了二阶近似,且将最大散度限制放宽到了平均散度限制,所以根据前一节介绍的算法得到的 π θ n e w 的平均回报未必高于 π θ o l d 的平均回报,或者KL散度可能没有达到限制条件。所以TRPO在每次迭代的最后进行一次线性搜索,以确保找到满足条件,即找到一个最小的非负整数i,使得:
满足KL散度限制,且策略回报有提升,其中 α ∈ ( 0 , 1 ) 是一个决定线性搜索长度的超参数,而i一般按顺序取1,2,3,……直到 θ k + 1 满足条件。
十、TRPO算法流程 初始化策略网络参数 θ 和价值网络参数 ω
for 序列 e=1 → E do:
用当前策略 π θ k 采样轨迹 { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , ⋯ }
根据收集到的数据和价值网络估计每个状态动作对的优势函数 A ( s t , a t )
计算策略目标函数的梯度g
用共轭梯度法计算 x = − F − 1 g
用线性搜索找到一个i,并更新策略网络参数 其 中 θ k + 1 = θ k + α i 2 δ x T F x x , 其 中 i ∈ { 1 , 2 , ⋯ , K } 为提升策略并满足KL距离限制的最小整数
更新价值网络参数(与Actor-Critic中的更新方法相同)
end for
参考资料 John Schulman Trust Region Policy Optimization
张伟楠 沈键 俞勇 《动手学强化学习》 人民邮电出版社
邹伟 鬲玲 刘昱杓 《强化学习》 清华大学出版社
作者:Dreammaker 链接: https://zhuanlan.zhihu.com/p/605886935 来源:知乎
机智的王小鹏 链接: https://space.bilibili.com/169602174