强化学习之TRPO

视频链接:https://www.youtube.com/watch?v=fcSYiyvPjm4&list=PLp0tvPwd1T7AD822A9tJ-jfQnMtSKh_Rz&index=3&ab_channel=ShusenWang

TRPO算法重复着两个步骤:

  1. 近似:我们构建一个 L ( θ ∣ θ o l d ) L(\theta|\theta_{old}) L(θθold)函数,在信赖域内近似于价值函数 J ( θ ) J(\theta) J(θ)
  2. 最大化:在信赖域内,找到一组新的参数,使得 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π(as;θ)Qπ(s,a)=aπ(as;θold)π(as;θold)π(as;θ)Qπ(s,a)=EAπ(as;θold)[π(as;θold)π(as;θ)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[π(AS;θold)π(AS;θ)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=1nπ(aisi;θold)π(aisi;θ)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...+γnirn
我们可以用这种计算方式来代替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=QV=γVt+1+RtVt

最大化

有了上面的近似以后,我们对其在信赖域内作最大化:通过调整策略网络参数,使得新的策略网络的奖励期望越大越好。数学公式表达为:
θ 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})} θnewargmaxθL(θθold)s.t.θN(θold)
有很多方式表达两组参数的距离,这里介绍两种:

  1. 二范数距离,即两者的欧式距离,平方和后开方:
    ∣ ∣ θ − θ o l d ∣ ∣ < Δ ||\theta - \theta_{old}|| < \Delta θθold<Δ

  2. 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(PQ)=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(PQ)=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=1nKL[π(.si;θold)π(.si;θ)]<Δ
至此,游戏完成了一轮episode,我们进行了一次参数更新,往往更新进行很多次才能得到一个比较好的策略网络。

TRPO的优点是曲线稳定不会剧烈波动,对学习率设置不会太敏感。而且观察到更少的奖励就能达到跟策略梯度算法相同的表现。

猜你喜欢

转载自blog.csdn.net/tianjuewudi/article/details/120191097