直入主题。
PG模型和DQN模型都会产生一个现象,就是往后训练的时候模型会退化,或者说变差。而理论上最优值肯定是存在的,出现退化的原因是我们的估计和近似是有误差的,这些误差在后期会影响到模型的训练.
除此之外,有时候,不合适的步长也会让后期因为跨度太大而不好收敛.
理论依据
η ( π ~ ) = η ( π ) + E τ ∼ π ~ ( ∑ t = 0 ∞ γ t A π ( s t , a t ) ) (1) \eta(\tilde{\pi}) = \eta(\pi) + E_{\tau\sim\tilde{\pi}}(\sum_{t=0}^{\infty}\gamma^tA_\pi(s_t,a_t)) \tag{1} η(π~)=η(π)+Eτ∼π~(t=0∑∞γtAπ(st,at))(1) A ( s , a ) = Q π ( s , a ) − V π ( s ) (2) A(s,a) = Q_\pi(s,a) - V_\pi(s)\tag{2} A(s,a)=Qπ(s,a)−Vπ(s)(2)
- η \eta η是计算策略价值的函数.
- π ~ \tilde{\pi} π~和 π \pi π分别是后一时刻和当前时刻的策略.
- τ \tau τ是一串由策略 π ~ \tilde\pi π~生成的 ( s 1 , a 1 , s 2 . . . . . . ) (s_1,a_1,s_2......) (s1,a1,s2......)序列
- E E E是有策略 π ~ \tilde\pi π~参与的期望,以该策略生成的序列 τ \tau τ会参与到具体的期望计算中.
- γ \gamma γ是超参数.期望 E E E计算的是关于整个 τ \tau τ序列的期望,很有可能会发散.添加 τ \tau τ会让后面的 A ( s , t ) A(s,t) A(s,t)变小,达到收敛的目的.
- A ( s , a ) A(s,a) A(s,a)是关于 s 和 a s和a s和a的函数,如公式所示,是Q与V的差.
- Q Q Q是度量在已知某一时刻的 s 和 a s和a s和a时,对未来价值的一个估计,称为Q值.
- V V V是度量在已知某一时刻的 s s s时,对未来Q值期望的估计.
对于6和7,有必要用公式写出
Q
和
V
Q和V
Q和V的关系:
V
(
s
)
=
∑
a
P
(
a
)
Q
(
s
,
a
)
=
E
a
∼
某
一
分
布
[
Q
(
s
,
a
)
]
V(s)=\sum_a P(a)Q(s,a)=E_{a\sim某一分布}[Q(s,a)]
V(s)=a∑P(a)Q(s,a)=Ea∼某一分布[Q(s,a)]所以对于
A
(
s
,
a
)
A(s,a)
A(s,a)它计算的是未来的某一种动作下,与未来均值的差.
也就是说,如果A(s,a)比0大,那这个a选的就比平均值好.
试想,如果每次更新时,式(1)中的期望都是正数,那么策略期望就会一直上升.
寻找计算方法
如果我们想找到正数的
E
E
E就要找
τ
\tau
τ,而
τ
\tau
τ从
π
~
\tilde\pi
π~生成而来,
π
~
\tilde\pi
π~的本质又是一个由参数
θ
\theta
θ定义的神经网络.
为了追根溯源,我们需要把
E
E
E掰碎.
- 第一层,按s展开.在t已经掰开的情况下,每个t对每种s都有可能.
E τ ∼ π ~ ( ∑ t = 0 ∞ γ t A π ( s t , a t ) ) = ∑ t = 0 ∞ ∑ s P ( s ∣ π ~ ) γ t A π ( s , a t ) (3) E_{\tau\sim\tilde{\pi}}(\sum_{t=0}^{\infty}\gamma^tA_\pi(s_t,a_t)) =\sum_{t=0}^{\infty}\sum_sP(s|\tilde\pi)\gamma^tA_\pi(s,a_t)\tag{3} Eτ∼π~(t=0∑∞γtAπ(st,at))=t=0∑∞s∑P(s∣π~)γtAπ(s,at)(3) - 第二层,按a展开.在t和s掰开的情况下,每个s对每个a都有可能.
( 3 ) = ∑ t = 0 ∞ ∑ s P ( s ∣ π ~ ) ∑ a π ~ ( a ∣ s ) γ t A π ( s , a ) (4) (3)=\sum_{t=0}^{\infty}\sum_sP(s|\tilde\pi)\sum_a\tilde\pi(a|s)\gamma^tA_\pi(s,a)\tag{4} (3)=t=0∑∞s∑P(s∣π~)a∑π~(a∣s)γtAπ(s,a)(4)注意累加的层次.
这里的 P P P和策略 π ~ \tilde\pi π~都是加和为1的概率分布.
接下来我会把(4)变换的"简单"一点
(
4
)
=
∑
s
ρ
π
~
(
s
)
∑
a
π
~
(
a
∣
s
)
γ
t
A
π
(
s
,
a
)
(4)=\sum_s\rho_{\tilde\pi}(s)\sum_a\tilde\pi(a|s)\gamma^tA_\pi(s,a)
(4)=s∑ρπ~(s)a∑π~(a∣s)γtAπ(s,a)
ρ
π
~
(
s
)
=
∑
t
=
0
∞
γ
t
P
(
s
t
=
s
∣
π
~
)
\rho_{\tilde\pi}(s)=\sum_{t=0}^\infty\gamma^tP(s_t=s|\tilde\pi)
ρπ~(s)=t=0∑∞γtP(st=s∣π~)
为啥单单搞个
ρ
\rho
ρ出来呢?因为我把它看作后面那一坨数的概率分布.
也就是说,我希望
∑
s
ρ
π
~
(
s
)
=
1
\sum_s\rho_{\tilde\pi}(s)=1
∑sρπ~(s)=1
但很明显,希望是错的.如果你算过,会发现
∑
s
ρ
π
~
(
s
)
=
1
1
−
γ
\sum_s\rho_{\tilde\pi}(s)=\frac{1}{1-\gamma}
∑sρπ~(s)=1−γ1,这是个好消息,因为如果把
ρ
\rho
ρ放大
1
−
γ
1-\gamma
1−γ倍,那它就可以看作分布了.
(
4
)
=
1
1
−
γ
∑
s
(
1
−
γ
)
ρ
π
~
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
=
1
1
−
γ
E
s
∼
(
1
−
γ
)
ρ
π
~
(
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
)
(5)
(4)=\frac{1}{1-\gamma}\sum_s(1-\gamma)\rho_{\tilde\pi}(s)\sum_a\tilde\pi(a|s)A_\pi(s,a)\\= \frac{1}{1-\gamma}E_{s\sim(1-\gamma)\rho_{\tilde\pi}}(\sum_a\tilde\pi(a|s)A_\pi(s,a))\tag{5}
(4)=1−γ1s∑(1−γ)ρπ~(s)a∑π~(a∣s)Aπ(s,a)=1−γ1Es∼(1−γ)ρπ~(a∑π~(a∣s)Aπ(s,a))(5)
后面的策略
π
~
\tilde\pi
π~也可以看作是一个分布,也可以写成期望形式.
但是稍等,从这里开始我们要解决第一个产生退化的原因: 估计和近似的误差.
1.估计和近似造成的误差,产生了退化
现在有
η
(
π
~
)
=
η
(
π
)
+
式
(
5
)
\eta(\tilde\pi) = \eta(\pi) + 式(5)
η(π~)=η(π)+式(5)
如果要确定地提高
η
(
π
~
)
\eta(\tilde\pi)
η(π~),我们可以选择一个牛逼的
π
~
\tilde\pi
π~,对每个s,让式(5)中的
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
≥
0
\sum_a\tilde\pi(a|s)A_\pi(s,a)\geq0
a∑π~(a∣s)Aπ(s,a)≥0这个牛逼的
π
~
\tilde\pi
π~也很好找.把
A
(
s
,
a
)
A(s,a)
A(s,a)打开,有
∑
a
π
~
(
a
∣
s
)
Q
(
s
,
a
)
−
∑
a
π
(
a
∣
s
)
Q
(
s
,
a
)
\sum_a\tilde\pi(a|s)Q(s,a)-\sum_a\pi(a|s)Q(s,a)
a∑π~(a∣s)Q(s,a)−a∑π(a∣s)Q(s,a)总会有一个策略,
s
=
s
′
s=s'
s=s′时有
a
′
=
a
r
g
m
a
x
a
Q
(
s
′
,
a
)
a'=argmax_aQ(s',a)
a′=argmaxaQ(s′,a),该策略让
π
′
(
s
′
,
a
′
)
=
1
\pi'(s',a')=1
π′(s′,a′)=1.这个策略总会比原策略好.
但是但是但是,由于我们的近似和估计总是与客观存在误差(因为我们的训练数据是抽样的),所以总会让模型在客观上的最优策略,数值上反倒不如次一点的策略,更不用说每次采样都阴晴不定了.
如何减小误差?
我们只能减小误差,不能消除误差,因为采样就会造成误差.
式子中,我们需要在
π
~
和
π
\tilde\pi和\pi
π~和π两个策略上采样,才能计算式子.
两个采样,那就是错上加错.
能否在一个上面采样?
替换1
在所有off-policy模型上,由于时间差的存在,必须用重要性采样来纠偏.
我们虽然不是出于时间差的目的,但同样可以利用重要性采样的特点,把采样任务从一个分布交给另一个分布.
π
~
(
a
∣
s
)
=
π
(
a
∣
s
)
π
~
(
a
∣
s
)
π
(
a
∣
s
)
(6)
\tilde\pi(a|s) = \pi(a|s)\frac{\tilde\pi(a|s)}{\pi(a|s)}\tag{6}
π~(a∣s)=π(a∣s)π(a∣s)π~(a∣s)(6)
式(6)替换式(5)的对应位置,除了采样对象变了,其他什么都没变.
替换2
ρ
\rho
ρ基于
π
~
\tilde\pi
π~获得s的分布,我们没有办法.
但我们可以取个巧.我们知道,梯度下降中,只要步子够小,那前后的参数变化就没多大,进而可知s的分布也没多大变化.
那是否能尝试也用
π
\pi
π替换呢?
这个做法虽然有些霸道,结果也无法量化,但单从实验结果看,做法是可取的.
(有时候看到这种做法,真是会产生对研究的无力感.)
至此,在采样这块,算是统一了.
补充说明
我们对原来的
η
(
π
~
)
\eta(\tilde\pi)
η(π~)做了很多变换和替代.我把变换替代后的公式记为
L
π
(
π
~
)
L_\pi(\tilde\pi)
Lπ(π~)
对二者在
π
\pi
π上一阶求导,是相等的.
所以如果
π
~
\tilde\pi
π~对
L
L
L能优化,那对
η
\eta
η一样也优化.
新的问题:步长
有一个公式描述了二者的关系.
该公式的原型来自于2002年的论文:Approximately Optimal Approximate Reinforcement Leraning
被作者用KL散度替换了一个
α
\alpha
α参数,理由是原参数太笨重了。变成了下面这样.
η
(
π
~
)
≥
L
π
(
π
~
)
−
C
D
K
L
m
a
x
(
π
,
π
~
)
\eta(\tilde\pi) \geq L_\pi(\tilde\pi) - CD^{max}_{KL}(\pi,\tilde\pi)
η(π~)≥Lπ(π~)−CDKLmax(π,π~)
C
=
2
ε
γ
(
1
−
γ
)
2
C=\frac{2\varepsilon\gamma}{(1-\gamma)^2}
C=(1−γ)22εγ
替换2告诉我们,如果你步长太大,破坏了参数变化不大的假设,模型就失去意义了.
该公式告诉我们,如果你步长太大,会导致KL太大,
η
\eta
η的下界会低很多,也就是说即使
L
L
L上升,
η
\eta
η也可能会下降。所以让
K
L
KL
KL尽可能小,从而让下界缓步上升,是极其必要的。
对于该公式的推导,比较长,看原文去吧。