优化算法与梯度下降
1. 优化和深度学习
在深度学习问题中,通常会预先设定一个损失函数,有了损失函数有,就可以通过优化算法试图将其最小化。这样的损失函数通常被称为优化问题的目标函数(objective function
)。
优化和深度学习的关系 虽然优化为深度学习提供了最小化损失函数的方法,但本质上,优化和深度学习的目标有区别。优化算法的目标函数通常是一个基于训练数据集的损失函数,优化的目标在于降低训练误差。但是深度学习最终的目标是要降低泛化误差。这样,为了降低泛化误差,一方面使用优化算法用来降低训练误差,另外还要注意应对过拟合现象。
1.1 优化在深度学习中的挑战
深度学习中绝大多数目标函数很复杂,并不存在解析解,而需要使用基于数值方法的优化算法找到近似解,即数值解。目前主流的的优化算法都是这类基于数值方法的算法。为了求得最小化目标函数的数值解,需要通过优化算法经过有限次迭代模型参数来尽可能的降低损失函数的值。
优化在深度学习中的两个重要挑战:局部最小值和鞍点。
如图上所示,目标函数在 x x x轴方向上是局部最小值,但在 y y y轴方向上是局部最大值。
假设一个函数的输入可
k
k
k维向量,输出为标量,那么其海瑟矩阵(Hessian matrix
)有
k
k
k个特征值。该函数在梯度为0的位置上可能是局部最小值、局部最大值或鞍点。
- 海瑟矩阵在梯度为零的位置上的特征值全为正时,该函数得到局部最小值;
- 海瑟矩阵在梯度为零的位置上的特征值全为负时,该函数得到局部最大值;
- 海瑟矩阵在梯度为零的位置上的特征值有正有负时,该函数得到鞍点。
另外,根据随机矩阵理论,对于一个大的高斯随机矩阵来说,任一特征值是正或负的概率都是0.5
,这压根,上面两种情况的概率为
0.
5
k
0.5^k
0.5k。由于深度学习模型参数通常都是高维的(
k
k
k很大),因此目标函数中的鞍点现象通常比局部最小值更常见。
2. 机器学习与纯优化的区别和联系
- 纯优化:给定约束下,寻找某些变量,使评价指标 P P P最优
- 机器学习:性能度量 P P P(直接评价指标)直接定义在测试集,并且可能是不可解的。往往是通过降低代价函数 J J J(间接评价准则,在测试数据中求解),来简介降低 P P P
- 给定模型假设空间和评价准则后,在训练数据上的寻优过程是一个直接优化过程
![image-20210110155547243](https://i-blog.csdnimg.cn/blog_migrate/068519499a8eb333dc8086ad150656ba.png)
目标只要优化性能度量 P P P,但是因为其不可直接求解,例如分类任务,指标是分类的准确率。此时就需要寻找替代准则,即此时的代价函数 J J J。替代准则直接在训练集上操作。训练集上的数据是完全已知的,因此准则可直接优化。
2.1 评价准则
网络优化形式化
- 给定网络结构,优化对象为网络的参数: θ = { ω i , . . . , b i } \theta = \{\omega_i,...,b_i\} θ={ωi,...,bi}
- 网络对应映射函数: f θ ( x ) f_{\theta}(x) fθ(x)(可以理解为正向传播计算输出过程)
- 评价准则/目标函数:例如
MSE
J ( θ ) = 1 2 ∑ i = 1 N ∣ y i − f θ ( x i ) ∣ 2 J(\theta) = \frac{1}{2}\sum^N_{i=1}|y_i-f_{\theta}(x^i)|^2 J(θ)=21∑i=1N∣yi−fθ(xi)∣2 - 寻优过程: θ ∗ = a r g min J ( θ ) \theta^{*} = arg \min J(\theta) θ∗=argminJ(θ)
![image-20210110161736946](https://i-blog.csdnimg.cn/blog_migrate/f80c4d8112f6114fdd47e438915d5fe6.png)
深度神经网络的优化特点
- 非线性:难以用解析法直接求出最优解,常使用迭代优化方法(也是对大多数非线性问题的解决方案)
- 参数无约束:多数网络满足
- 需要普适性方法:能够优化不同的网络结构
- 非凸:局部极小值 ≠ \ne =全部极小值,甚至是多个局部极小值
- 高维:优化参数数以万计,局部最小值点罕见,鞍点常见
- 求解数据集规模大:优化算法需考虑效率
贪心优化过程
- 网络优化:在复杂高维函数的代价函数曲面上进行搜索
- 全部状况:难以了解(我在哪儿?要去哪儿?)
- 迭代优化:蒙面下山——在代价函数曲面上逐步移动,期望到达最低点的过程
- 但是怎么走?往哪儿走?(方向)走多远?(步长)
- 贪心策略:不管以后怎样,只考虑当前利益最大化——每次选择当前代价函数下降最大的方向和步长
3. 梯度下降法
根据上面的分析,优化过程是要使当前步变化引起代价函数变化最大(贪心策略)。
Δ
J
(
θ
)
=
J
(
w
1
+
Δ
w
1
,
w
2
+
Δ
w
2
)
−
J
(
w
1
,
w
2
)
\Delta J(\theta) = J(w_1+\Delta w_1,w_2+\Delta w_2)-J(w_1,w_2)
ΔJ(θ)=J(w1+Δw1,w2+Δw2)−J(w1,w2)
因果关系:
Δ
W
→
Δ
f
θ
→
Δ
J
(
θ
)
\Delta W\rightarrow \Delta f_{\theta} \rightarrow \Delta J(\theta)
ΔW→Δfθ→ΔJ(θ)
其中:
Δ
W
=
(
Δ
w
1
,
Δ
w
2
)
=
(
Δ
w
1
ϵ
,
Δ
w
2
ϵ
)
⋅
ϵ
=
(
c
o
s
φ
1
,
c
o
s
φ
2
)
⋅
ϵ
=
ρ
⋅
ϵ
(
∣
ρ
∣
=
1
)
\begin{aligned} \Delta W & =(\Delta w_1, \Delta w_2)\\ & =(\frac{\Delta w_1}{\epsilon},\frac{\Delta w_2}{\epsilon})\cdot \epsilon\\ &=(cos \varphi_1, cos \varphi_2 )\cdot \epsilon\\ &=\rho \cdot \epsilon {\kern 13pt} (|\rho| = 1) \end{aligned}
ΔW=(Δw1,Δw2)=(ϵΔw1,ϵΔw2)⋅ϵ=(cosφ1,cosφ2)⋅ϵ=ρ⋅ϵ(∣ρ∣=1)
这里的
ρ
\rho
ρ表示移动方向,是向量。
ϵ
\epsilon
ϵ表示移动步长,是标量。
代价函数增量
Δ
J
(
θ
)
=
J
(
w
1
+
Δ
w
1
,
w
2
+
Δ
w
2
)
−
J
(
w
1
,
w
2
)
)
=
Δ
J
(
θ
)
=
J
(
w
1
+
Δ
w
1
,
w
2
+
Δ
w
2
)
−
J
(
w
1
,
w
2
)
∣
Δ
W
∣
⋅
∣
Δ
W
∣
\begin{aligned} \Delta J(\theta) &= J(w_1+\Delta w_1,w_2+\Delta w_2)-J(w_1,w_2))\\ & =\frac{\Delta J(\theta) = J(w_1+\Delta w_1,w_2+\Delta w_2)-J(w_1,w_2)}{|\Delta W|}\cdot |\Delta W| \end{aligned}
ΔJ(θ)=J(w1+Δw1,w2+Δw2)−J(w1,w2))=∣ΔW∣ΔJ(θ)=J(w1+Δw1,w2+Δw2)−J(w1,w2)⋅∣ΔW∣
代价函数是个标量。
Δ
J
(
θ
)
\Delta J(\theta)
ΔJ(θ)在
ρ
(
Δ
W
)
\rho(\Delta W)
ρ(ΔW)方向上的方向导数为:
∂
J
(
θ
)
∂
ρ
=
lim
Δ
W
→
0
J
(
w
1
+
Δ
w
1
,
w
2
+
Δ
w
2
)
−
J
(
w
1
,
w
2
)
)
∣
Δ
W
∣
\frac{\partial J(\theta)}{\partial \rho}=\lim_{\Delta W \rightarrow 0}\frac{J(w_1+\Delta w_1,w_2+\Delta w_2)-J(w_1,w_2))}{|\Delta W|}
∂ρ∂J(θ)=ΔW→0lim∣ΔW∣J(w1+Δw1,w2+Δw2)−J(w1,w2))
方向导数是个标量,梯度才是矢量,方向导数(标量)是梯度(矢量)在该方向上的投影。
在
∣
Δ
W
∣
=
∣
ρ
ϵ
∣
|\Delta W| = |\rho \epsilon|
∣ΔW∣=∣ρϵ∣足够小时,结合上面式子:
Δ
J
(
θ
)
=
∂
J
(
θ
)
∂
ρ
∣
Δ
W
∣
=
∂
J
(
θ
)
∂
ρ
⋅
∣
ρ
ϵ
∣
=
∂
J
(
θ
)
∂
ρ
⋅
ϵ
\Delta J(\theta) = \frac{\partial J(\theta)}{\partial \rho}|\Delta W| = \frac{\partial J(\theta)}{\partial \rho}\cdot |\rho \epsilon| = \frac{\partial J(\theta)}{\partial \rho}\cdot \epsilon
ΔJ(θ)=∂ρ∂J(θ)∣ΔW∣=∂ρ∂J(θ)⋅∣ρϵ∣=∂ρ∂J(θ)⋅ϵ
这里成立的前提不仅仅是因为
∣
ρ
=
1
∣
|\rho = 1|
∣ρ=1∣,更重要的是
ϵ
\epsilon
ϵ是个标量。
根据上式,目标是使得 Δ J ( θ ) \Delta J(\theta) ΔJ(θ)在相同 ϵ \epsilon ϵ下最大,在步长 ϵ \epsilon ϵ一定时,该式的大小取决于方向导数 ∂ J ( θ ) / ∂ ρ \partial J(\theta)/\partial \rho ∂J(θ)/∂ρ.
如何确定?
展开(3)式:
∂
J
(
θ
)
∂
ρ
=
lim
Δ
W
→
0
J
(
w
1
+
Δ
w
1
,
w
2
+
Δ
w
2
)
−
J
(
w
1
,
w
2
)
)
∣
Δ
W
∣
=
lim
Δ
W
→
0
∂
J
(
w
1
,
w
2
)
∂
w
1
⋅
Δ
w
1
+
∂
J
(
w
1
,
w
2
)
∂
w
2
⋅
Δ
w
2
+
O
(
Δ
W
)
∣
Δ
W
∣
=
lim
Δ
W
→
0
(
∂
J
(
w
1
,
w
2
)
∂
w
1
⋅
Δ
w
1
Δ
W
+
∂
J
(
w
1
,
w
2
)
∂
w
2
⋅
Δ
w
2
Δ
W
+
O
(
Δ
W
)
∣
Δ
W
∣
)
=
∂
J
(
w
1
,
w
2
)
∂
w
1
⋅
c
o
s
φ
1
+
∂
J
(
w
1
,
w
2
)
∂
w
2
⋅
c
o
s
φ
2
=
{
∂
J
(
w
1
,
w
2
)
∂
w
1
,
∂
J
(
w
1
,
w
2
)
∂
w
2
}
⋅
{
c
o
s
φ
1
,
c
o
s
φ
2
}
=
g
r
a
d
J
(
w
1
,
w
2
)
⋅
ρ
=
∣
g
r
a
d
J
(
w
1
,
w
2
)
∣
⋅
∣
ρ
∣
⋅
c
o
s
<
g
r
a
d
J
(
w
1
,
w
2
)
,
ρ
>
=
∣
g
r
a
d
J
(
w
1
,
w
2
)
∣
⋅
c
o
s
<
g
r
a
d
J
(
w
1
,
w
2
)
,
ρ
>
\begin{aligned} \frac{\partial J(\theta)}{\partial \rho}&=\lim_{\Delta W \rightarrow 0}\frac{J(w_1+\Delta w_1,w_2+\Delta w_2)-J(w_1,w_2))}{|\Delta W|}\\ &= \lim_{\Delta W \rightarrow 0}\frac{\frac{\partial J(w_1,w_2)}{\partial w_1} \cdot \Delta w_1+\frac{\partial J(w_1,w_2)}{\partial w_2} \cdot \Delta w_2+O(\Delta W)}{|\Delta W|}\\ &=\lim_{\Delta W \rightarrow 0}(\frac{\partial J(w_1,w_2)}{\partial w_1}\cdot \frac{\Delta w_1}{\Delta W}+\frac{\partial J(w_1,w_2)}{\partial w_2} \cdot \frac{\Delta w_2}{\Delta W}+\frac{O(\Delta W)}{|\Delta W|})\\ &= \frac{\partial J(w_1,w_2)}{\partial w_1}\cdot cos \varphi_1+\frac{\partial J(w_1,w_2)}{\partial w_2} \cdot cos \varphi_2\\ &=\{\frac{\partial J(w_1,w_2)}{\partial w_1},\frac{\partial J(w_1,w_2)}{\partial w_2}\}\cdot \{cos \varphi_1, cos \varphi_2\}\\ &=grad {\kern 5pt}J(w_1,w_2) \cdot \rho\\ &=|grad {\kern 5pt}J(w_1,w_2)| \cdot |\rho| \cdot cos<grad {\kern 5pt}J(w_1,w_2), \rho>\\ &=|grad {\kern 5pt}J(w_1,w_2)| \cdot cos <grad {\kern 5pt}J(w_1,w_2), \rho> \end{aligned}
∂ρ∂J(θ)=ΔW→0lim∣ΔW∣J(w1+Δw1,w2+Δw2)−J(w1,w2))=ΔW→0lim∣ΔW∣∂w1∂J(w1,w2)⋅Δw1+∂w2∂J(w1,w2)⋅Δw2+O(ΔW)=ΔW→0lim(∂w1∂J(w1,w2)⋅ΔWΔw1+∂w2∂J(w1,w2)⋅ΔWΔw2+∣ΔW∣O(ΔW))=∂w1∂J(w1,w2)⋅cosφ1+∂w2∂J(w1,w2)⋅cosφ2={∂w1∂J(w1,w2),∂w2∂J(w1,w2)}⋅{cosφ1,cosφ2}=gradJ(w1,w2)⋅ρ=∣gradJ(w1,w2)∣⋅∣ρ∣⋅cos<gradJ(w1,w2),ρ>=∣gradJ(w1,w2)∣⋅cos<gradJ(w1,w2),ρ>
倒是第三行:
a
⋅
b
=
∣
a
∣
⋅
∣
b
∣
c
o
s
<
a
,
b
>
a \cdot b = |a|\cdot|b| cos<a,b>
a⋅b=∣a∣⋅∣b∣cos<a,b>
推导到了这一步, ∣ g r a d J ( w 1 , w 2 ) ∣ |grad J(w_1,w_2)| ∣gradJ(w1,w2)∣是个定值,则取决于 c o s < g r a d J , ρ > cos<grad J,\rho> cos<gradJ,ρ>.
即
∂
J
(
θ
)
∂
ρ
=
∣
g
r
a
d
J
(
w
1
,
w
2
)
∣
⋅
c
o
s
<
g
r
a
d
J
(
w
1
,
w
2
)
,
ρ
>
\frac{\partial J(\theta)}{\partial \rho}=|grad {\kern 5pt}J(w_1,w_2)| \cdot cos <grad {\kern 5pt}J(w_1,w_2), \rho>
∂ρ∂J(θ)=∣gradJ(w1,w2)∣⋅cos<gradJ(w1,w2),ρ>
可知,当
c
o
s
<
g
r
a
d
J
(
w
1
,
w
2
)
,
ρ
>
=
−
1
cos <grad {\kern 5pt}J(w_1,w_2), \rho> = -1
cos<gradJ(w1,w2),ρ>=−1时,在该方向的方向导数变化最大,即
ρ
\rho
ρ和
g
r
a
d
J
(
θ
)
grad J(\theta)
gradJ(θ)反向。
即下降最快方向/变化最大方向为梯度反方向。
min
∂
J
(
θ
)
∂
ρ
=
−
∣
g
r
a
d
J
(
w
1
,
w
2
)
∣
\min \frac{\partial J(\theta)}{\partial \rho} = -|grad J(w_1,w_2)|
min∂ρ∂J(θ)=−∣gradJ(w1,w2)∣
KaTeX parse error: Expected 'EOF', got '}' at position 101: …\cdot \epsilon }̲{\partial \rho}…
min Δ J ( θ ) = − ∣ g r a d J ( w 1 , w 2 ) ∣ ⋅ ϵ = − ∇ θ J ( θ ) ⋅ ϵ \min \Delta J(\theta) = -|grad J(w_1,w_2)|\cdot \epsilon = -\nabla_{\theta}J(\theta)\cdot \epsilon minΔJ(θ)=−∣gradJ(w1,w2)∣⋅ϵ=−∇θJ(θ)⋅ϵ