1.梯度
梯度是函数在某点的所有偏导数组成的向量,是函数在该点变化最快的方向。
2.泰勒展开式
泰勒展开式的本质,是针对非多项式,用多项式在某点逼近非多项式的每一阶。当阶数无穷大时,可以认为多项式等于非多项式。
非多项式
f
(
x
)
f(x)
f(x)在点
x
0
x_{0}
x0处的
n
n
n阶泰勒展开式为:
f
(
x
)
=
f
′
(
x
0
)
+
f
′
(
x
0
)
1
!
(
x
−
x
0
)
+
f
′
′
(
x
0
)
2
!
(
x
−
x
0
)
2
+
.
.
.
+
f
n
(
x
0
)
n
!
(
x
−
x
0
)
n
=
f
′
(
x
0
)
+
f
′
(
x
0
)
1
!
Δ
x
+
f
′
′
(
x
0
)
2
!
Δ
x
2
+
.
.
.
+
f
n
(
x
0
)
n
!
Δ
x
n
\begin{aligned} f(x) &= f^{'} (x_{0} )+\frac{f^{'} (x_{0} )}{1!} (x-x_{0} )+\frac{f^{''} (x_{0} )}{2!} (x-x_{0} )^{2}+...+\frac{f^{n} (x_{0} )}{n!} (x-x_{0} )^{n} \\ &=f^{'} (x_{0} )+\frac{f^{'} (x_{0} )}{1!} \Delta x+\frac{f^{''} (x_{0} )}{2!} \Delta x^{2}+...+\frac{f^{n} (x_{0} )}{n!} \Delta x^{n} \end{aligned}
f(x)=f′(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+n!fn(x0)(x−x0)n=f′(x0)+1!f′(x0)Δx+2!f′′(x0)Δx2+...+n!fn(x0)Δxn
3.梯度下降法原理解析
梯度下降法是求解无约束最优化问题最常用的方法之一。
梯度下降法用一阶泰勒展开式代替原函数,迭代计算原函数在当前取值邻域内的极值。具体的,函数迭代的每一步都朝着梯度的负方向,直到误差小于阈值。
为什么要用梯度下降来寻找极值?因为梯度的方向是函数值往极值点变化最快的方向,证明如下:
已知第
k
k
k次的迭代值为
x
k
x^{k}
xk,则第
k
+
1
k+1
k+1次的迭代值为
x
k
+
1
x^{k+1}
xk+1,假设它俩之间有如下关系:
x
k
+
1
=
x
k
+
λ
p
k
x^{k+1}=x^{k}+\lambda p_{k}
xk+1=xk+λpk
将
f
(
x
)
f(x)
f(x)在
x
k
+
1
x^{k+1}
xk+1处进行一阶泰勒展开:
f
(
x
k
+
1
)
=
f
(
x
k
+
λ
p
k
)
=
f
(
x
k
)
+
▽
f
(
x
k
)
λ
p
k
f(x^{k+1})=f(x^{k}+\lambda p_{k})=f(x^{k})+\bigtriangledown f(x^{k})\lambda p_{k}
f(xk+1)=f(xk+λpk)=f(xk)+▽f(xk)λpk
由上式可知,当
p
k
=
−
▽
f
(
x
k
)
p_{k}=-\bigtriangledown f(x^{k})
pk=−▽f(xk),函数值减小最快。
上式中,
▽
f
(
x
k
)
\bigtriangledown f(x^{k})
▽f(xk)为函数在
x
k
x^{k}
xk的梯度,是函数变化最快的方向。
λ
\lambda
λ是步长,表示函数每次迭代沿负梯度方向移动的距离,当其取值较小时,迭代次数较多;取值较大时,容易在极值点处产生震荡。
4.梯度下降法的一般流程
输入:目标函数
f
(
x
)
f(x)
f(x),阈值
ϵ
\epsilon
ϵ。
输出:函数
f
(
x
)
f(x)
f(x)的极值点
x
∗
x^{*}
x∗。
(1)取合适的初始值
x
0
x^{0}
x0,
k
=
1
k=1
k=1。
(2)计算函数在
x
k
x^{k}
xk处的取值
f
(
x
k
)
f(x^{k})
f(xk)和梯度
▽
f
(
x
k
)
\bigtriangledown f(x^{k})
▽f(xk)。
(3)如果
∣
▽
f
(
x
k
)
∣
≤
ϵ
|\bigtriangledown f(x^{k})|\le\epsilon
∣▽f(xk)∣≤ϵ,令
x
∗
=
x
k
x^{*}=x^{k}
x∗=xk;否则,令
p
k
=
−
▽
f
(
x
k
)
p_{k}=-\bigtriangledown f(x^{k})
pk=−▽f(xk),转(4)。
(4)计算
x
k
+
1
=
x
k
+
λ
p
k
x^{k+1}=x^{k}+\lambda p_{k}
xk+1=xk+λpk和函数值
f
(
x
k
+
1
)
f(x^{k+1})
f(xk+1),如果
∣
x
k
+
1
−
x
k
∣
≤
ϵ
|x^{k+1}- x^{k} |\le \epsilon
∣xk+1−xk∣≤ϵ或
∣
f
(
x
k
+
1
)
−
f
(
x
k
)
∣
≤
ϵ
|f(x^{k+1})- f(x^{k}) |\le \epsilon
∣f(xk+1)−f(xk)∣≤ϵ<令
x
∗
=
x
k
+
1
x^{*}=x^{k+1}
x∗=xk+1;否则,令
k
=
k
+
1
,
k=k+1,
k=k+1,转(2)。
(5)输出极小值
x
∗
x^{*}
x∗。
5.梯度下降法调优
(1)初始值的选择
当目标函数为凸函数时,任选一个初始值就可以迭代优化至最小值;当目标函数为非凸函数时,梯度下降法一般得到是极小值。因此,可以选择多个初始值,在结果中选择最小的值作为解。
(2)步长的选择
步长较小,迭代次数多,收敛慢,但是结果准确;步长较大,容易错过极值点或者在极值点附近震荡,但是收敛较快。因此,可以选择多个步长进行尝试。
(3)归一化
由于特征的单位不同,取值范围也不同。可以将特征进行归一化处理,使数值无量纲化,这样也可以加快迭代速度。
6.常用几种梯度下降法简介
(1)批量梯度下降法
在每一次迭代更新参数时,使用所有的样本参与计算。
(2)小批量梯度下降法
在每一次迭代更新参数时,随机选取一部分样本参与计算。
(3)随机梯度下降法
在每一次迭代更新参数时,随机选取一个样本参与计算。
7.梯度下降法与最小二乘法
两者都是求解无约束最优化的方法。最小二乘法直接求解出解析解,在样本容量较小并且有逆矩阵存在时使用。梯度下降适用于样本容量大或逆矩阵不存在时。