神经网络存在的问题:
-
优化问题:神经网络模型是一个非凸函数,梯度消失,参数比较多,训练
数据也比较大,会导致训练的效率比较低。 -
泛化问题:容易过拟合。
优化的难点
- 网络结构多样性:CNN、RNN等
- 低维空间的非凸优化问题主要是存在一些局部最优点,出发点应该是如何初始参数和逃离局部最优点。
- 高维的非凸优化问题主要是逃离鞍点
优化算法
-
**小批量梯度下降:**损失函数关于参数θ 的偏导数为更新的梯度 g t g_t gt,学习率是更新参数时的一个常量。使用梯度下降来更新参数:
θ t ← θ t − 1 − α g t θt ← θ_{t−1} − αg_t θt←θt−1−αgt
∆θt 为每次迭代时参数的实际更新方向,在标准的小批量梯度下降中, ∆ θ t = − α g t ∆θt= −αg_t ∆θt=−αgt。
***注意:***批量大小较小时,需要设置较小的学习率较,否则模型会不收敛。 -
加快优化速度方法:学习率衰减和梯度方向优化
学习率衰减
迭代次数衰减
-
逆时衰减(inverse time decay)
α t = α 0 1 1 + β × t \alpha_t=\alpha _0\frac{1}{1+\beta \times t} αt=α01+β×t1 -
指数衰减(exponential decay),其中β 为衰减率,一般取值为0.96。
α t = α 0 β t α_t = α_0β^t αt=α0βt
梯度方向优化
通过使用最近一段时间内的平均梯度来代替当前时刻的梯度来作为参数更新的方向并提高优化速度,这就是动量法。
- 问题:如图,在小批量梯度下降中,如果每次选取样本数量比较小,损失会呈现震荡的方式下降。
自适应动量估计(Adaptive Moment Estimation, Adam)算法
- 可以看作是动量法和 RMSprop 的结合,不但使用动量作为参数更新方向,而且可以自适应调整学习率。