求平方根(非线性方程)
method1 二分法
method2 简单迭代法
求解
f
(
x
)
=
0
f(x)=0
f(x)=0
整理出
x
n
+
1
=
x
n
−
f
(
x
n
)
x_{n+1}=x_n-f(x_n)
xn+1=xn−f(xn)
缺点:收敛慢,不一定收敛,需满足Lipschitz条件
method3 牛顿迭代法(根据泰勒一阶展开推导)
x
n
+
1
=
x
n
−
f
′
(
x
n
)
f
(
x
n
)
x_{n+1}=x_n-\frac{f'(x_n)}{f(x_n)}
xn+1=xn−f(xn)f′(xn)
其中
f
(
x
n
)
=
x
2
−
n
f(x_n)=x^2-n
f(xn)=x2−n
各种范数的比较
L0范数:非零元素个数
L1范数:绝对值,抗干扰能力更强。L1正则项不可微
L2范数:绝对值的平方,L2正则项可微
区别:
L1正则化,假设变量服从Laplace分布,偏向于使一些权重变为零,产生稀疏的特征矩阵,有利于直观上的特征选择
L2正则化,假设变量服从Gaussian分布,偏向与使所有权重尽量小。
L1正则化系数越大,最优点越靠近零点
L2正则化系数越大,W权值衰减越大
优化方法
梯度下降法:
延梯度方向更新参数,此时目标函数变化最大。
收敛阶
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
共轭梯度法:
共轭方向法与梯度的结合,原问题用来求解对称正定线性方程组的根,可推广到一般优化问题,效率介于梯度下降与牛顿法之间。
求解
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正则化的优化问题
梯度下降方法总结
1)Momentum
保留上一次的梯度方向,基于这次梯度对总方向进行调整
v
t
=
γ
v
t
−
1
+
α
∇
θ
J
(
θ
)
v_t=\gamma v_{t-1}+\alpha \nabla_\theta J(\theta)
vt=γvt−1+α∇θJ(θ)
2)Nesterov Momentum
v
t
=
γ
v
t
−
1
+
α
∇
θ
J
(
θ
−
γ
v
t
−
1
)
v_t=\gamma v_{t-1}+\alpha \nabla_\theta J(\theta-\gamma v_{t-1})
vt=γvt−1+α∇θJ(θ−γvt−1)
改进:对每次求梯度的位置都进行了调整,加入对之后变化的“展望(lookahead)”。加快了收敛速度
3)Adagrad
θ
i
,
t
+
1
=
θ
i
,
t
+
α
G
i
,
t
+
ϵ
∇
θ
i
J
(
θ
)
G
i
,
t
=
G
i
,
t
−
1
+
∇
θ
i
,
t
J
(
θ
)
\theta _{i,t+1}=\theta_{i,t}+\frac{\alpha}{\sqrt{G_{i,t}+\epsilon}} \nabla_{\theta_i} J(\theta) \\ G_{i,t}=G_{i,t-1}+\nabla_{\theta_{i,t}} J(\theta)
θi,t+1=θi,t+Gi,t+ϵα∇θiJ(θ)Gi,t=Gi,t−1+∇θi,tJ(θ)
对于梯度小的方向,学习率会比其他方向在下一次学习中更大,适应处理稀疏特征时,但是学习率总体在减小,训练越来越慢
4)Adadelta,RMSprop
改进Adagrad中学习率减小的问题。用均方根(RMS)来代替G
θ
t
+
1
=
θ
t
+
α
E
[
g
2
]
t
+
ϵ
∇
θ
J
(
θ
)
E
[
g
2
]
t
=
γ
E
[
g
2
]
t
−
1
+
(
1
−
γ
)
g
t
2
\theta _{t+1}=\theta_{t}+\frac{\alpha}{\sqrt{E[g^2]_{t}+\epsilon}} \nabla_{\theta} J(\theta) \\ E[g^2]_t=\gamma E[g^2]_{t-1}+(1-\gamma)g^2_t
θt+1=θt+E[g2]t+ϵα∇θJ(θ)E[g2]t=γE[g2]t−1+(1−γ)gt2
上一次梯度小的放小下一次梯度会被放大,一般
γ
\gamma
γ 取0.9
5)Adam