Conservative Q-Learning(CQL)保守Q学习(二)-CQL2(下界V值估计),CQL(R)与CQL(H)

本文内容为《Conservative Q-Learning(CQL)保守Q学习(一)-CQL1(下界Q值估计)》的续写,限于篇幅,笔者无法将他们写在一起,必须分开来写,请各位读者见谅,本文将介绍CQL2的算法及其变种算法,并给出理论证明。
最后在2.4部分笔者给出了 C Q L ( R ) CQL(R) CQL(R) C Q L ( H ) CQL(H) CQL(H)两种CQL在实际应用中的算法形式。那一部分理论部分很少,但是原理是基于CQL1和CQL2搭建。
本文的读者若想了解CQL2原理详情,请一定先阅读CQL1的前置内容,否则很难看懂本文的原理东西!

而若本文的读者如想直接应用,请直接看2.4部分 C Q L ( R ) CQL(R) CQL(R) C Q L ( H ) CQL(H) CQL(H)应用即可,无需看CQL2的理论部分。

2.2、CQL-version2


CQL定理2:对于特定给好的分布 μ ( a ∣ s ) = π ( a ∣ s ) \mu(a|s)=\pi(a|s) μ(as)=π(as),因子 α > 0 \alpha>0 α>0。满足: s u p p ( μ ) ⊂ s u p p ( π β ) supp(\mu)\subset supp(\pi_\beta) supp(μ)supp(πβ)(即 π β = 0 \pi_\beta=0 πβ=0 → \rightarrow μ = 0 \mu=0 μ=0)时,
满足在高概率条件成立中的引理1条件。在因子 α \alpha α足够大条件下,下列CQL2估计出的Q值满足: V ^ π ( s , a ) ≤ V π ( s , a ) ∀ ( s , a ) \hat{V}^\pi(s,a) \leq V^\pi(s,a) \forall(s,a) V^π(s,a)Vπ(s,a)(s,a)额外的,若 B ^ π = B π \hat{B}^\pi=B^\pi B^π=Bπ即无采样误差存在,此时无需满足引理1的任何条件。对于任意 α > 0 \alpha>0 α>0,均有 V ^ π ( s , a ) ≤ V π ( s , a ) ∀ ( s , a ) \hat{V}^\pi(s,a) \leq V^\pi(s,a) \forall(s,a) V^π(s,a)Vπ(s,a)(s,a)
CQL2更新方式为:
Q k + 1 ( s , a ) ← a r g m i n Q [ 1 2 E s , a [ ( B ^ π Q k ( s , a ) − Q ( s , a ) ) 2 ] + α ( E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ~ D , a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) ] Q^{k+1}(s,a)\leftarrow argmin_Q[\frac{1}{2}E_{s,a}[(\hat{B}^{{\pi}}Q^k(s,a)-Q(s,a))^2]+\alpha (E_{s~D,a~\mu(a|s)}[Q(s,a)]-E_{s~D,a~\pi_\beta(a|s)}[Q(s,a)])] Qk+1(s,a)argminQ[21Es,a[(B^πQk(s,a)Q(s,a))2]+α(EsD,aμ(as)[Q(s,a)]EsD,aπβ(as)[Q(s,a)])]
证明:
使用和CQL1同样的证明方法,即令 L ( Q ) = [ 1 2 E s , a [ ( B ^ π Q k ( s , a ) − Q ( s , a ) ) 2 ] + α ( E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ~ D , a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) ] L(Q)=[\frac{1}{2}E_{s,a}[(\hat{B}^{{\pi}}Q^k(s,a)-Q(s,a))^2]+\alpha (E_{s~D,a~\mu(a|s)}[Q(s,a)]-E_{s~D,a~\pi_\beta(a|s)}[Q(s,a)])] L(Q)=[21Es,a[(B^πQk(s,a)Q(s,a))2]+α(EsD,aμ(as)[Q(s,a)]EsD,aπβ(as)[Q(s,a)])],并令 ∇ Q L ( Q ) = 0 \nabla_QL(Q)=0 QL(Q)=0求解 Q Q Q即可。
∇ Q L ( Q ) = − ∑ s ′ T ^ ( s ′ ∣ s , a ) P ( s , a ) [ r ^ ( s , a ) + γ ∑ a ′ π ( a ′ ∣ s ′ ) Q k ( s ′ , a ′ ) − Q ( s , a ) ] + α d π β ( s ) ( μ ( a ∣ s ) − π β ( a s ) ) \nabla_QL(Q)=-\sum_{s'}\hat{T}(s'|s,a)P(s,a)[\hat{r}(s,a)+\gamma \sum_{a'}{\pi}(a'|s')Q^k(s',a')-Q(s,a)]+\alpha d^{\pi_\beta}(s)(\mu(a|s)-\pi_\beta(a_s)) QL(Q)=sT^(ss,a)P(s,a)[r^(s,a)+γaπ(as)Qk(s,a)Q(s,a)]+αdπβ(s)(μ(as)πβ(as))令上式=0会得到
α d π β ( s ) ( μ ( a ∣ s ) − π β ( a ∣ s ) ) P ( s , a ) = r ^ ( s , a ) + γ E s ′ ~ T ^ , a ′ ~ π [ Q k ( s ′ , a ′ ) ] − Q ( s , a ) \frac{\alpha d^{\pi_\beta}(s)(\mu(a|s)-\pi_{\beta}(a|s))}{P(s,a)}=\hat{r}(s,a)+\gamma E_{s'~\hat{T},a'~{\pi}}[Q^k(s',a')]-Q(s,a) P(s,a)αdπβ(s)(μ(as)πβ(as))=r^(s,a)+γEsT^aπ[Qk(s,a)]Q(s,a)和CQL1相同办法整理得到:
( C Q L 2 ) Q k + 1 ( s , a ) = B ^ π Q k ( s , a ) − α [ μ ( a ∣ s ) π β ( a ∣ s ) − 1 ] (CQL2)Q^{k+1}(s,a)=\hat{B}^{{\pi}}Q^k(s,a)-\alpha[\frac{\mu(a|s)}{\pi_\beta(a|s)}-1] (CQL2)Qk+1(s,a)=B^πQk(s,a)α[πβ(as)μ(as)1]同理完全和CQL1相同的办法得到:

Q ^ π ( s t , a t ) ≤ Q π ( s t , a t ) + ( I − P π ) − 1 [ ∣ C r , δ ∣ + ∣ γ C T , δ R 1 − γ ∣ ∑ s , a ∈ D 1 s = s t , a = a t − α [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] ] \hat{Q}^{\pi}(s_t,a_t)\leq Q^\pi(s_t,a_t)+(I-P^\pi)^{-1}[\frac{|C_{r,\delta}|+|\frac{\gamma C_{T,\delta}R}{1-\gamma}|}{\sqrt{\sum_{s,a \in D}1_{s=s_t,a=a_t}}}-\alpha[\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1]] Q^π(st,at)Qπ(st,at)+(IPπ)1[s,aD1s=st,a=at Cr,δ+1γγCT,δRα[πβ(atst)μ(atst)1]]

但是此时并没有办法去保证Q值的点态下界性,因为注意到 [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] [\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1] [πβ(atst)μ(atst)1]这一项取决于 μ \mu μ的选取而不一定向CQL1一样是恒正的,虽然不能使得Q保证每一点都是点态下界估计,但是它却可以保证V值是下界估计。
对CQL2两边分别先令 k → ∞ k\rightarrow \infty k再对 a t a_t at取期望即可得到 V V V值,会有:
V ^ π ( s ) = B ^ π V ^ π ( s ) − E a ~ π [ α [ μ ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] \hat{V}^{\pi}(s)=\hat{B}^{\pi}\hat{V}^{\pi}(s)-E_{a~\pi}[\alpha[\frac{\mu(a|s)}{\pi_\beta(a|s)}-1]] V^π(s)=B^πV^π(s)Eaπ[α[πβ(as)μ(as)1]]
下面说明虽然保证不了 [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] [\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1] [πβ(atst)μ(atst)1]恒正,但是却能保证选取某个特定的 μ = π \mu=\pi μ=π下, E a ~ π [ [ μ ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] E_{a~\pi}[[\frac{\mu(a|s)}{\pi_\beta(a|s)}-1]] Eaπ[[πβ(as)μ(as)1]]恒正。

事实上:
E a ~ π [ [ π ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] = ∑ a π ( a ∣ s ) [ π ( a ∣ s ) − π β ( a ∣ s ) π β ( a ∣ s ) ] E_{a~\pi}[[\frac{\pi(a|s)}{\pi_\beta(a|s)}-1]]=\sum_a\pi(a|s)[\frac{\pi(a|s)-\pi_\beta(a|s)}{\pi_\beta(a|s)}] Eaπ[[πβ(as)π(as)1]]=aπ(as)[πβ(as)π(as)πβ(as)]
∑ a π ( a ∣ s ) [ π ( a ∣ s ) − π β ( a ∣ s ) π β ( a ∣ s ) ] = ∑ a [ π ( a ∣ s ) − π β ( a ∣ s ) + π β ( a ∣ s ) ] [ π ( a ∣ s ) − π β ( a ∣ s ) π β ( a ∣ s ) ] \sum_a\pi(a|s)[\frac{\pi(a|s)-\pi_\beta(a|s)}{\pi_\beta(a|s)}]=\sum_a[\pi(a|s)-\pi_\beta(a|s)+\pi_\beta(a|s)][\frac{\pi(a|s)-\pi_\beta(a|s)}{\pi_\beta(a|s)}] aπ(as)[πβ(as)π(as)πβ(as)]=a[π(as)πβ(as)+πβ(as)][πβ(as)π(as)πβ(as)]
E a ~ π [ [ π ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] = ∑ a [ ( π ( a ∣ s ) − π β ( a ∣ s ) ) 2 π β ( a ∣ s ) ] + 0 ≥ 0 E_{a~\pi}[[\frac{\pi(a|s)}{\pi_\beta(a|s)}-1]]=\sum_a[\frac{(\pi(a|s)-\pi_\beta(a|s))^2}{\pi_\beta(a|s)}]+0\ge0 Eaπ[[πβ(as)π(as)1]]=a[πβ(as)(π(as)πβ(as))2]+00故和上述分析方式一样,我们会有:

V ^ π ( s t ) ≤ V π ( s t ) + ( I − P π ) − 1 [ E a ~ π [ ∣ C r , δ ∣ + ∣ γ C T , δ R 1 − γ ∣ ∑ s , a ∈ D 1 s = s t , a = a t ] − α E a ~ π [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] ] \hat{V}^{\pi}(s_t)\leq V^\pi(s_t)+(I-P^\pi)^{-1}[E_{a~\pi}[\frac{|C_{r,\delta}|+|\frac{\gamma C_{T,\delta}R}{1-\gamma}|}{\sqrt{\sum_{s,a \in D}1_{s=s_t,a=a_t}}}]-\alpha E_{a~\pi}[\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1]] V^π(st)Vπ(st)+(IPπ)1[Eaπ[s,aD1s=st,a=at Cr,δ+1γγCT,δR]αEaπ[πβ(atst)μ(atst)1]]

V ^ π ( s t ) ≤ V π ( s t ) + ( I − P π ) − 1 α E a ~ π [ − μ ( a t ∣ s t ) π β ( a t ∣ s t ) ] \hat{V}^{\pi}(s_t)\leq V^\pi(s_t)+(I-P^\pi)^{-1}\alpha E_{a~\pi}[-\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}] V^π(st)Vπ(st)+(IPπ)1αEaπ[πβ(atst)μ(atst)]
1.当存在采样误差时,并且 α \alpha α足够大时候可以保证第二项为负的,这时有
V ^ π ( s t ) ≤ V π ( s t ) \hat{V}^{\pi}(s_t)\leq V^\pi(s_t) V^π(st)Vπ(st)恒成立。
有趣的是,这个足够大的 α \alpha α和之前计算Q一样,是可以计算的。事实上读者们会发现当:
E a t ~ π [ ∣ C r , δ ∣ + ∣ γ C T , δ R 1 − γ ∣ ∑ s , a ∈ D 1 s = s t , a = a t ] − α E a t ~ π [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) ] < 0 E_{a_t~\pi}[\frac{|C_{r,\delta}|+|\frac{\gamma C_{T,\delta}R}{1-\gamma}|}{\sqrt{\sum_{s,a \in D}1_{s=s_t,a=a_t}}}]-\alpha E_{a_t~\pi}[\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}]<0 Eatπ[s,aD1s=st,a=at Cr,δ+1γγCT,δR]αEatπ[πβ(atst)μ(atst)]<0
α ≥ m a x s t , a t ∣ C r , δ ∣ + ∣ γ C T , δ R 1 − γ ∣ ∑ s , a ∈ D 1 s = s t , a = a t m a x s t ∑ a t π ( a t ∣ s t ) π β ( a t ∣ s t ) μ ( a t ∣ s t ) \alpha \geq max_{s_t,a_t}\frac{|C_{r,\delta}|+|\frac{\gamma C_{T,\delta}R}{1-\gamma}|}{\sqrt{\sum_{s,a \in D}1_{s=s_t,a=a_t}}}max_{s_t}\sum_{a_t}\pi(a_t|s_t)\frac{\pi_\beta(a_t|s_t)}{\mu(a_t|s_t)} αmaxst,ats,aD1s=st,a=at Cr,δ+1γγCT,δRmaxstatπ(atst)μ(atst)πβ(atst)2.当不存在采样误差时,注意到第二项已经恒负了,而无需调节 α \alpha α,这时有
V ^ π ( s t ) ≤ V π ( s t ) \hat{V}^{\pi}(s_t)\leq V^\pi(s_t) V^π(st)Vπ(st)恒成立。
证毕
笔者本部分证对应于下图所示原文的Theorem 3.2,笔者在原文基础上进行了修正和更改,符号用的不一样,原文中符号存在错误的情况。
Conservative Q-Learning(CQL)保守Q学习(二)-CQL2(下界V值估计),CQL(R)与CQL(H)_第1张图片

2.3、CQL应用算法(算法应用的原理内容)

2.1和2.2笔者分别介绍了CQL1(Q值下界估计)和CQL2(V值下界估计)这两个改进方法,在这里先进行一下总结,带领读者进行一下回顾。
首先是Q值下界估计算法:
Q k + 1 ( s , a ) ← a r g m i n Q [ 1 2 E s , a [ ( B ^ π Q k ( s , a ) − Q ( s , a ) ) 2 ] + α E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] ] Q^{k+1}(s,a)\leftarrow argmin_Q[\frac{1}{2}E_{s,a}[(\hat{B}^{{\pi}}Q^k(s,a)-Q(s,a))^2]+\alpha E_{s~D,a~\mu(a|s)}[Q(s,a)]] Qk+1(s,a)argminQ[21Es,a[(B^πQk(s,a)Q(s,a))2]+αEsD,aμ(as)[Q(s,a)]]
其次是V值下界估计算法
Q k + 1 ( s , a ) ← a r g m i n Q [ 1 2 E s , a [ ( B ^ π Q k ( s , a ) − Q ( s , a ) ) 2 ] + α ( E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ~ D , a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) ] Q^{k+1}(s,a)\leftarrow argmin_Q[\frac{1}{2}E_{s,a}[(\hat{B}^{{\pi}}Q^k(s,a)-Q(s,a))^2]+\alpha (E_{s~D,a~\mu(a|s)}[Q(s,a)]-E_{s~D,a~\pi_\beta(a|s)}[Q(s,a)])] Qk+1(s,a)argminQ[21Es,a[(B^πQk(s,a)Q(s,a))2]+α(EsD,aμ(as)[Q(s,a)]EsD,aπβ(as)[Q(s,a)])]
笔者已经分别证明了二者的逐点下界性,说明这种Q估计结果为估计一个Q值/V值的下界,从而避免了过估计的问题,但是在实际应用中,存在另一个问题,如何去选择合适的 μ ( a ∣ s ) \mu(a|s) μ(as)才能进行应用?并且注意到这两个公式中的 π {\pi} π是不可知的。而且还注意到在V值下界估计的时候,我们将 μ \mu μ取成了 π \pi π,而这显然不可取的,因为我们根本不知道最终策略收敛后的 π \pi π,为了解决这个问题,Kumar想到可否将 μ ( a ∣ s ) \mu(a|s) μ(as)用于近似 π ^ k ( a ∣ s ) \hat{\pi}^k(a|s) π^k(as),但是这样就需要保证仍旧可以估计V的下界,Kumar证明了这一点。

CQL定理3:若策略梯度更新的非常缓慢(足够小的速度更新),不考虑采样误差,即 B ^ π = B π \hat{B}^\pi=B^\pi B^π=Bπ,那么选取 μ = π ^ k \mu=\hat{\pi}^k μ=π^k,可以保证在迭代更新中的每一步时,都有 V ^ k + 1 ( s ) ≤ V k + 1 ( s ) \hat{V}^{k+1}(s)\leq V^{k+1}(s) V^k+1(s)Vk+1(s)


证明:先重申 V ^ k ( s ) = E a ~ π Q k ( s , a ) \hat{V}^k(s)=E_{a~\pi}Q^k(s,a) V^k(s)=EaπQk(s,a)

由于
Q ^ k + 1 ( s , a ) = B π Q ^ k ( s , a ) − α [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] \hat{Q}^{k+1}(s,a)=B^{{\pi}}\hat{Q}^k(s,a)-\alpha[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1] Q^k+1(s,a)=BπQ^k(s,a)α[πβ(as)π^k(as)1]两边分别对 a ~ π ^ k + 1 a~{\hat{\pi}^{k+1}} aπ^k+1进行积分会得到:
E a ~ π ^ k + 1 [ Q k + 1 ( s , a ) ] = E a ~ π ^ k + 1 [ B π Q k ( s , a ) ] − E a ~ π ^ k + 1 [ α [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] E_{a~{\hat{\pi}^{k+1}}}[Q^{k+1}(s,a)]=E_{a~{\hat{\pi}^{k+1}}}[B^{{\pi}}Q^k(s,a)]-E_{a~{\hat{\pi}^{k+1}}}[\alpha[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1]] Eaπ^k+1[Qk+1(s,a)]=Eaπ^k+1[BπQk(s,a)]Eaπ^k+1[α[πβ(as)π^k(as)1]]而注意这一项即可:
E a ~ π ^ k + 1 [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] = E a ~ π ^ k [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] + ∑ a ( π ^ k + 1 ( a ∣ s ) − π ^ k ( a ∣ s ) ) [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] E_{a~{\hat{\pi}^{k+1}}}[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1]= E_{a~{\hat{\pi}^{k}}}[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1]+\sum_a(\hat{\pi}^{k+1}(a|s)-{\hat{\pi}^{k}}(a|s))[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1] Eaπ^k+1[πβ(as)π^k(as)1]=Eaπ^k[πβ(as)π^k(as)1]+a(π^k+1(as)π^k(as))[πβ(as)π^k(as)1]
这里的第一项恒正,在2.2中已经证明过,第二项为:
∑ a ( π ^ k + 1 ( a ∣ s ) − π ^ k ( a ∣ s ) ) [ π ^ k ( a ∣ s ) π β ( a ∣ s ) − 1 ] \sum_a(\hat{\pi}^{k+1}(a|s)-{\hat{\pi}^{k}}(a|s))[\frac{\hat{\pi}^k(a|s)}{\pi_\beta(a|s)}-1] a(π^k+1(as)π^k(as))[πβ(as)π^k(as)1]这即当策略梯度更新的非常缓慢( π ^ k + 1 \hat{\pi}^{k+1} π^k+1 π ^ k \hat{\pi}^{k} π^k变化差异没有那么大时候),可以保证:
E a ~ π ^ k + 1 [ Q ^ k + 1 ( s , a ) ] ≤ E a ~ π ^ k + 1 [ B π Q ^ k ( s , a ) ] E_{a~{\hat{\pi}^{k+1}}}[\hat{Q}^{k+1}(s,a)]\leq E_{a~{\hat{\pi}^{k+1}}}[B^{{\pi}}\hat{Q}^k(s,a)] Eaπ^k+1[Q^k+1(s,a)]Eaπ^k+1[BπQ^k(s,a)]即这保证了每一步估计的 V V V都是变小的即 V ^ k + 1 ( s ) ≤ V k + 1 ( s ) \hat{V}^{k+1}(s)\leq V^{k+1}(s) V^k+1(s)Vk+1(s)
而且不难可以推出下式:
V ^ π ( s ) ≤ V π ( s ) \hat{V}^\pi(s)\leq V^\pi(s) V^π(s)Vπ(s)

2.4 、CQL应用算法

根据上述结论,Kumar给出了一种优化的办法来获得 μ \mu μ而无需人为寻求,这需要有一个先验分布 ρ \rho ρ来正则化,而为了方便简化式子,Kumar等人将 ρ \rho ρ取成了均匀分布(不知道为什么可以这样取,以及为什么增添的KL散度),下面是实际应用时候CQL式:

CQL应用式,作者称下式为 C Q L ( R ) CQL(R) CQL(R)
m i n Q ( m a x μ [ 1 2 E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] + α ( E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ~ D , a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) − K L ( μ ∣ ∣ ρ ) ] ) min_Q(max_\mu[\frac{1}{2}E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2]+\alpha (E_{s~D,a~\mu(a|s)}[Q(s,a)]-E_{s~D,a~\pi_\beta(a|s)}[Q(s,a)])-KL(\mu||\rho)]) minQ(maxμ[21Es,a[(B^π^kQk(s,a)Q(s,a))2]+α(EsD,aμ(as)[Q(s,a)]EsD,aπβ(as)[Q(s,a)])KL(μ∣∣ρ)])

注意到上述项目中要先对 μ \mu μ取最大,后对 Q Q Q取最小,具有先后顺序,注意到内部关于 μ \mu μ只有两项,那么首先即计算:
m a x μ [ E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − K L ( μ ∣ ∣ ρ ) ] max_\mu[E_{s~D,a~\mu(a|s)}[Q(s,a)]-KL(\mu|| \rho)] maxμ[EsD,aμ(as)[Q(s,a)]KL(μ∣∣ρ)]但是注意到是有等式限制条件即 ∑ a μ ( a ∣ s ) = 1 \sum_a\mu(a|s)=1 aμ(as)=1
这可以用我们熟知的Lagrange乘子法求解。设 L 1 ^ \hat{L_1} L1^为乘子
L ( μ ) = E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − K L ( μ ∣ ∣ ρ ) + L 1 ^ ( ∑ a μ ( a ∣ s ) − 1 ) L(\mu)=E_{s~D,a~\mu(a|s)}[Q(s,a)]-KL(\mu|| \rho)+\hat{L_1}(\sum_a\mu(a|s)-1) L(μ)=EsD,aμ(as)[Q(s,a)]KL(μ∣∣ρ)+L1^(aμ(as)1)
L ( μ ) = ∑ s d β ( s ) μ ( a ∣ s ) Q ( s , a ) − ∑ a μ ( a ∣ s ) l o g [ μ ( a ∣ s ) ρ ( a ∣ s ) ] + L 1 ^ ( ∑ a μ ( a ∣ s ) − 1 ) L(\mu)=\sum_s d_\beta(s)\mu(a|s)Q(s,a)-\sum_a \mu(a|s)log[\frac{\mu(a|s)}{\rho(a|s)}]+\hat{L_1}(\sum_a\mu(a|s)-1) L(μ)=sdβ(s)μ(as)Q(s,a)aμ(as)log[ρ(as)μ(as)]+L1^(aμ(as)1)
∇ μ L ( μ ) = Q ( s , a ) − l o g [ μ ( a ∣ s ) ρ ( a ∣ s ) ] + L 1 ^ − 1 = 0 \nabla_\mu L(\mu)=Q(s,a)-log[\frac{\mu(a|s)}{\rho(a|s)}]+\hat{L_1}-1=0 μL(μ)=Q(s,a)log[ρ(as)μ(as)]+L1^1=0
∇ L ^ 1 L ( μ ) = ( ∑ a μ ( a ∣ s ) − 1 ) = 0 \nabla_{\hat{L}_1} L(\mu)=(\sum_a\mu(a|s)-1)=0 L^1L(μ)=(aμ(as)1)=0从第一个梯度可知下式,并代入到第二个梯度中:
ρ ( a ∣ s ) e Q ( s , a ) + L 1 ^ − 1 = μ ( s ∣ a ) \rho(a|s) e^{Q(s,a)+\hat{L_1}-1}=\mu(s|a) ρ(as)eQ(s,a)+L1^1=μ(sa)
l o g ( e L 1 − 1 ^ ∑ a ρ ( a ∣ s ) e Q ( s , a ) ) = l o g ( 1 ) = 0 → L 1 ^ = 1 − l o g ∑ a ρ ( a ∣ s ) e Q ( s , a ) log(e^{\hat{L_1-1}}\sum_a\rho(a|s) e^{Q(s,a)})=log(1)=0\rightarrow \hat{L_1}=1-log\sum_a\rho(a|s) e^{Q(s,a)} log(eL11^aρ(as)eQ(s,a))=log(1)=0L1^=1logaρ(as)eQ(s,a)代入 L 1 ^ \hat{L_1} L1^可得求解的分布为:
μ ( a ∣ s ) = ρ ( a ∣ s ) e Q ( s , a ) ∑ a ρ ( a ∣ s ) e Q ( s , a ) \mu(a|s)=\frac{\rho(a|s) e^{Q(s,a)}}{\sum_a\rho(a|s) e^{Q(s,a)}} μ(as)=aρ(as)eQ(s,a)ρ(as)eQ(s,a)Kumar等人注意到,在当先验分布 ρ ( a ∣ s ) = 1 ∣ a ∣ \rho(a|s)=\frac{1}{|a|} ρ(as)=a1为均匀分布, 其中, ∣ a ∣ |a| a代表抽样动作的总个数,这时会发现
μ ( a ∣ s ) = e Q ( s , a ) ∑ a e Q ( s , a ) \mu(a|s)=\frac{e^{Q(s,a)}}{\sum_a e^{Q(s,a)}} μ(as)=aeQ(s,a)eQ(s,a)此时,待最大化的原式变化为:
E s ~ D , a ~ μ ( a ∣ s ) [ Q ( s , a ) ] − K L ( μ ∣ ∣ ρ ) = ∑ s d β ( s ) ∑ a ~ μ [ Q ( s , a ) − l o g μ ( a ∣ s ) ρ ( a ∣ s ) ] E_{s~D,a~\mu(a|s)}[Q(s,a)]-KL(\mu|| \rho)=\sum_sd_\beta(s)\sum_{a~\mu}[Q(s,a)-log\frac{\mu(a|s)}{\rho(a|s)}] EsD,aμ(as)[Q(s,a)]KL(μ∣∣ρ)=sdβ(s)aμ[Q(s,a)logρ(as)μ(as)]注意到这一项
∑ a ~ μ [ Q ( s , a ) − l o g μ ( a ∣ s ) ρ ( a ∣ s ) ] = ∑ a ~ μ [ Q ( s , a ) − l o g μ ( a ∣ s ) + l o g ρ ( a ∣ s ) ] \sum_{a~\mu}[Q(s,a)-log\frac{\mu(a|s)}{\rho(a|s)}]=\sum_{a~\mu}[Q(s,a)-log\mu(a|s)+log{\rho(a|s)}] aμ[Q(s,a)logρ(as)μ(as)]=aμ[Q(s,a)lo(as)+logρ(as)]代入 μ ( a ∣ s ) = ρ ( a ∣ s ) e Q ( s , a ) ∑ a ρ ( a ∣ s ) e Q ( s , a ) \mu(a|s)=\frac{\rho(a|s) e^{Q(s,a)}}{\sum_a\rho(a|s) e^{Q(s,a)}} μ(as)=aρ(as)eQ(s,a)ρ(as)eQ(s,a)上式可被化简为
∑ a ~ μ [ Q ( s , a ) − l o g ρ ( a ∣ s ) − Q ( s , a ) + l o g ρ ( a ∣ s ) + l o g ∑ a ρ ( a ∣ s ) e Q ( s , a ) ] \sum_{a~\mu}[Q(s,a)-log\rho(a|s)-Q(s,a)+log\rho(a|s)+log\sum_a\rho(a|s) e^{Q(s,a)}] aμ[Q(s,a)logρ(as)Q(s,a)+logρ(as)+logaρ(as)eQ(s,a)]进一步简化发现,当 μ \mu μ满足正态分布假设时,这即
∑ a ~ μ [ l o g ∑ a ′ 1 ∣ a ′ ∣ e Q ( s , a ′ ) ] = l o g ∑ a ′ 1 ∣ a ′ ∣ e Q ( s , a ′ ) = l o g ∑ a ′ e Q ( s , a ′ ) − l o g ∣ a ′ ∣ \sum_{a~\mu}[log\sum_{a'}\frac{1}{|a'|} e^{Q(s,a')}]=log\sum_{a'}\frac{1}{|a'|} e^{Q(s,a')}=log\sum_{a'}e^{Q(s,a')}-log|a'| aμ[logaa1eQ(s,a)]=logaa1eQ(s,a)=logaeQ(s,a)loga此时,我们注意到CQL应用式变为了
m i n Q ( [ 1 2 E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] + α E s ~ D ( l o g ∑ a ′ 1 ∣ a ′ ∣ e Q ( s , a ′ ) − E a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) min_Q([\frac{1}{2}E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2]+\alpha E_{s~D}(log\sum_{a'}\frac{1}{|a'|} e^{Q(s,a')}-E_{a~\pi_\beta(a|s)}[Q(s,a)]) minQ([21Es,a[(B^π^kQk(s,a)Q(s,a))2]+αEsD(logaa1eQ(s,a)Eaπβ(as)[Q(s,a)])注意到, ∣ a ′ ∣ |a'| a与带优化项目无关。因此最终应用在实际的CQL变为

应用到实际中的CQL,作者称下式为 C Q L ( H ) CQL(H) CQL(H):
m i n Q ( [ 1 2 E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] + α E s ~ D ( l o g ∑ a ′ e Q ( s , a ′ ) − E a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) min_Q([\frac{1}{2}E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2]+\alpha E_{s~D}(log\sum_{a'} e^{Q(s,a')}-E_{a~\pi_\beta(a|s)}[Q(s,a)]) minQ([21Es,a[(B^π^kQk(s,a)Q(s,a))2]+αEsD(logaeQ(s,a)Eaπβ(as)[Q(s,a)])

笔者先描述原文作者给的CQL修正部分,笔者认为是有问题的,欢迎各位能够为笔者解答!

#随机选取一些random动作
random_actions_tensor = torch.FloatTensor(q2_pred.shape[0] * self.num_random, actions.shape[-1]).uniform_(-1, 1)#.cuda()
#从Policy-Network根据当前状态s选取一些动作a
curr_actions_tensor, curr_log_pis = self._get_policy_actions(obs, num_actions=self.num_random, network=self.policy)
#从Policy-Network根据下一个状态s+1选取一些动作a+1
new_curr_actions_tensor, new_log_pis = self._get_policy_actions(next_obs, num_actions=self.num_random, network=self.policy)
#计算Q(s,random),Q(s,predict_a),Q(s,predict_a+1)[笔者这里对代码存在疑问1]
q1_rand = self._get_tensor_values(obs, random_actions_tensor, network=self.qf1)
q1_curr_actions = self._get_tensor_values(obs, curr_actions_tensor, network=self.qf1)
q1_next_actions = self._get_tensor_values(obs, new_curr_actions_tensor, network=self.qf1)
#合并这四个Q变为[Q(s,random),Q(s,a),Q(s,predict_a),Q(s,predict_a+1)]
cat_q1 = torch.cat([q1_rand, q1_pred.unsqueeze(1), q1_next_actions,q1_curr_actions], dim=1)

下面开始计算的是 α E s ~ D ( l o g ∑ a ′ e Q ( s , a ′ ) − E a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) \alpha E_{s~D}(log\sum_{a'} e^{Q(s,a')}-E_{a~\pi_\beta(a|s)}[Q(s,a)]) αEsD(logaeQ(s,a)Eaπβ(as)[Q(s,a)])

##计算CQL(H)中的logsumexp
min_qf1_loss=torch.logsumexp(cat_q1 / self.temp, dim=1,).mean() * self.min_q_weight * self.temp
##计算CQL(H)中的logsumexp-E_a~\pi_beta[Q(s,a)]
min_qf1_loss = min_qf1_loss - q1_pred.mean() * self.min_q_weight

最后求和 α E s ~ D ( l o g ∑ a ′ e Q ( s , a ′ ) − E a ~ π β ( a ∣ s ) [ Q ( s , a ) ] ) + [ 1 2 E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] \alpha E_{s~D}(log\sum_{a'} e^{Q(s,a')}-E_{a~\pi_\beta(a|s)}[Q(s,a)])+[\frac{1}{2}E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2] αEsD(logaeQ(s,a)Eaπβ(as)[Q(s,a)])+[21Es,a[(B^π^kQk(s,a)Q(s,a))2]并执行梯度更新。

 qf1_loss = qf1_loss + min_qf1_loss
笔者对此代码有如下疑问:


1.作者在源代码中使用了如下loss来代替,而没有乘0.5,这样会不会影响最小值,笔者认为有可能的。

[ 1 2 E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] → E s , a [ ( B ^ π ^ k Q k ( s , a ) − Q ( s , a ) ) 2 ] [\frac{1}{2}E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2]\rightarrow E_{s,a}[(\hat{B}^{\hat{\pi}^k}Q^k(s,a)-Q(s,a))^2] [21Es,a[(B^π^kQk(s,a)Q(s,a))2]Es,a[(B^π^kQk(s,a)Q(s,a))2]
2.作者在源代码中使用了这样一个值:在q1_next_actions = self._get_tensor_values(obs, new_curr_actions_tensor, network=self.qf1)这一部分,它实际上代表着如下公式,但是笔者认为,这是没有实际意义的,可能作者想表达采样的意思,但是这样很容易让人费解:

Q ( s t , a t + 1 ) Q(s_{t},a_{t+1}) Q(st,at+1)笔者若收到Kumar的回复会第一时间更新内容,并解决疑惑,也非常欢迎广大同行和学者可以为笔者解决这个疑惑。笔者后续会更新CQL的实现代码,欢迎各位持续关注

你可能感兴趣的:(学习,算法,机器学习)