文章目录
Task1:《深度学习详解》- 3.1 局部极小值与鞍点(6页+34分钟)
Part01.视频笔记
为什么优化会失败?
随着updates增加,训练的Loss会出现
- 不够小
- (或者)一直在较大的数值处振荡
(梯度会趋近于零,Loss也就不再更新)
梯度为零的情况:局部最小值(local minima)和鞍点(saddle point)
梯度为零的点称为critical point
如果卡在了local minima,那训练就无路可走了
而如果卡在了saddle point,还有可以逃离的路线。
数学知识
泰勒展开式
L
(
θ
)
≈
L
(
θ
′
)
+
(
θ
−
θ
′
)
T
g
+
1
2
(
θ
−
θ
′
)
T
H
(
θ
−
θ
′
)
(1)
L(\theta) \approx L(\theta') + (\theta -\theta')^T g + \frac{1}{2}(\theta - \theta')^T H(\theta -\theta')\tag1
L(θ)≈L(θ′)+(θ−θ′)Tg+21(θ−θ′)TH(θ−θ′)(1)
其中(gradient)g是一个向量(vector)满足
g
=
∇
L
(
θ
′
)
g = \nabla L(\theta')
g=∇L(θ′) 且
g
i
=
∂
L
(
θ
′
)
∂
θ
i
g_i = \frac{\partial L(\theta')}{\partial \theta_i}
gi=∂θi∂L(θ′)
而(Hessian)H是一个矩阵(matrix)满足
H
i
j
=
∂
2
∂
θ
i
∂
θ
j
L
(
θ
′
)
H_{ij} = \frac{\partial^2}{\partial \theta_i \partial \theta_j} L(\theta')
Hij=∂θi∂θj∂2L(θ′)
- 在critical point时,(1)式中的第二相就为零了
此时,不妨记 v T = ( θ − θ ′ ) T v^T = (\theta-\theta')^T vT=(θ−θ′)T 和 v = θ − θ ′ v = \theta-\theta' v=θ−θ′,那么就有 L ( θ ) ≈ L ( θ ′ ) + v T H v L(\theta) \approx L(\theta')+v^T H v L(θ)≈L(θ′)+vTHv (系数1/2可以被忽略)
当 v T H v > 0 v^T H v > 0 vTHv>0对于所有的 v v v都成立,那么 θ ′ \theta' θ′是一个local minima; - H是一个正定矩阵(矩阵的所有特征值都是正的)
当 v T H v < 0 v^T H v < 0 vTHv<0对于所有的 v v v都成立,那么 θ ′ \theta' θ′是一个local maxima; - H是一个负定矩阵(矩阵的所有特征值都是负的)
如果有时 v T H v > 0 v^T H v > 0 vTHv>0有时 v T H v < 0 v^T H v < 0 vTHv<0,那么 θ ′ \theta' θ′是一个saddle point。 - H的特征值有正有负
不要害怕鞍点(saddle point)
Hessian矩阵指出参数update方向
假设
u
u
u是H的一个特征向量,
λ
\lambda
λ是
u
u
u对应的特征值,那么
u
T
H
u
=
u
T
(
λ
u
)
=
λ
∥
u
∥
2
u^THu=u^T(\lambda u)=\lambda \lVert u \rVert^2
uTHu=uT(λu)=λ∥u∥2
当
λ
<
0
\lambda<0
λ<0时,
L
(
θ
)
<
L
(
θ
′
)
L(\theta) < L(\theta')
L(θ)<L(θ′)—>沿着
u
u
u的方向,就可以逃离鞍点,降低Loss
鞍点与局部最小值
低纬度的鞍点或局部最小值在高纬度的角度可能并不存在;
从经验的角度来看,局部最小值没有那么常见;
Task2:《深度学习详解》 - 3.2 批量和动量(7页+31分钟)
Part01.视频笔记
通过批量(batch size)优化
将训练数据分成多个批量,每次迭代时只应用一个批量的数据;
epoch:将所有的批量训练一遍(shuffle after each epoch)
大小批量的比较
大批量 | 小批量 | |
---|---|---|
训练时间(没有并行计算) | 慢 | 快 |
训练效果(有并行计算) | 一样(只要批量不是特别大) | 一样 |
一次epoch的训练时间 | 快 | 慢 |
梯度 | 稳定 | 不稳定 |
优化 | 差 | 好 |
泛化 | 差 | 好 |
排除一些刻板印象:
大批量的不一定需要更多时间去计算梯度(并行运算的帮助);
同时,小批量的训练效果更好(而且不是过拟合)
小批量的测试效果也更好
通过动量(momentum)优化
优化方向:梯度反方向+上一步优化方向:
m
n
=
λ
m
n
−
1
−
η
g
n
−
1
m^n = \lambda m^{n-1} - \eta g^{n-1}
mn=λmn−1−ηgn−1
那么第
m
m
m步移动方向可以视作前面所有梯度的加权和