视频链接:www.youtube.com/watch?v=fcS…
TRPO算法重复着两个步骤:
- 近似:我们构建一个 L ( θ ∣ θ o l d ) L(\theta|\theta_{old}) L(θ∣θold)函数,在信赖域内近似于价值函数 J ( θ ) J(\theta) J(θ)。
- 最大化:在信赖域内,找到一组新的参数,使得 L ( θ ∣ θ o l d ) L(\theta|\theta_{old}) L(θ∣θold)最大化。
近似:
V π ( s ) = ∑ a π ( a ∣ s ; θ ) ∗ Q π ( s , a ) = ∑ a π ( a ∣ s ; θ o l d ) π ( a ∣ s ; θ ) π ( a ∣ s ; θ o l d ) ∗ Q π ( s , a ) = E A ~ π ( a ∣ s ; θ o l d ) [ π ( a ∣ s ; θ ) π ( a ∣ s ; θ o l d ) ∗ Q π ( s , a ) ] V_{\pi}(s) = \sum_a \pi(a|s;\theta) * Q_{\pi}(s,a) \\ = \sum_a \pi(a|s;\theta_{old})\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{old})} * Q_{\pi}(s,a) \\ = E_{A~\pi(a|s;\theta_{old})}[\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{old})} * Q_{\pi}(s,a)] Vπ(s)=a∑π(a∣s;θ)∗Qπ(s,a)=a∑π(a∣s;θold)π(a∣s;θold)π(a∣s;θ)∗Qπ(s,a)=EA~π(a∣s;θold)[π(a∣s;θold)π(a∣s;θ)∗Qπ(s,a)]
J ( θ ) = E S [ V π ( S ) ] = E S , A [ π ( A ∣ S ; θ ) π ( A ∣ S ; θ o l d ) ∗ Q π ( S , A ) ] J(\theta) = E_S[V_{\pi}(S)] \\ = E_{S,A}[\frac{\pi(A|S;\theta)}{\pi(A|S;\theta_{old})} * Q_{\pi}(S,A)] J(θ)=ES[Vπ(S)]=ES,A[π(A∣S;θold)π(A∣S;θ)∗Qπ(S,A)]
这是TRPO的最重要的公式。
在实际运用中,我们做蒙特卡洛近似,如果对于旧策略,我们收集到的数据如下:
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,...,s_n,a_n,r_n s1,a1,r1,s2,a2,r2,...,sn,an,rn
公式改变如下:
L ( θ ∣ θ o l d ) = 1 n ∑ i = 1 n π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) ∗ Q π ( s i , a i ) L(\theta|\theta_{old}) = \frac{1}{n}\sum_{i=1}^{n}\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})} * Q_{\pi}(s_i,a_i) L(θ∣θold)=n1i=1∑nπ(ai∣si;θold)π(ai∣si;θ)∗Qπ(si,ai)
这里L就是对J的近似,但这里还无法对L做最大化,原因在于动作价值函数Q我们并不知道是什么,所以我们也要对它做近似。
对于Q是动作价值的期望,我们对它做蒙特卡洛近似,根据折扣函数,可得:
u i = r i + γ r i + 1 + γ 2 r i + 2 . . . + γ n − i r n u_i = r_i + \gamma r_{i+1} + \gamma^2r_{i+2}... + \gamma^{n-i} r_n ui=ri+γri+1+γ2ri+2...+γn−irn
我们可以用这种计算方式来代替Q。我们可以用这种计算方式来代替Q。这里我们也可以把Q换成A,也就是优势函数:
A = Q − V = γ V t + 1 + R t − V t A = Q- V = \gamma V_{t+1} + R_{t} - V_t A=Q−V=γVt+1+Rt−Vt
最大化
有了上面的近似以后,我们对其在信赖域内作最大化:通过调整策略网络参数,使得新的策略网络的奖励期望越大越好。数学公式表达为:
θ n e w ← a r g m a x θ L ( θ ∣ θ o l d ) s . t . θ ∈ N ( θ o l d ) \theta_{new} \leftarrow argmax_{\theta}L(\theta|\theta_{old}) \\ s.t. \theta \in N{(\theta_{old})} θnew←argmaxθL(θ∣θold)s.t.θ∈N(θold)
有很多方式表达两组参数的距离,这里介绍两种:
-
二范数距离,即两者的欧式距离,平方和后开方:
∣ ∣ θ − θ o l d ∣ ∣ < Δ ||\theta - \theta_{old}|| < \Delta ∣∣θ−θold∣∣<Δ -
KL散度:这不是用来衡量两组参数的,而是用来衡量网络输出的概率分布的,概率分布的区别越大,KL散度越大,区别越小越趋近于0,也叫相对熵。
离散形式
K L ( P ∣ ∣ Q ) = ∑ P ( x ) l o g P ( x ) Q ( x ) KL(P||Q) = \sum P(x)log \frac{P(x)}{Q(x)} KL(P∣∣Q)=∑P(x)logQ(x)P(x)
连续形式:
K L ( P ∣ ∣ Q ) = ∫ P ( x ) l o g P ( x ) Q ( x ) d x KL(P||Q) = \int P(x)log \frac{P(x)}{Q(x)}dx KL(P∣∣Q)=∫P(x)logQ(x)P(x)dx
那么这里的约束条件就是:
1 n ∑ i = 1 n K L [ π ( . ∣ s i ; θ o l d ) ∣ ∣ π ( . ∣ s i ; θ ) ] < Δ \frac{1}{n} \sum_{i=1}^{n} KL[\pi(.|s_i;\theta_{old})||\pi(.|s_i;\theta)] < \Delta n1i=1∑nKL[π(.∣si;θold)∣∣π(.∣si;θ)]<Δ
至此,游戏完成了一轮episode,我们进行了一次参数更新,往往更新进行很多次才能得到一个比较好的策略网络。
TRPO的优点是曲线稳定不会剧烈波动,对学习率设置不会太敏感。而且观察到更少的奖励就能达到跟策略梯度算法相同的表现。