梯度下降法:
假设目标优化形式为:
a
r
g
m
i
n
x
f
(
x
)
argmin_xf(x)
argminxf(x)
即我们要求取函数
f
(
x
)
f(x)
f(x)的最小值,那么根据梯度下降法,可以如下算法:
w
h
i
l
e
∣
∣
▽
f
(
x
k
)
∣
∣
≥
ϵ
while||\bigtriangledown f(x_k)||\geq\epsilon
while∣∣▽f(xk)∣∣≥ϵ
d
k
=
−
▽
f
(
x
k
)
d_k=-\bigtriangledown f(x_k)
dk=−▽f(xk)
x
k
+
1
=
x
k
+
α
d
k
x_{k+1}=x_k+\alpha d_k
xk+1=xk+αdk
k
=
k
+
1
k=k+1
k=k+1
e
n
d
end
end
这里更新的方向是使用的梯度的反方向,因为梯度方向函数上升最快,所以其反向下降最快。在这里步长参数
α
\alpha
α尽量取小一点。
批量,随机梯度下降
最速下降法
最速下降法是梯度下降法的一种,它采用了当前“最好”的方向,和“最好”的步长因子。因为最好的方向就是梯度的反向,最好的步长因子满足
α
k
=
a
r
g
m
i
n
α
f
(
x
k
+
α
d
k
)
\alpha_k=argmin_\alpha f(x_k+\alpha d_k)
αk=argminαf(xk+αdk),这个式子的意思是,根据当前方向
d
k
d_k
dk,我们的步长
α
\alpha
α要使
f
(
x
)
f(x)
f(x)下降到当前方向的最小值,也就是将这个方向走完。
那么
α
k
\alpha_k
αk怎么求呢?很简单就是求极值点的过程,因为根据梯度下降算法在上式中
x
k
x_k
xk和
d
k
d_k
dk是已知的,所以我们就直接对
f
(
x
k
+
α
d
k
)
f(x_k+\alpha d_k)
f(xk+αdk)求
α
\alpha
α的导数,就行。比如
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2,则
d
f
(
x
k
+
α
d
k
)
d
α
=
0
\frac{d f(x_k+\alpha d_k)}{d\alpha}=0
dαdf(xk+αdk)=0解得
α
=
−
x
k
d
k
\alpha=-\frac{x_k}{d_k}
α=−dkxk。
理论上,最速下降法只需要n步就可以得到目标值,n表示向量空间维度。比如我们使用
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2来计算
f
(
x
)
′
=
2
x
{f(x)'}=2x
f(x)′=2x设
x
1
=
m
x_1=m
x1=m则
d
1
=
−
2
m
d_1=-2m
d1=−2m
α
1
=
−
x
k
d
k
=
m
2
m
=
1
2
\alpha_1=-\frac{x_k}{d_k}=\frac{m}{2m}=\frac{1}{2}
α1=−dkxk=2mm=21
x
2
=
m
+
1
2
(
−
2
m
)
=
0
x_2=m+\frac{1}{2}(-2m)=0
x2=m+21(−2m)=0,由图像可知
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2的最小值点就在x=0处,所以使用最速下降法我们只使用2步就在二维面上找到了最值点。但是这个最值点可能是局部最优值。,所以最速下降法算法如下:
w
h
i
l
e
∣
∣
▽
f
(
x
k
)
∣
∣
≥
ϵ
while||\bigtriangledown f(x_k)||\geq\epsilon
while∣∣▽f(xk)∣∣≥ϵ
d
k
=
−
▽
f
(
x
k
)
d_k=-\bigtriangledown f(x_k)
dk=−▽f(xk)
α
k
=
a
r
g
m
i
n
α
f
(
x
k
+
α
d
k
)
\alpha_k=argmin_\alpha f(x_k+\alpha d_k)
αk=argminαf(xk+αdk)
x
k
+
1
=
x
k
+
α
k
d
k
x_{k+1}=x_k+\alpha_k d_k
xk+1=xk+αkdk
k
=
k
+
1
k=k+1
k=k+1
e
n
d
end
end
自己的理解:最速下降法使用的相邻下降方向是正交的。在最速下降法中,当次迭代的梯度方向也是和上次迭代梯度方向垂直,但和再之前的梯度方向就不垂直了,所以会有“之”形路线。然后,共轭梯度法要求的是关于矩阵正交,并非直接正交。这是因为每一步都将一个方向走到最优,对于n维空间,那么只需走n步,每一步走的方向都是一个维度。(注意每一步走的方向所代表的维度不一定与坐标轴平行(我们这里说的维度不是坐标轴,是该空间的任何基中的一个方向空间的维数是什么)。但是每个方向之间一定要正交,所以表现出来共轭梯度只需要n步)
最速下降法用于正定二次型
什么是二次型,正定二次型?
设有一个正定二次型:
f
(
x
)
=
1
2
x
T
A
x
+
b
T
x
+
c
f(x)=\frac{1}{2}x^TAx+b^Tx+c
f(x)=21xTAx+bTx+c
我们使用最速下降法来求其最小值:
m
i
n
x
1
2
x
T
A
x
+
b
T
x
+
c
min_x\frac{1}{2}x^TAx+b^Tx+c
minx21xTAx+bTx+c
其一阶导数是:
g
=
A
x
+
b
g=Ax+b
g=Ax+b使用最速下降法更新公式为:
x
k
+
1
=
x
k
−
α
k
g
k
x_{k+1}=x_k-\alpha_kg_k
xk+1=xk−αkgk
怎么求步长
α
\alpha
α呢?,由于最速下降法的连续两次搜索方向是正交的,即:
g
k
+
1
T
g
k
=
0
g_{k+1}^Tg_k=0
gk+1Tgk=0代入
g
k
+
1
=
A
x
k
+
1
+
b
=
A
(
x
k
−
α
k
g
k
)
+
b
=
A
x
k
+
b
−
A
α
k
g
k
=
g
k
−
A
α
k
g
k
g_{k+1}=Ax_{k+1}+b=A(x_k-\alpha_kg_k)+b=Ax_k+b-A\alpha_kg_k=g_k-A\alpha_kg_k
gk+1=Axk+1+b=A(xk−αkgk)+b=Axk+b−Aαkgk=gk−Aαkgk
得到
[
g
k
−
α
k
A
g
k
]
T
g
k
=
0
[g_k-\alpha_kAg_k]^Tg_k=0
[gk−αkAgk]Tgk=0
(
g
k
T
−
α
k
g
k
T
A
T
)
g
k
=
0
(g_k^T-\alpha_kg_k^TA^T)g_k=0
(gkT−αkgkTAT)gk=0
解出
α
k
=
g
k
T
g
k
g
k
T
A
g
k
\alpha_k=\frac{g_k^Tg_k}{g_k^TAg_k}
αk=gkTAgkgkTgk
所以最速下降法应用到正定二次型上的更新公式是:
x
k
+
1
=
x
k
−
g
k
T
g
k
g
k
T
A
g
k
g
k
x_{k+1}=x_k-\frac{g_k^Tg_k}{g_k^TAg_k}g_k
xk+1=xk−gkTAgkgkTgkgk