这是我上的统计计算课讲的主要内容,写在这可以互相交流,有些地方我不是很理解的会标出来(用加粗斜体*标出),求大佬在留言处表达自己的看法,另外如果有啥问题也可以在留言处留言,如果我看到了会回复
这次的内容相比于上次更杂,也稍微有点难度,含有一些证明,因此这次的文章结构采用三个阶段的写法,第一个阶段介绍概念,了解方法的动机、主要结果、以及优缺点,第二个阶段是最基本方法的证明,第三个阶段扩展到其他方法的证明(不过我可能写不出来)
第一阶段
背景:求解最大似然估计
主要方法:拉格朗日乘子法解带约束的凸问题,梯度下降法及其一些扩展数值求解最优点
拉格朗日乘子法
自行百度的概念:凸集,凸函数(这里指下凸函数)
凸函数的重要例子:p范数(p>=1)
凸函数的重要性质:若
f
(
x
)
f(x)
f(x)是凸函数,则有
f
(
E
(
x
)
)
≤
E
(
f
(
x
)
)
(
证
明
放
在
第
二
阶
段
)
f(E(x))\leq E(f(x)) (证明放在第二阶段)
f(E(x))≤E(f(x))(证明放在第二阶段)
凸优化问题的表述
m
i
n
f
0
(
x
)
min\ f_0(x)
min f0(x)
s
.
t
.
f
i
(
x
)
≤
0
i
=
1
,
2
,
.
.
.
,
m
s.t.\quad f_i(x)\leq0\qquad i=1,2,...,m
s.t.fi(x)≤0i=1,2,...,m
h
j
(
x
)
=
0
j
=
1
,
2
,
.
.
.
,
p
h_j(x)=0\qquad j=1,2,...,p
hj(x)=0j=1,2,...,p
其中所有函数都是凸函数。
记号
最优(小)值:
p
∗
p^*
p∗
可行域:
D
=
⋂
i
=
1
n
D
f
i
∩
⋂
j
=
1
p
D
h
j
D=\bigcap_{i=1}^n D_{f_i} \cap \bigcap_{j=1}^p D_{h_j}
D=⋂i=1nDfi∩⋂j=1pDhj
最优点:
x
∗
x^*
x∗,且有
f
(
x
∗
)
=
p
∗
f(x^*)=p^*
f(x∗)=p∗
凸问题中判别最优点的准则
设
f
0
(
x
)
f_0(x)
f0(x)可微,则
x
∗
x^*
x∗是最优点,当且仅当
▽
f
0
(
x
)
T
(
y
−
x
)
≥
0
∀
可
行
域
中
的
y
\triangledown f_0(x)^T(y-x)\geq 0 \qquad \forall 可行域中的y
▽f0(x)T(y−x)≥0∀可行域中的y
拉格朗日函数求解最优点
拉格朗日函数
L
(
x
,
λ
,
ν
)
=
f
0
(
x
)
+
∑
i
=
1
n
λ
i
f
i
(
x
)
+
∑
j
=
1
p
ν
j
h
j
(
x
)
L(x,\bm \lambda,\bm \nu)=f_0(x)+\sum_{i=1}^n \lambda _if_i(x)+\sum_{j=1}^p \nu _jh_j(x)
L(x,λ,ν)=f0(x)+∑i=1nλifi(x)+∑j=1pνjhj(x)
对偶函数
g
(
λ
,
ν
)
=
i
n
f
x
∈
D
L
(
x
,
λ
,
ν
)
g(\bm \lambda,\bm \nu)=\mathop{inf}\limits_{x\in D}L(x,\bm \lambda,\bm \nu)
g(λ,ν)=x∈DinfL(x,λ,ν)
我们可以观察到对偶函数有如下重要性质:
1、对偶函数始终都是凸函数(不管原问题是否是凸问题)
2、若对于
∀
\forall
∀可行域中的x,若
λ
≥
0
\bm\lambda\geq0
λ≥0,则有
g
(
λ
,
ν
)
≤
L
(
x
,
λ
,
ν
)
≤
f
0
(
x
)
g(\bm \lambda,\bm \nu)\leq L(x,\bm \lambda,\bm \nu)\leq f_0(x)
g(λ,ν)≤L(x,λ,ν)≤f0(x),因此可推出
g
(
λ
,
ν
)
≤
p
∗
,
∀
λ
≥
0
,
ν
∈
R
p
g(\bm \lambda,\bm \nu)\leq p^*,\forall \bm\lambda\geq0,\bm \nu\in R^p
g(λ,ν)≤p∗,∀λ≥0,ν∈Rp
拉格朗日对偶问题
m
i
n
g
(
λ
,
ν
)
min\ g(\bm \lambda,\bm \nu)
min g(λ,ν)
s
.
t
.
λ
≥
0
s.t.\quad \bm \lambda \geq 0
s.t.λ≥0记对偶问题的最小值为
d
∗
d^*
d∗,最小值点为
(
λ
∗
,
ν
∗
)
(\bm \lambda^*,\bm \nu^*)
(λ∗,ν∗)
若
d
∗
≤
p
∗
d^*\leq p^*
d∗≤p∗,则称该情况为弱对偶,称
d
∗
−
p
∗
d^*- p^*
d∗−p∗为最优值对偶间隙
若
d
∗
=
p
∗
d^*= p^*
d∗=p∗,则称该情况为强对偶
强对偶的一个充分条件
Slater’s Condition(还不太明白这个条件说的啥,查好后补充)*
强对偶能带来的一些结论
首先我们考察下面这个连不等式
f
0
(
x
∗
)
=
g
(
λ
∗
,
ν
∗
)
=
i
n
f
x
∈
D
L
(
x
,
λ
∗
,
ν
∗
)
=
i
n
f
x
∈
D
f
0
(
x
)
+
∑
i
=
1
n
λ
i
∗
f
i
(
x
)
+
∑
j
=
1
p
ν
j
∗
h
j
(
x
)
≤
f
0
(
x
∗
)
+
∑
i
=
1
n
λ
i
∗
f
i
(
x
∗
)
+
∑
j
=
1
p
ν
j
∗
h
j
(
x
∗
)
≤
f
0
(
x
∗
)
\begin{aligned} f_0(x^*)=& g(\bm \lambda^*,\bm \nu^*)=\mathop{inf}\limits_{x\in D}L(x,\bm \lambda^*,\bm \nu^*) \\ =& \mathop{inf}\limits_{x\in D} f_0(x)+\sum_{i=1}^n \lambda _i^*f_i(x)+\sum_{j=1}^p \nu _j^*h_j(x)\\ \leq & f_0(x^*)+\sum_{i=1}^n \lambda _i^*f_i(x^*)+\sum_{j=1}^p \nu _j^*h_j(x^*)\\ \leq & f_0(x^*) \end{aligned}
f0(x∗)==≤≤g(λ∗,ν∗)=x∈DinfL(x,λ∗,ν∗)x∈Dinff0(x)+i=1∑nλi∗fi(x)+j=1∑pνj∗hj(x)f0(x∗)+i=1∑nλi∗fi(x∗)+j=1∑pνj∗hj(x∗)f0(x∗)由于有强对偶,所以上式中的不等号全部全部取等,可得两个重要条件:
(1):
x
∗
x^*
x∗使
L
(
x
,
λ
∗
,
ν
∗
)
L(x,\bm \lambda^*,\bm \nu^*)
L(x,λ∗,ν∗)取最小值
(2):
λ
i
∗
f
i
(
x
∗
)
=
0
\lambda _i^*f_i(x^*)=0
λi∗fi(x∗)=0 (互补条件)
通过上面的讨论我们可以得到求解优化问题的一套流程:首先写出拉格朗日函数,算出对偶函数,由对偶函数的凸性算出对偶函数的极值点
(
λ
∗
,
ν
∗
)
(\bm \lambda^*,\bm \nu^*)
(λ∗,ν∗),最后在该极值点下求出拉格朗日函数的极值点
x
∗
x^*
x∗。
但是我们发现这一套流程很麻烦,所以想找出一个较为容易的求解方法,这就催生了KKT条件。
KKT条件
设
(
x
∗
,
λ
∗
,
ν
∗
)
(x^*,\bm \lambda^*,\bm \nu^*)
(x∗,λ∗,ν∗)是最优点,则KKT条件的内容为拉格朗日函数关于x的梯度在最优点处取值为0+约束条件+
λ
∗
≥
0
\bm \lambda^* \geq0
λ∗≥0+互补条件
首先由上面的讨论可以知道KKT条件是最优点的必要条件
定理:当原问题是凸问题时,KKT条件是最优点的充要条件 (不会证)
梯度下降法
上面的拉格朗日乘子法对于有解析解的问题较为好办,但如果问题没有或者很难求出解析解,数值求最优点就变得很重要了,接下来将讨论无约束问题的梯度下降法及其若干变种,每种方法将从算法流程,收敛性方面来讨论
在讨论之前,我们在这里列出三个假设,便于下文引用:
(1)f在
R
n
R^n
Rn上凸且连续可微
(2)
▽
f
(
x
)
\bigtriangledown f(x)
▽f(x)在
R
n
R^n
Rn上L-李普西斯连续,即对
∀
x
,
y
∈
R
n
,
∥
▽
f
(
x
)
−
▽
f
(
y
)
∥
≤
L
∥
x
−
y
∥
\forall x,y\in R^n,\|\bigtriangledown f(x)-\bigtriangledown f(y)\|\leq L\|x-y\|
∀x,y∈Rn,∥▽f(x)−▽f(y)∥≤L∥x−y∥
(3)f的最优值有限且最优点能取到
(4)f是m-强凸的
最原始的梯度下降法
算法(略)
收敛速度
(1,2,3)无(4)时为
O
(
1
/
k
)
O(1/k)
O(1/k),有是(4)时为指数收敛
牛顿法
牛顿法产生的背景
对于梯度下降法,我们可以如下理解:假设
f
(
x
)
f(x)
f(x)有一阶导数,所以可以将
f
(
x
)
f(x)
f(x)作一阶泰勒展开并略去高阶小量,得到
f
(
x
+
v
)
=
f
(
x
)
+
f
′
(
x
)
T
v
f(x+v)=f(x)+f^{'}(x)^Tv
f(x+v)=f(x)+f′(x)Tv,我们的目标是取某个方向的单位向量
v
v
v,使得
f
(
x
+
v
)
f(x+v)
f(x+v)最小,此时
v
v
v就是最原始的梯度下降法中得到的方向
牛顿法
牛顿法就是当
f
(
x
)
f(x)
f(x)有二阶导数时,将
f
(
x
)
f(x)
f(x)作二阶泰勒展开,略去高阶小量并解上述的最优化问题得到的
v
v
v,具体形式为
v
=
−
(
▽
2
f
(
x
)
)
−
1
▽
f
(
x
)
v=-(\triangledown^2 f(\bm x))^{-1}\triangledown f(\bm x)
v=−(▽2f(x))−1▽f(x)
当然我们也可以从另一方面来看牛顿法,使用一个正定矩阵新定义一个距离,在该距离下,v是下降最快的方向(与最原始的梯度下降法的想法类似)
拟牛顿法
拟牛顿法产生的背景
在牛顿法中,我们需要计算海森矩阵的逆,在矩阵较大时计算开销会很大,所以我们希望每次更新
x
x
x时使用一个矩阵近似海森矩阵,而这个近似矩阵的逆便于求得,减少计算开销
算法
设当前所在点为
x
n
+
1
x_{n+1}
xn+1,上一步所在点为
x
n
x_n
xn,已经求得上一步的近似矩阵
M
n
M_n
Mn,则算法如下:
Δ
x
n
=
x
n
+
1
−
x
n
y
n
=
▽
f
(
x
n
+
1
)
−
▽
f
(
x
n
)
v
n
=
y
n
−
M
n
x
n
M
n
+
1
=
M
n
+
v
n
v
n
T
v
n
T
Δ
x
n
计算
M
n
+
1
的逆矩阵
M
n
+
1
−
1
x
n
+
2
=
x
n
+
1
−
t
M
n
+
1
−
1
▽
f
(
x
n
+
1
)
\Delta x_n=x_{n+1}-x_n \\y_n=\bigtriangledown f(x_{n+1})-\bigtriangledown f(x_n) \\ v_n=y_n-M_nx_n\\ M_{n+1}=M_n+\frac{v_nv_n^T}{v_n^T\Delta x_n}\\ \text{计算$M_{n+1}$的逆矩阵$M_{n+1}^{-1}$}\\ x_{n+2}=x_{n+1}-tM_{n+1}^{-1}\bigtriangledown f(x_{n+1})
Δxn=xn+1−xnyn=▽f(xn+1)−▽f(xn)vn=yn−MnxnMn+1=Mn+vnTΔxnvnvnT计算Mn+1的逆矩阵Mn+1−1xn+2=xn+1−tMn+1−1▽f(xn+1)
其中
M
n
+
1
−
1
M_{n+1}^{-1}
Mn+1−1的计算使用了Sherman-Morrison-Woodbury 公式
(
A
+
U
C
V
)
−
1
=
A
−
1
−
A
−
1
U
(
C
−
1
+
V
A
−
1
U
)
−
1
V
A
−
1
其
中
A
∈
R
n
×
n
,
U
∈
R
n
×
d
,
C
∈
R
d
×
d
,
V
∈
R
d
×
n
其
中
d
<
n
,
所
有
矩
阵
满
秩
(A+UCV)^{-1}=A^{-1}-A^{-1}U(C^{-1}+VA^{-1}U)^{-1}VA^{-1}\\ 其中A\in R^{n\times n},U\in R^{n\times d},C\in R^{d\times d},V\in R^{d\times n}\\其中 d<n,所有矩阵满秩
(A+UCV)−1=A−1−A−1U(C−1+VA−1U)−1VA−1其中A∈Rn×n,U∈Rn×d,C∈Rd×d,V∈Rd×n其中d<n,所有矩阵满秩(该公式暂时不在本文中证明,可能以后会证一下)
在拟牛顿法中矩阵C为1,矩阵U为列向量
v
n
v_n
vn,矩阵V为行向量
v
n
T
v_n^T
vnT,所以
M
n
+
1
−
1
M_{n+1}^{-1}
Mn+1−1易求出
拟牛顿法的扩展
上面在更新
M
n
M_{n}
Mn时,使用了一个秩为1的矩阵,为了更加逼近海森矩阵,我们想用一个秩为2的矩阵进行更新,这就产生了BFGS方法
M
n
+
1
=
M
n
+
y
n
y
n
T
y
n
T
Δ
x
n
−
M
n
Δ
x
n
(
M
n
Δ
x
n
)
T
(
Δ
x
n
)
T
M
n
Δ
x
n
M_{n+1}=M_n+\frac{y_ny_n^T}{y_n^T\Delta x_n}-\frac{M_n\Delta x_n(M_n\Delta x_n)^T}{(\Delta x_n)^TM_n\Delta x_n}
Mn+1=Mn+ynTΔxnynynT−(Δxn)TMnΔxnMnΔxn(MnΔxn)T
遗留的问题
在这里我没有说明为什么这样构造的
M
n
M_n
Mn会收敛到海森矩阵,以及为什么BFGS方法比秩1方法好,我会在以后填一下这个坑
关于拟牛顿法的收敛速度,我也会通过数值试验来填一下坑
动量方法
背景
原始的梯度下降法有如下的缺点:
(1)陷入鞍点
(2)收敛速度不够快
(3)难以解决大规模数据
(4)无法求没有导数的函数的最值
这就催生了另一些改进的下降方法来求函数最值
原始的动量方法
算法
m
k
=
μ
m
k
−
1
+
(
1
−
μ
)
▽
f
(
x
n
−
1
)
x
n
=
x
n
−
1
−
α
m
k
0
≤
μ
<
1
m_k=\mu m_{k-1}+(1-\mu)\bigtriangledown f(x_{n-1})\\ x_n=x_{n-1}-\alpha m_k\\ 0\leq \mu<1
mk=μmk−1+(1−μ)▽f(xn−1)xn=xn−1−αmk0≤μ<1
直观想法
从名字就可以看出,选择下一个点的原则和物体运动类似,其方向收到上一步方向的影响,当
μ
=
0
\mu=0
μ=0时,即为梯度下降法
优点
相比于梯度下降法,在等高线为椭圆形,出发点位于长轴附近时(偏离长轴一些),动量方法的更新方向沿长轴的分量会逐渐积累,沿短轴的分量会相互抵消,这样可以更快的向最优点收敛(如图)
Nesterov加速法(NAG)
背景
见其他大佬写的文章
https://blog.csdn.net/tsyccnh/article/details/76673073
算法
令
x
0
=
x
−
1
y
=
x
n
−
1
+
n
−
2
n
+
1
(
x
n
−
1
−
x
n
−
2
)
x
n
=
y
−
t
▽
f
(
y
)
令x_0=x_{-1}\\ y=x_{n-1}+\frac{n-2}{n+1}(x_{n-1}-x_{n-2})\\ x_n=y-t\bigtriangledown f(y)
令x0=x−1y=xn−1+n+1n−2(xn−1−xn−2)xn=y−t▽f(y)可以看出此方法和动量法差别在于需要求导数的点的位置,此方法求导的位置比当前位置靠前一点,而动量方法求导的位置就是在当前位置。
优点
在一定条件下,收敛速度在达到一阶方法的最快速度(一阶方法是什么锤子,找不到定义),下面这个定理说明一阶方法收敛的最快速度为
1
k
2
\frac{1}{k^2}
k21(本文不证明该定理)
定理:对任意的整数 k < n − 1 2 \bm {k<\frac{n-1}{2}} k<2n−1(n为维数)和初始值 x 0 , \bm{x_0}, x0,,都存在满足假设(1,2,3)的函数f,使得对于任意的一阶方法, f ( x k ) − f ( x ∗ ) ≥ 3 32 L ∥ x 0 − x ∗ ∥ 2 ( k + 1 ) 2 \bm{f(x_k)-f(x^*)\geq \frac{3}{32}\frac{L\|x_0-x^*\|^2}{(k+1)^2}} f(xk)−f(x∗)≥323(k+1)2L∥x0−x∗∥2
收敛速度
定理:f满足假设(1,2,3),则对于
t
≤
1
L
\bm{t\leq \frac1L}
t≤L1,有
f
(
x
k
)
−
f
(
x
∗
)
≤
2
∥
x
0
−
x
∗
∥
2
t
(
k
+
1
)
2
\bm{f(x_k)-f(x^*)\leq \frac{2\|x_0-x^*\|^2}{t(k+1)^2}}
f(xk)−f(x∗)≤t(k+1)22∥x0−x∗∥2
该定理说明Nesterov加速法在一定条件下,收敛速度在达到一阶方法的最快速度,我们将在第二阶段给出证明
小结
至此我们可以解决梯度下降法的缺点(2)
近端(proximal)梯度下降
背景
该方法可以求部分没有导数的函数的最值,只要这个这个函数可以分解为两个部分
f
=
g
+
h
f=g+h
f=g+h,
g
g
g为凸且连续可微的,
h
h
h为凸且较为简单,这个较为简单定义得比较模糊,可以通过下面近端函数的一些例子来理解。
prox函数
定义:设h是凸函数,则关于h的近端函数为
p
r
o
x
h
(
x
)
=
a
r
g
m
i
n
u
(
h
(
u
)
+
1
2
∥
u
−
x
∥
2
2
)
prox_h(x)=\mathop{argmin}\limits_{u}(h(u)+\frac 12\|u-x\|^2_2)
proxh(x)=uargmin(h(u)+21∥u−x∥22)例如:
(
1
)
h
(
x
)
=
0
时
,
p
r
o
x
h
(
x
)
=
x
(
2
)
定
义
示
性
函
数
1
C
(
x
)
=
{
0
x
∈
C
+
∞
x
∉
C
当
h
(
x
)
=
1
C
(
x
)
时
,
p
r
o
x
h
(
x
)
为
点
x
在
C
上
的
投
影
(
3
)
当
h
(
x
)
=
∥
x
∥
1
时
,
p
r
o
x
h
为
软
阈
值
算
子
,
其
中
p
r
o
x
h
(
x
)
的
第
i
个
分
量
为
p
r
o
x
h
(
x
)
i
=
{
x
i
−
1
x
i
>
1
0
−
1
≤
x
i
≤
1
x
i
+
1
x
<
−
1
(1)h(x)=0时,prox_h(x)=x\\ (2)定义示性函数\bm1_C(x)=\left\{ \begin{aligned} & 0\quad x\in C\\ & +\infty \quad x\notin C \end{aligned} \right. \\ 当h(x)=\bm 1_C(x)时,prox_h(x)为点x 在C上的投影\\ (3)当h(x)=\|x\|_1时,prox_h为软阈值算子,\\ 其中prox_h(x)的第i个分量为prox_h(x)_i=\left\{ \begin{aligned} & x_i-1\quad x_i>1\\ & 0 \quad -1\leq x_i\leq 1\\ & x_i+1\quad x<-1 \end{aligned} \right.
(1)h(x)=0时,proxh(x)=x(2)定义示性函数1C(x)={0x∈C+∞x∈/C当h(x)=1C(x)时,proxh(x)为点x在C上的投影(3)当h(x)=∥x∥1时,proxh为软阈值算子,其中proxh(x)的第i个分量为proxh(x)i=⎩⎪⎨⎪⎧xi−1xi>10−1≤xi≤1xi+1x<−1通过上面的例子,我们可以找到一些在近端算子作用下的形式较为“简单”的函数。
算法
x
n
+
1
=
p
r
o
x
t
⋅
h
(
x
n
−
t
▽
g
(
x
n
)
)
x_{n+1}=prox_{t\cdot h}(x_n-t\bigtriangledown g(x_n))
xn+1=proxt⋅h(xn−t▽g(xn))
计算上的解释
x
n
+
1
=
a
r
g
m
i
n
u
(
h
(
u
)
+
1
2
t
∥
u
−
x
n
+
t
▽
g
(
x
n
)
∥
2
2
)
=
a
r
g
m
i
n
u
(
h
(
u
)
+
g
(
x
)
+
▽
g
(
x
n
)
T
(
u
−
x
n
)
+
1
2
t
∥
u
−
x
n
∥
2
2
)
\begin{aligned} x_{n+1}=& \mathop{argmin}\limits_{u}(h(u)+\frac{1}{2t}\|u-x_n+t\bigtriangledown g(x_n)\|^2_2) \\ =& \mathop{argmin}\limits_{u}(h(u)+g(x)+\bigtriangledown g(x_n) ^T(u-x_n)+\frac{1}{2t}\|u-x_n\|^2_2) \end{aligned}
xn+1==uargmin(h(u)+2t1∥u−xn+t▽g(xn)∥22)uargmin(h(u)+g(x)+▽g(xn)T(u−xn)+2t1∥u−xn∥22)可以看出
x
n
+
1
x_{n+1}
xn+1最小化了
h
(
u
)
h(u)
h(u)加
g
(
x
)
g(x)
g(x)的一个二次近似(不是泰勒展开,但接近)
直观上的解释
见其他大佬写的文章
https://www.cnblogs.com/raby/p/5886699.html
具体的近端梯度下降的例子
当
h
(
x
)
=
0
h(x)=0
h(x)=0时,即为梯度下降
当
h
(
x
)
=
1
C
(
x
)
h(x)=\bm1_C(x)
h(x)=1C(x)时,即为投影梯度下降
当
h
(
x
)
=
∥
x
∥
1
h(x)=\|x\|_1
h(x)=∥x∥1时,即为ISTA算法(Iterative Shrinkage-Thresholding Algorithm)
x
n
+
1
=
S
t
(
x
−
t
▽
g
(
x
n
)
)
其
中
S
t
(
u
)
=
(
∥
u
∥
−
t
)
+
s
i
g
n
(
u
)
x_{n+1}=S_t(x-t\bigtriangledown g(x_n))\\其中S_t(u)=(\|u\|-t)_+sign(u)
xn+1=St(x−t▽g(xn))其中St(u)=(∥u∥−t)+sign(u)
近端梯度下降法的收敛速度和梯度下降法相同,只要 h ( x ) \bm{h(x)} h(x)是凸且闭的(本文不给出证明)
加速近端梯度下降法
背景
模仿NAG法
算法
令
x
0
=
x
−
1
y
=
x
k
−
1
+
k
−
2
k
+
1
(
x
k
−
1
−
x
k
−
2
)
x
k
=
p
r
o
x
t
h
(
y
−
t
▽
g
(
y
)
)
令x_0=x_{-1}\\ y=x_{k-1}+\frac{k-2}{k+1}(x_{k-1}-x_{k-2})\\ x_k=prox_{th}(y-t\bigtriangledown g(y))
令x0=x−1y=xk−1+k+1k−2(xk−1−xk−2)xk=proxth(y−t▽g(y))当
h
(
x
)
=
∥
x
∥
1
h(x)=\|x\|_1
h(x)=∥x∥1时,算法又称为FISTA
收敛速度和NAG法一样(本文不给出证明)
小结
至此我们可以部分解决梯度下降法的缺点(4)
随机优化
该部分以浏览为主,理论证明部分较少,算法流程较多,会提及部分算法的想法和优缺点,可快速读过(主要是敲字敲到这太累了,不想敲了
×
\times
×)
我参考了其他大佬的文章
https://blog.csdn.net/u014595019/article/details/52989301
随机梯度下降(SGD)
目的
逃离不稳定的极值点,摆脱鞍点,可以处理大规模数据
算法
目标优化函数仍然是
f
(
x
)
f(x)
f(x)
x
k
+
1
=
x
k
−
t
g
(
x
k
)
其
中
E
(
g
(
x
)
)
=
▽
f
(
x
)
x_{k+1}=x_k-tg(x_k)\\ 其中E(g(x))=\bigtriangledown f(x)
xk+1=xk−tg(xk)其中E(g(x))=▽f(x)
例子
太麻烦,不想敲,如果有想要的可以在评论里留言,我会填坑
收敛速度
缺点
收敛速度慢,调参(学习率)较麻烦
自适应随机梯度下降(Adaptive Stochastic Gradient Descent)
AdaGrad算法
目的
解决SGD学习率不变的缺点
想法来源
假设
f
(
x
)
f(x)
f(x)是某个随机变量的期望,那么我们可以使用Fisher信息量来调整学习率(因为Fisher信息量可以类比于函数的曲率),这启发我们使用
g
(
θ
k
)
g
(
θ
k
)
T
g(\theta_k)g(\theta_k)^T
g(θk)g(θk)T的某种平均来调整学习率
算法
g
(
θ
k
)
仍
表
示
随
机
取
样
本
点
算
出
的
梯
度
r
=
r
+
g
(
θ
k
)
⊙
g
(
θ
k
)
其
中
圈
乘
表
示
逐
元
素
相
乘
θ
k
+
1
=
θ
k
−
η
ϵ
+
r
⊙
g
(
θ
k
)
其
中
所
有
运
算
均
为
逐
元
素
运
算
g(\theta_k)仍表示随机取样本点算出的梯度\\ r=r+g(\theta_k)\odot g(\theta_k)其中圈乘表示逐元素相乘\\ \theta_{k+1}=\theta_k-\frac{\eta}{\epsilon+\sqrt r}\odot g(\theta_k)其中所有运算均为逐元素运算
g(θk)仍表示随机取样本点算出的梯度r=r+g(θk)⊙g(θk)其中圈乘表示逐元素相乘θk+1=θk−ϵ+rη⊙g(θk)其中所有运算均为逐元素运算其中超参数有
η
,
ϵ
\eta,\epsilon
η,ϵ
缺点
r
r
r的累积最终导致学习率下降
RMSprop
目的
解决AdaGrad的缺点
想法
降低
r
r
r的累积速度
算法
g
(
θ
k
)
仍
表
示
随
机
取
样
本
点
算
出
的
梯
度
r
=
ρ
r
+
(
1
−
ρ
)
g
(
θ
k
)
⊙
g
(
θ
k
)
其
中
圈
乘
表
示
逐
元
素
相
乘
θ
k
+
1
=
θ
k
−
η
ϵ
+
r
⊙
g
(
θ
k
)
其
中
所
有
运
算
均
为
逐
元
素
运
算
g(\theta_k)仍表示随机取样本点算出的梯度\\ r=\rho r+(1-\rho)g(\theta_k)\odot g(\theta_k)其中圈乘表示逐元素相乘\\ \theta_{k+1}=\theta_k-\frac{\eta}{\epsilon+\sqrt r}\odot g(\theta_k)其中所有运算均为逐元素运算
g(θk)仍表示随机取样本点算出的梯度r=ρr+(1−ρ)g(θk)⊙g(θk)其中圈乘表示逐元素相乘θk+1=θk−ϵ+rη⊙g(θk)其中所有运算均为逐元素运算其中超参数有
η
,
ϵ
,
ρ
\eta,\epsilon,\rho
η,ϵ,ρ
可以看出此方法中有些矩方法的样子
Adam
想法
融合矩方法的优点,将
r
r
r和梯度都使用矩方法更新
算法
不想敲了,上面的大佬链接写得很清楚
小结
至此,我们解决了梯度下降法的缺点(1)(3).
总之,这些算法长什么形式不重要,因为一般从形式上也看不出大佬是怎么想出来的,尤其是Adam方法和NAG方法,所以阅读原始文章和其中的证明对于理解方法更重要,可以先在这里留个坑,以后用到时会挖
第二阶段
第一阶段终于写完了,感觉长得都不像第一阶段 × \times ×),第二阶段就两个证明,第一个是梯度下降法的收敛速度,第二个证明是随机梯度下降法的收敛速度