作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!
和上一篇一样,我们先介绍一下自然梯度法,再介绍一下自然梯度法在策略上的单调提升的应用。
我们在使用梯度下降时,当优化问题的两个坐标轴的尺度差异比较大时,使用统一的学习率会产生问题:某一个坐标轴可能发散。这是因为,优化问题中参数尺度一般都是不同的。因此,在不同的优化曲面上, 虽然每一轮迭代对参数的更新量相差不多,但是它们对模型的影响完全不同,对不同参数进行同样数值大小的更新,不一定带来同样的模型改变,反过来也是如此。而梯度下降法不简单地使用学习率对参数更新进行量化,而是对模型效果进行量化。
自然梯度法的具体形式如下:
minimize Δ w f ( w ) + ∇ w f ( w ) Δ w s.t. KL ( f ( w ) , f ( w + Δ w ) ) < ϵ \begin{array}{l} \operatorname{minimize}_{\Delta w} f(w)+\nabla_{w} f(w) \Delta w \\ \text { s.t. } \operatorname{KL}(f(w), f(w+\Delta w))<\epsilon \end{array} minimizeΔwf(w)+∇wf(w)Δw s.t. KL(f(w),f(w+Δw))<ϵ
可以看出,有了模型层面的约束,每一轮迭代无论参数发生多大的变化,模型的变化都会限制在一定的范围内,因此不论我们使用什么样的模型, 这个约束都会起到相同的效果,因此这个约束是具有普适性的,在任何模型上都能发挥同样稳定的效果。但是问题在于,我们怎么求解更新前和更新后的策略的KL散度?
下面我们就通过Fisher信息矩阵来推导一下:
KL
(
f
(
w
)
∥
f
(
w
+
Δ
w
)
)
=
E
f
w
[
log
f
(
w
)
f
(
w
+
Δ
w
)
]
=
E
f
w
[
log
f
(
w
)
]
−
E
f
w
[
log
f
(
w
+
Δ
w
)
]
\begin{array}{l} \operatorname{KL}(f(w) \| f(w+\Delta w)) \\ =E_{f_{w}}\left[\log \frac{f(w)}{f(w+\Delta w)}\right] \\ =E_{f_{w}}[\log f(w)]-E_{f_{w}}[\log f(w+\Delta w)] \end{array}
KL(f(w)∥f(w+Δw))=Efw[logf(w+Δw)f(w)]=Efw[logf(w)]−Efw[logf(w+Δw)]
其中
E
E
E 表示为依
f
(
w
)
f(w)
f(w) 概率计算得到的期望。对等式右边的第二项进行二阶泰勒展开,可以得到
≈
E
f
w
[
log
f
(
w
)
]
−
E
f
w
[
log
f
(
w
)
+
∇
w
log
f
(
w
)
Δ
w
+
1
2
Δ
w
T
∇
w
2
log
f
(
w
)
Δ
w
]
=
E
f
w
[
log
f
(
w
)
]
−
E
f
w
[
log
f
(
w
)
]
−
E
f
w
[
∇
w
log
f
(
w
)
Δ
w
]
−
E
f
w
[
1
2
Δ
w
T
∇
w
2
log
f
(
w
)
Δ
w
]
=
−
E
f
w
[
∇
w
log
f
(
w
)
Δ
w
]
−
E
f
w
[
1
2
Δ
w
T
∇
w
2
log
f
(
w
)
Δ
w
]
\begin{array}{l} \approx E_{f_{w}}[\log f(w)]-E_{f_{w}}\left[\log f(w)+\nabla_{w} \log f(w) \Delta w+\frac{1}{2} \Delta w^{\mathrm{T}} \nabla_{w}^{2} \log f(w) \Delta w\right] \\ =E_{f_{w}}[\log f(w)]-E_{f_{w}}[\log f(w)]-E_{f_{w}}\left[\nabla_{w} \log f(w) \Delta w\right]-E_{f_{w}}\left[\frac{1}{2} \Delta w^{\mathrm{T}} \nabla_{w}^{2} \log f(w) \Delta w\right] \\ =-E_{f_{w}}\left[\nabla_{w} \log f(w) \Delta w\right]-E_{f_{w}}\left[\frac{1}{2} \Delta w^{\mathrm{T}} \nabla_{w}^{2} \log f(w) \Delta w\right] \end{array}
≈Efw[logf(w)]−Efw[logf(w)+∇wlogf(w)Δw+21ΔwT∇w2logf(w)Δw]=Efw[logf(w)]−Efw[logf(w)]−Efw[∇wlogf(w)Δw]−Efw[21ΔwT∇w2logf(w)Δw]=−Efw[∇wlogf(w)Δw]−Efw[21ΔwT∇w2logf(w)Δw]
=
−
∫
x
f
(
w
)
∇
w
log
f
(
w
)
Δ
w
d
x
−
∫
x
f
(
w
)
1
2
Δ
w
T
∇
w
2
log
f
(
w
)
Δ
w
d
x
=
−
[
∫
x
f
(
w
)
1
f
(
w
)
∇
w
f
(
w
)
d
x
]
Δ
w
−
1
2
Δ
w
T
[
∫
x
f
(
w
)
∇
w
2
log
f
(
w
)
d
x
]
Δ
w
=
−
[
∫
x
∇
w
f
(
w
)
d
x
]
Δ
w
−
1
2
Δ
w
T
E
f
w
[
∇
w
2
log
f
(
w
)
]
Δ
w
\begin{array}{l} =-\int_{x} f(w) \nabla_{w} \log f(w) \Delta w \mathrm{~d} x-\int_{x} f(w) \frac{1}{2} \Delta w^{\mathrm{T}} \nabla_{w}^{2} \log f(w) \Delta w \mathrm{~d} x \\ =-\left[\int_{x} f(w) \frac{1}{f(w)} \nabla_{w} f(w) \mathrm{d} x\right] \Delta w-\frac{1}{2} \Delta w^{\mathrm{T}}\left[\int_{x} f(w) \nabla_{w}^{2} \log f(w) \mathrm{d} x\right] \Delta w \\ =-\left[\int_{x} \nabla_{w} f(w) \mathrm{d} x\right] \Delta w-\frac{1}{2} \Delta w^{\mathrm{T}} E_{f_{w}}\left[\nabla_{w}^{2} \log f(w)\right] \Delta w \end{array}
=−∫xf(w)∇wlogf(w)Δw dx−∫xf(w)21ΔwT∇w2logf(w)Δw dx=−[∫xf(w)f(w)1∇wf(w)dx]Δw−21ΔwT[∫xf(w)∇w2logf(w)dx]Δw=−[∫x∇wf(w)dx]Δw−21ΔwTEfw[∇w2logf(w)]Δw
由于我们定义的函数
f
(
w
)
f(w)
f(w) 一般都是一个连续、可导、有界、性质优良的函数,所以这 里第一项的积分和微分可以互换,同时我们将简写的
f
(
w
)
f(w)
f(w) 用完整的形式写出:
f
(
x
;
w
)
,
f(x ; w),
f(x;w),
于是上式的第一项就变为
=
−
[
∇
w
∫
x
f
(
x
;
w
)
d
x
]
Δ
w
=
−
[
∇
w
1
]
Δ
w
=
0
\begin{array}{l} =-\left[\nabla_{w} \int_{x} f(x ; w) \mathrm{d} x\right] \Delta w \\ =-\left[\nabla_{w} 1\right] \Delta w \\ =0 \end{array}
=−[∇w∫xf(x;w)dx]Δw=−[∇w1]Δw=0
最终得到
K
L
(
f
(
w
)
∥
f
(
w
+
Δ
w
)
)
=
−
1
2
Δ
w
T
E
f
w
[
∇
w
2
log
f
(
w
)
]
Δ
w
\mathrm{KL}(f(w) \| f(w+\Delta w))=-\frac{1}{2} \Delta w^{\mathrm{T}} E_{f_{w}}\left[\nabla_{w}^{2} \log f(w)\right] \Delta w
KL(f(w)∥f(w+Δw))=−21ΔwTEfw[∇w2logf(w)]Δw
这里包含一个二阶导的期望值,虽然看上去比 KL 散度直观,但它仍然比较复杂。
我们需要用 Fisher 信息矩阵(Fisher Information Matrix ) 来表示它。Fisher 信息是信息几何中的一个概念,它也被应用到机器学习中。前面提到
f
(
w
)
f(w)
f(w) 表示某个概率分布,我们首先定义 Score 函数( Score Function ) 为对数似然函数的一阶导数
l
f
w
=
∇
w
log
f
(
x
;
w
)
l_{f_{w}}=\nabla_{w} \log f(x ; w)
lfw=∇wlogf(x;w)
通过计算可以发现,score 函数的期望值为 0,公式推导如下:
E
f
(
w
)
[
l
f
w
]
=
∫
x
f
(
w
)
∇
w
log
f
(
w
)
d
x
=
∫
x
f
(
w
)
∇
w
f
(
w
)
f
(
w
)
d
x
=
∫
∇
w
f
(
w
)
d
x
=
∇
w
∫
x
f
(
x
;
w
)
d
x
=
∇
w
1
=
0
\begin{aligned} E_{f(w)}\left[l_{f_{w}}\right] &=\int_{x} f(w) \nabla_{w} \log f(w) \mathrm{d} x \\ &=\int_{x} f(w) \frac{\nabla_{w} f(w)}{f(w)} \mathrm{d} x \\ &=\int \nabla_{w} f(w) \mathrm{d} x \\ &=\nabla_{w} \int_{x} f(x ; w) \mathrm{d} x \\ &=\nabla_{w} 1 \\ &=0 \end{aligned}
Ef(w)[lfw]=∫xf(w)∇wlogf(w)dx=∫xf(w)f(w)∇wf(w)dx=∫∇wf(w)dx=∇w∫xf(x;w)dx=∇w1=0
Fisher 信息矩阵可以通过 score 函数定义:
I
f
w
=
E
f
w
[
∇
w
log
f
(
w
)
∇
w
log
f
(
w
)
T
]
=
E
f
w
[
l
f
w
l
f
w
T
]
\begin{aligned} \boldsymbol{I}_{f_{w}} &=E_{f_{w}}\left[\nabla_{w} \log f(w) \nabla_{w} \log f(w)^{\mathrm{T}}\right] \\ &=E_{f_{w}}\left[l_{f_{w}} l_{f_{w}}^{\mathrm{T}}\right] \end{aligned}
Ifw=Efw[∇wlogf(w)∇wlogf(w)T]=Efw[lfwlfwT]
Fisher 信息矩阵有什么用处呢?我们这里有一个重要的结论:一定条件下(概率分布函数要其备良好的性质), Fisher 信息矩阵和KL 散度二阶导的相反数相等。网上证明很多,这里我们就不再证明了。
通过前面的推演,我们的目标函数变为
minimize
Δ
w
f
(
w
)
+
∇
w
f
(
w
)
Δ
w
s.t.
1
2
Δ
w
T
I
f
w
Δ
w
<
ϵ
\begin{array}{l} \operatorname{minimize}_{\Delta w} f(w)+\nabla_{w} f(w) \Delta w \\ \text { s.t. } \frac{1}{2} \Delta w^{\mathrm{T}} \boldsymbol{I}_{f_{w}} \Delta w<\epsilon \end{array}
minimizeΔwf(w)+∇wf(w)Δw s.t. 21ΔwTIfwΔw<ϵ
这个有约束的问题可以通过拉格朗日乘子法表示为
minimize
Δ
w
f
(
w
)
+
∇
w
f
(
w
)
Δ
w
+
λ
[
1
2
Δ
w
T
I
f
w
Δ
w
−
ϵ
]
\operatorname{minimize}_{\Delta w} f(w)+\nabla_{w} f(w) \Delta w+\lambda\left[\frac{1}{2} \Delta w^{\mathrm{T}} I_{f_{w}} \Delta w-\epsilon\right]
minimizeΔwf(w)+∇wf(w)Δw+λ[21ΔwTIfwΔw−ϵ]
对公式进行求导,并求解对应的极限点,可以得到
∇
w
f
(
w
)
+
λ
I
f
w
Δ
w
=
0
Δ
w
=
−
1
λ
I
f
w
−
1
∇
w
f
(
w
)
\begin{array}{l} \nabla_{w} f(w)+\lambda \boldsymbol{I}_{f_{w}} \Delta w=0 \\ \Delta w=-\frac{1}{\lambda} \boldsymbol{I}_{f_{w}}^{-1} \nabla_{w} f(w) \end{array}
∇wf(w)+λIfwΔw=0Δw=−λ1Ifw−1∇wf(w)
公式中的
1
λ
\frac{1}{\lambda}
λ1 可以当作梯度下降法的学习率类似的分量,那么自然梯度法的优化方 向就可以看作
I
f
w
−
1
∇
w
f
(
w
)
,
I_{f_{w}}^{-1} \nabla_{w} f(w),
Ifw−1∇wf(w), 与梯度下降法不同, 它需要额外求解 Fisher 信息矩阵的逆。
在这里我们可能会想到牛顿法,牛顿法是一个二阶梯度算法,它求解优化方向的公式为:
g
=
−
∇
w
2
f
(
w
)
−
1
∇
w
f
(
w
)
g=-\nabla_{w}^{2} f(w)^{-1} \nabla_{w} f(w)
g=−∇w2f(w)−1∇wf(w)
我们很容易看出两个公式的区别与联系。根据 Fisher 信息矩阵的求解方法,自然梯度法可以变成一个一阶优化问题,也可以变成一个二阶优化问题。如果把它看作一个一阶优化问题,那么需要对优化步长做更多的考量; 如果把它看作一个二阶优化问题,那么牛顿法中可能遇到的一些问题同样会在自然梯度法中出现。
那么到这里我们其实就可以将前面的策略单调提升的问题转化为下面的问题:
minimize
Δ
w
f
(
w
)
+
∇
w
f
(
w
)
Δ
w
s.t.
1
2
Δ
w
T
I
f
w
Δ
w
<
ϵ
\begin{array}{l} \operatorname{minimize}_{\Delta \boldsymbol{w}} f(\boldsymbol{w})+\nabla_{\boldsymbol{w}} f(\boldsymbol{w}) \Delta \boldsymbol{w} \\ \text { s.t. } \quad \frac{1}{2} \Delta \boldsymbol{w}^{\mathrm{T}} \boldsymbol{I}_{f_{w}} \Delta \boldsymbol{w}<\epsilon \end{array}
minimizeΔwf(w)+∇wf(w)Δw s.t. 21ΔwTIfwΔw<ϵ
其中
w
w
w 表示参数,
f
f
f 表示待优化的函数,
I
f
w
I_{f_{w}}
Ifw 表示 Fisher 信息矩阵。令策略
π
\pi
π 的参数为
θ
,
\theta,
θ, 首先,对目标函数进行一阶泰勒展开,可以得到
L
π
old
(
π
)
=
L
π
old
(
π
;
θ
old
+
Δ
θ
)
≃
L
π
old
(
π
old
;
θ
old
)
+
∇
π
L
π
old
(
π
;
θ
old
)
∣
π
=
π
old
(
Δ
θ
)
\begin{aligned} L_{\pi_{\text {old }}}(\pi) &=L_{\pi_{\text {old }}}\left(\pi ; \theta_{\text {old }}+\Delta \theta\right) \\ & \simeq L_{\pi_{\text {old }}}\left(\pi_{\text {old }} ; \theta_{\text {old }}\right)+\left.\nabla_{\pi} L_{\pi_{\text {old }}}\left(\pi ; \theta_{\text {old }}\right)\right|_{\pi=\pi_{\text {old }}}(\Delta \theta) \end{aligned}
Lπold (π)=Lπold (π;θold +Δθ)≃Lπold (πold ;θold )+∇πLπold (π;θold )∣π=πold (Δθ)
其次,对约束条件进行变换:
K
L
(
f
(
w
)
∥
f
(
w
+
Δ
w
)
)
=
−
1
2
Δ
w
T
E
f
w
[
∇
w
2
log
f
(
w
)
]
Δ
w
\mathrm{KL}(f(\boldsymbol{w}) \| f(\boldsymbol{w}+\Delta \boldsymbol{w}))=-\frac{1}{2} \Delta \boldsymbol{w}^{\mathrm{T}} E_{f_{w}}\left[\nabla_{w}^{2} \log f(\boldsymbol{w})\right] \Delta \boldsymbol{w}
KL(f(w)∥f(w+Δw))=−21ΔwTEfw[∇w2logf(w)]Δw
可以对约束条件做第一步变换:
D
ˉ
K
L
ρ
π
old
(
π
old
,
π
)
=
D
ˉ
K
L
ρ
π
old
(
π
(
θ
old
)
,
π
(
θ
old
+
Δ
θ
)
)
=
E
s
∼
ρ
[
D
K
L
(
π
(
θ
old
∣
s
)
∥
π
(
θ
old
+
Δ
θ
∣
s
)
)
]
=
E
s
∼
ρ
[
−
1
2
Δ
θ
T
E
π
old
[
∇
θ
2
log
π
(
θ
old
∣
s
)
]
Δ
θ
]
\begin{aligned} \bar{D}_{\mathrm{KL}}^{\rho_{\pi_{\text {old }}}}\left(\pi_{\text {old }}, \pi\right) &=\bar{D}_{\mathrm{KL}}^{\rho_{\pi_{\text {old }}}}\left(\pi\left(\theta_{\text {old }}\right), \pi\left(\theta_{\text {old }}+\Delta \theta\right)\right) \\ &=E_{s \sim \rho}\left[D_{\mathrm{KL}}\left(\pi\left(\theta_{\text {old }} \mid s\right) \| \pi\left(\theta_{\text {old }}+\Delta \theta \mid s\right)\right)\right] \\ &=E_{s \sim \rho}\left[-\frac{1}{2} \Delta \theta^{\mathrm{T}} E_{\pi_{\text {old }}}\left[\nabla_{\theta}^{2} \log \pi\left(\theta_{\text {old }} \mid s\right)\right] \Delta \theta\right] \end{aligned}
DˉKLρπold (πold ,π)=DˉKLρπold (π(θold ),π(θold +Δθ))=Es∼ρ[DKL(π(θold ∣s)∥π(θold +Δθ∣s))]=Es∼ρ[−21ΔθTEπold [∇θ2logπ(θold ∣s)]Δθ]
因为
:
I
f
w
=
−
E
f
w
[
∇
w
2
log
f
(
w
)
]
,
: \boldsymbol{I}_{f_{w}}=-E_{f_{w}}\left[\nabla_{\boldsymbol{w}}^{2} \log f(\boldsymbol{w})\right],
:Ifw=−Efw[∇w2logf(w)], 继续推导得到
=
E
s
∼
ρ
[
1
2
Δ
θ
T
I
π
o
l
d
(
s
)
Δ
θ
]
=E_{\boldsymbol{s} \sim \rho}\left[\frac{1}{2} \Delta \theta^{\mathrm{T}} I_{\pi_{\mathrm{old}}}(s) \Delta \theta\right]
=Es∼ρ[21ΔθTIπold(s)Δθ]
≃ 1 N ∑ n = 1 N [ 1 2 Δ θ T I π o l d ( s ) Δ θ ] \simeq \frac{1}{N} \sum_{n=1}^{N}\left[\frac{1}{2} \Delta \theta^{\mathrm{T}} \boldsymbol{I}_{\pi_{\mathrm{old}}}(s) \Delta \theta\right] ≃N1n=1∑N[21ΔθTIπold(s)Δθ]
这样我们就从求解新策略的目标函数变成了求解策略参数更新量的目标函数:
maximize
Δ
θ
∇
π
L
π
old
(
π
;
θ
old
)
∣
π
=
π
old
(
Δ
θ
)
s.t.
1
N
∑
n
=
1
N
[
1
2
Δ
θ
T
I
π
old
(
s
)
Δ
θ
]
⩽
ϵ
\begin{array}{l} \left.\operatorname{maximize}_{\Delta \theta} \nabla_{\pi} L_{\pi_{\text {old }}}\left(\pi ; \theta_{\text {old }}\right)\right|_{\pi=\pi_{\text {old }}}(\Delta \theta) \\ \text { s.t. } \quad \frac{1}{N} \sum_{n=1}^{N}\left[\frac{1}{2} \Delta \theta^{\mathrm{T}} \boldsymbol{I}_{\pi_{\text {old }}}(s) \Delta \theta\right] \leqslant \epsilon \end{array}
maximizeΔθ∇πLπold (π;θold )∣π=πold (Δθ) s.t. N1∑n=1N[21ΔθTIπold (s)Δθ]⩽ϵ
虽然自然梯度法可以解决策略单调提升的问题,但是它的计算复杂度过高,特别是矩阵求逆,它是立方级的复杂度,对于大的网络而言,这种复杂度是无法接受的。
上一篇:强化学习的学习之路(四十五)2021-02-14共轭梯度法实现策略上的单调提升(Monotonic Improvement with Dual gradient descent)
下一篇:强化学习的学习之路(四十七)2021-02-16 TRPO实现策略上的单调提升(Monotonic Improvement with TRPO )