本章介绍深度模型中的常见算法及优化,部分先简单介绍其概念,后续再继续展开。
1、神经网络优化中的挑战
首先看下深度网络优化中的挑战
1、病态
比如梯度范数随着时间不收敛
2、局部极小值
3、高点、鞍点和其他平坦区域
鞍点:某个横截面(方向)上局部最小值,某个横截面上取局部极大值
4、悬崖和梯度爆炸
5、长期依赖
由于变深的结构使模型丧失了学习到先前信息的能力,让优化变得极其困难
2、基本算法
2.1 随机梯度下降
随机梯度下降(SGD)及其变种是机器学习中最常用的优化算法。每次随机提取m个小批量(独立分布的)样本,
进行优化。实际工作这个方法非常有效,比如它比较容易绕过局部极小值,鞍点。
随机梯度下降(SGD)在第k 个训练迭代的更新

SGD算法中的一个关键参数是学习率。之前,我们介绍的SGD使用固定的学习率。
在实践中,有必要随着时间的推移逐渐降低学习率,因此我们将第k 步迭代的学习率记作ϵk。
学习率如果过小收敛太慢,过大可能出无法收敛,在极值附近上下跳动。
线性衰减学习率

指数衰减学习率
Dcayed_learning_rate = learning_rate * decay ^(global_steps/decay_steps)
learning_rate 为初始学习率,比如0.1
decay 为衰减系数, 比如0.9
decay_steps 一般采用global_steps/batch 即每完整地过完一遍训练数据,学习率检查一次(比如乘以0.9一次)
2.2 动量
学习率上增加速度因素
浅理解:连续的梯度指向同一个方向时,步长比较大,如一个冰球在最陡的方向往下滑时,会累积这个方向的速度,
直到该方向向上滑时开始减少。


2.3 nesterow动量
标准动量方法的变种,标准动量方法加了一个校正因子。
3、参数初始化策略
参数初始化策略:本身比较困难的事情,其次初始化对优化看有利从泛化看可能不利的。
通常高斯分布或均匀分布中随机取值,还有一些标准初始化,超参数等等一些方法。
还有一种,无监督算法来训练出来的初始值比随机初始值更快的训练效果
4、自适应学习率算法
1、AdaGrad算法
自适应学习率算法,AdaGrad算法,独立的适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史
平方值总和的平方根。

2、RMSProp 算法
RMSProp 算法,修改AdaGrad算法以非凸设定下效果更高。指数衰减平均以丢弃遥远过去的历史。
即弱化比较远的历史数据

Nesterov 动量的RMSProp 算法

经验上RMSProp 算法使用且有效的深度学习优化算法
3、Adam算法
是另一种学习率自适应的算法,Adam中,动量直接并入了梯度一阶估计,其次Adam包括偏置修正,修正从
原点初始化的一阶拒(动量项)和(非中心)二阶矩估计。

经验上RMSProp 算法使用且有效的深度学习优化算法
选择正确的优化算法,目前没有共识,结果表明自适应性学习率有时表现的相当鲁莽。
所以似乎取决于使用者的熟练程度以便调参数。
目前,最流行并且使用很高的优化算法包括SGD、具动量的SGD、RMSProp、具动量
的RMSProp、AdaDelta 和Adam。此时,选择哪一个算法似乎主要取决于使用者对算法的
熟悉程度(以便调节超参数)
5、二阶近似法
浅理解:梯度之上,二阶导数表示曲率,梯度是一阶即线性的(直线)。物理上速度和加速度。所以二阶导数
(基于二阶泰勒级数)预期一个梯度下降表现更好。二阶导数矩阵叫hessian 矩阵。梯度信息优化的算法为一阶优化算法,
Hessian 矩阵的优化算法为二阶最优化算法,如牛顿法。
梯度方法不同的方向曲率差别比较大时可能存在来回非常缓慢的下降的特征,如图

另外临界点处(∇xf(x) = 0),hessian 矩阵来可以判断局部极小点极大点和鞍点,如果Hessian 正定的局部极小点,
负定的局部极大点。在多维情况下,实际上我们可以找到确定该点是否为鞍点的积极迹象(某些情况下)。如果Hessian
的特征值中至少一个是正的且至少一个是负的,那么x 是f 某个横截面的局部极大点,却是另一个横截面的局部极小点。
牛顿法基于二阶泰勒展开近似值。牛顿法正定二次函数时一次就能达到最小点,不是真正二次但局部近似为正定二次
时多次迭代,但比梯度更快。但牛顿法对鞍点是有害的,牛顿法最近临界点是最小点时才适用,而梯度下降不会被吸引到鞍点。
如下

6、优化策略和元算法
1、批标准化
对数据进行标准化,可用于任意输入层或隐藏层。

其中σ 是包含每个单元均值的向量,μ 是包含每个单元标准差的向量。
2、坐标下降
优化中数据分成多个部分,当优化问题中的不同变量能够清楚地分成相对独立的组,
或是当优化一组变量明显比优化所有变量效率更高时,坐标下降最有意义。例如,考虑代价函数

该函数描述了一种被称为稀疏编码的学习问题,其目标是寻求一个权重矩阵W,可
以线性解码激活值矩阵H 以重构训练集X。稀疏编码的大多数应用还涉及到权重衰减或W
列范数的约束,以避免极小H 和极大W 的病态解。
3、Polyak平均
Polyak平均算法对平均优化参数空间访问的几个点。一般采用指数衰减方法(弱化遥远过去的点)
4、监督预训练
贪心监督预训练法是把监督训练问题分解成其他的简单化监督学习问题的预预训练方法。
如
1)训练子集层的训练,在联合训练
2)扩展迁移学习的想法,预训练前k个浅层,再训练整个深层
3)FitNets,先训练宽且浅的网络(老师网络),然后训练窄而深的网络(学生网络)
5、设计有助于优化的模型
在实践中,选择一族容易优化的模型比使用一个强大的优化算法更重要。
6、延拓法和课程学习
传统意义上延拓法是,一族通过挑选初始点使优化更容易的方法,找到良好的局部初始点。
主要用来克服局部极小值的问题。而这个已经不是神经网络优化中的重要问题了。但仍有所帮助。
此外,课程学习和塑造的方法(被解析为拖延方法),贡献体现在其他领域内(循环网络的长期依赖).
本文介绍了深度学习优化中的挑战,如病态、局部极小值等,并详细讨论了随机梯度下降、动量算法、Nesterov动量、参数初始化策略、自适应学习率算法(AdaGrad、RMSProp、Adam)以及二阶近似法。优化策略包括批标准化、坐标下降、Polyak平均和预训练等,强调选择易于优化的模型和初始点的重要性。
1373

被折叠的 条评论
为什么被折叠?



