优化方法简单总结
梯度下降法:
延梯度方向更新参数,此时目标函数变化最大。
收敛阶
O
(
1
t
)
O(\frac{1}{t})
O(t1),收敛速度越来越慢
牛顿法:
用来解方程的根,将原极值问题转化为
l
′
(
θ
)
=
0
l'(\theta)=0
l′(θ)=0
迭代格式
θ
′
=
θ
−
l
′
(
θ
)
l
′
′
(
θ
)
\theta '=\theta-\frac{l'(\theta)}{l''(\theta)}
θ′=θ−l′′(θ)l′(θ)
当自变量为向量时,需要求二阶导数矩阵(Hessien矩阵)的逆,收敛速度快,但计算量较大。
拟牛顿法思想主要近似Hessien矩阵,BFGS用迭代点用一阶导差值迭代来近似每次的Hessien矩阵。
牛顿迭代法收敛阶
设真值为
α
\alpha
α,将函数在
x
k
x_k
xk处泰勒展开
f
(
α
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
α
)
+
f
′
′
(
ξ
)
2
(
x
k
−
α
)
2
=
0
f(\alpha)=f(x_k)+f'(x_k)(x-\alpha)+\frac{f''(\xi)}{2}(x_k-\alpha)^2=0
f(α)=f(xk)+f′(xk)(x−α)+2f′′(ξ)(xk−α)2=0
解出
α
\alpha
α得
α
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
−
f
′
′
(
ξ
)
2
f
′
(
ξ
)
(
α
−
x
k
)
2
=
x
k
+
1
−
f
′
′
(
ξ
)
2
f
′
(
ξ
)
(
α
−
x
k
)
2
\alpha = x_k-\frac{f(x_k)}{f'(x_k)}-\frac{f''(\xi)}{2f'(\xi)}(\alpha-x_k)^2=x_{k+1}-\frac{f''(\xi)}{2f'(\xi)}(\alpha-x_k)^2
α=xk−f′(xk)f(xk)−2f′(ξ)f′′(ξ)(α−xk)2=xk+1−2f′(ξ)f′′(ξ)(α−xk)2
lim
x
k
+
1
−
α
(
x
k
−
α
)
2
=
C
\lim \frac{x_{k+1}-\alpha}{(x_k-\alpha)^2}=C
lim(xk−α)2xk+1−α=C
所以牛顿法至少二阶收敛
多元泰勒展开与牛顿迭代法
f
(
X
)
=
f
(
X
k
)
+
∇
f
(
X
k
)
(
X
−
X
k
)
+
1
2
(
X
−
X
k
)
T
G
x
k
(
X
−
X
K
)
+
O
f(X)=f(X_k)+\nabla f(X_k)(X-X_k)+\frac{1}{2}(X-X_k)^TG_{x_k}(X-X_K)+O
f(X)=f(Xk)+∇f(Xk)(X−Xk)+21(X−Xk)TGxk(X−XK)+O
常用拟牛顿法:
- Limited-memory BFGS, 不储存近似矩阵,而是使用时重新构造
- TNC (Truncated Newton)
- Trust Region(Trust Region Newton) 大多数时候表现最好
共轭梯度法:
共轭方向法与梯度的结合,原问题用来求解对称正定线性方程组的根,可推广到一般优化问题,效率介于梯度下降与牛顿法之间。
求解
A
x
=
b
Ax=b
Ax=b,等价于最优化
m
i
n
1
2
x
T
A
x
+
b
x
+
c
min \frac{1}{2}x^{T}Ax+bx+c
min21xTAx+bx+c
共轭梯度法中每一次的迭代方向
d
1
,
d
2
,
.
.
.
,
d
n
d_1,d_2,...,d_n
d1,d2,...,dn都是关于A共轭的,即
d
i
T
A
d
j
=
0
d_i^TAd_j=0
diTAdj=0
第一次的迭代方向选为梯度的负方向
d
0
=
−
g
0
d_0=-g_0
d0=−g0,之后每次的方向与前一次共轭,且是新点梯度与之前方向的线性组合,
d
1
=
−
g
1
+
r
0
d
0
d_1= -g_1 +r_0d_0
d1=−g1+r0d0,再按照共轭的条件解出
r
0
r_0
r0,即得到新的方向。
在每个方向上,line search找出此时函数的极值,在极值点进行下一次的方向搜索。理论上n维二次问题通过n的、次迭代即可求出精确解。
一般问题在迭代n次之后,新的方向不会与之前的方向共轭,此时要修正梯度,即可再产生一组共轭方向,例如此时把方向直接取为梯度负方向
坐标轴下降法:
可微凸函数一直延各个坐标轴方向取极值,最终会收敛到函数的极值。
对于
m
i
n
f
(
x
)
,
x
=
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
min f(x),x=(x_1,x_2,x_3,...,x_n)
minf(x),x=(x1,x2,x3,...,xn)
首先固定
x
2
,
.
.
,
.
x
n
x_2,..,.x_n
x2,..,.xn更新
x
1
′
=
a
r
g
m
i
n
f
(
x
)
x_1'=argminf(x)
x1′=argminf(x),
再固定
x
1
′
,
x
3
,
.
.
.
,
x
n
x_1',x_3,...,x_n
x1′,x3,...,xn更新
x
2
′
x_2'
x2′
…
固定
x
1
′
,
x
2
′
,
.
.
.
,
x
n
−
1
′
x_1',x_2',...,x_{n-1}'
x1′,x2′,...,xn−1′更新
x
n
′
x_n'
xn′
即完成一次迭代,继续上述过程直到满足误差条件
拓展: f ( x ) = g ( x ) + ∑ h i ( x ) f(x)=g(x)+\sum h_i(x) f(x)=g(x)+∑hi(x)其中 g ( x ) g(x) g(x)可微, h i ( x ) h_i(x) hi(x)为凸函数,上述情况也成立。所以coordinate decent可用于解决带有L1正则化的优化问题