本文内容为《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的理论部分。
CQL定理2:对于特定给好的分布 μ ( a ∣ s ) = π ( a ∣ s ) \mu(a|s)=\pi(a|s) μ(a∣s)=π(a∣s),因子 α > 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]+α(Es~D,a~μ(a∣s)[Q(s,a)]−Es~D,a~πβ(a∣s)[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]+α(Es~D,a~μ(a∣s)[Q(s,a)]−Es~D,a~πβ(a∣s)[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)=−s′∑T^(s′∣s,a)P(s,a)[r^(s,a)+γa′∑π(a′∣s′)Qk(s′,a′)−Q(s,a)]+αdπβ(s)(μ(a∣s)−πβ(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)(μ(a∣s)−πβ(a∣s))=r^(s,a)+γEs′~T^,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)−α[πβ(a∣s)μ(a∣s)−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)+(I−Pπ)−1[∑s,a∈D1s=st,a=at∣Cr,δ∣+∣1−γγCT,δR∣−α[πβ(at∣st)μ(at∣st)−1]]
但是此时并没有办法去保证Q值的点态下界性,因为注意到 [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] [\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1] [πβ(at∣st)μ(at∣st)−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~π[α[πβ(a∣s)μ(a∣s)−1]]
下面说明虽然保证不了 [ μ ( a t ∣ s t ) π β ( a t ∣ s t ) − 1 ] [\frac{ \mu(a_t|s_t)}{\pi_\beta(a_t|s_t)}-1] [πβ(at∣st)μ(at∣st)−1]恒正,但是却能保证选取某个特定的 μ = π \mu=\pi μ=π下, E a ~ π [ [ μ ( a ∣ s ) π β ( a ∣ s ) − 1 ] ] E_{a~\pi}[[\frac{\mu(a|s)}{\pi_\beta(a|s)}-1]] Ea~π[[πβ(a∣s)μ(a∣s)−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~π[[πβ(a∣s)π(a∣s)−1]]=a∑π(a∣s)[πβ(a∣s)π(a∣s)−πβ(a∣s)]
∑ 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∑π(a∣s)[πβ(a∣s)π(a∣s)−πβ(a∣s)]=a∑[π(a∣s)−πβ(a∣s)+πβ(a∣s)][πβ(a∣s)π(a∣s)−πβ(a∣s)]
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~π[[πβ(a∣s)π(a∣s)−1]]=a∑[πβ(a∣s)(π(a∣s)−πβ(a∣s))2]+0≥0故和上述分析方式一样,我们会有:
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)+(I−Pπ)−1[Ea~π[∑s,a∈D1s=st,a=at∣Cr,δ∣+∣1−γγCT,δR∣]−αEa~π[πβ(at∣st)μ(at∣st)−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)+(I−Pπ)−1αEa~π[−πβ(at∣st)μ(at∣st)]
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,a∈D1s=st,a=at∣Cr,δ∣+∣1−γγCT,δR∣]−αEat~π[πβ(at∣st)μ(at∣st)]<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,at∑s,a∈D1s=st,a=at∣Cr,δ∣+∣1−γγCT,δR∣maxstat∑π(at∣st)μ(at∣st)πβ(at∣st)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,笔者在原文基础上进行了修正和更改,符号用的不一样,原文中符号存在错误的情况。
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]+αEs~D,a~μ(a∣s)[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]+α(Es~D,a~μ(a∣s)[Q(s,a)]−Es~D,a~πβ(a∣s)[Q(s,a)])]
笔者已经分别证明了二者的逐点下界性,说明这种Q估计结果为估计一个Q值/V值的下界,从而避免了过估计的问题,但是在实际应用中,存在另一个问题,如何去选择合适的 μ ( a ∣ s ) \mu(a|s) μ(a∣s)才能进行应用?并且注意到这两个公式中的 π {\pi} π是不可知的。而且还注意到在V值下界估计的时候,我们将 μ \mu μ取成了 π \pi π,而这显然不可取的,因为我们根本不知道最终策略收敛后的 π \pi π,为了解决这个问题,Kumar想到可否将 μ ( a ∣ s ) \mu(a|s) μ(a∣s)用于近似 π ^ k ( a ∣ s ) \hat{\pi}^k(a|s) π^k(a∣s),但是这样就需要保证仍旧可以估计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)−α[πβ(a∣s)π^k(a∣s)−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[α[πβ(a∣s)π^k(a∣s)−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[πβ(a∣s)π^k(a∣s)−1]=Ea~π^k[πβ(a∣s)π^k(a∣s)−1]+a∑(π^k+1(a∣s)−π^k(a∣s))[πβ(a∣s)π^k(a∣s)−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(a∣s)−π^k(a∣s))[πβ(a∣s)π^k(a∣s)−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)
根据上述结论,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]+α(Es~D,a~μ(a∣s)[Q(s,a)]−Es~D,a~πβ(a∣s)[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μ[Es~D,a~μ(a∣s)[Q(s,a)]−KL(μ∣∣ρ)]但是注意到是有等式限制条件即 ∑ a μ ( a ∣ s ) = 1 \sum_a\mu(a|s)=1 ∑aμ(a∣s)=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(μ)=Es~D,a~μ(a∣s)[Q(s,a)]−KL(μ∣∣ρ)+L1^(∑aμ(a∣s)−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(μ)=s∑dβ(s)μ(a∣s)Q(s,a)−a∑μ(a∣s)log[ρ(a∣s)μ(a∣s)]+L1^(a∑μ(a∣s)−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[ρ(a∣s)μ(a∣s)]+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∑μ(a∣s)−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) ρ(a∣s)eQ(s,a)+L1^−1=μ(s∣a)
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(eL1−1^a∑ρ(a∣s)eQ(s,a))=log(1)=0→L1^=1−loga∑ρ(a∣s)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)}} μ(a∣s)=∑aρ(a∣s)eQ(s,a)ρ(a∣s)eQ(s,a)Kumar等人注意到,在当先验分布 ρ ( a ∣ s ) = 1 ∣ a ∣ \rho(a|s)=\frac{1}{|a|} ρ(a∣s)=∣a∣1为均匀分布, 其中, ∣ 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)}} μ(a∣s)=∑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)}] Es~D,a~μ(a∣s)[Q(s,a)]−KL(μ∣∣ρ)=s∑dβ(s)a~μ∑[Q(s,a)−logρ(a∣s)μ(a∣s)]注意到这一项
∑ 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ρ(a∣s)μ(a∣s)]=a~μ∑[Q(s,a)−logμ(a∣s)+logρ(a∣s)]代入 μ ( 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)}} μ(a∣s)=∑aρ(a∣s)eQ(s,a)ρ(a∣s)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ρ(a∣s)−Q(s,a)+logρ(a∣s)+loga∑ρ(a∣s)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~μ∑[loga′∑∣a′∣1eQ(s,a′)]=loga′∑∣a′∣1eQ(s,a′)=loga′∑eQ(s,a′)−log∣a′∣此时,我们注意到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]+αEs~D(loga′∑∣a′∣1eQ(s,a′)−Ea~πβ(a∣s)[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]+αEs~D(loga′∑eQ(s,a′)−Ea~πβ(a∣s)[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)]) αEs~D(log∑a′eQ(s,a′)−Ea~πβ(a∣s)[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] αEs~D(log∑a′eQ(s,a′)−Ea~πβ(a∣s)[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的实现代码,欢迎各位持续关注