深度学习中优化技术总结

2023-10-02 12:41:01 浏览数 (1)

【导读】大家好,我是泳鱼。深度学习中的正则化与优化策略一直是非常重要的部分,它们很大程度上决定了模型的泛化与收敛等性能。本文主要以深度卷积网络为例,探讨了深度学习中的三项梯度下降优化算法、五项正则化与七项优化策略。

1 背景与应用

学习深度网络架构需要大量数据,是一个计算需求很高的任务。神经元之间的连接和参数数量庞大,需要梯度下降优化或其变端进行迭代调整,但存在许多局限,例如无法处理非凸复杂函数以及难以找到全局最小值。因此,可以使用正则化和优化技术来克服过度拟合和计算代价高的问题。

图1 CNN的架构

2 梯度下降

梯度下降,也称为最陡下降法,是一种迭代优化算法,通过迭代过程中计算函数的负导数点来寻找复杂函数的最小值。导数是函数斜率的变化率,通常表示函数在任意给定点的变化,前提是函数是连续可微的。

2.1 批量梯度下降

批量梯度下降是一种优化算法,用于在机器学习中通过计算整个训练数据集的成本函数相对于参数的梯度来更新模型的参数。这种方法也被称为普通梯度下降。成本函数是衡量模型拟合训练数据的程度的指标,梯度是成本函数最陡峭上升的方向。该算法通过减去梯度乘以学习率的一部分来更新参数。批量梯度下降在处理大型数据集时计算成本较高,但它可以收敛到成本函数的全局最小值。

2.2 随机梯度下降

随机梯度下降,它是一种机器学习中使用的优化技术,通过计算成本函数相对于训练数据集的随机选择子集的参数梯度来更新模型的参数。这种方法也被称为增量梯度下降或在线学习。该算法通过每次迭代顺序更新参数,降低计算成本并避免从大型数据集中获得的非凸函数的局部最小值。然而,与批量梯度下降相比,梯度下降优化的随机逼近结果具有更大的方差。学习率是SGD中的关键步骤,通常比批量梯度下降的学习率小得多。

2.3 小批量梯度下降

小批量梯度下降,它是一种机器学习中使用的批量梯度下降优化算法的变体,通过计算成本函数相对于训练数据集的小随机选择子集的参数梯度来更新模型的参数。这种方法涉及将训练样本分成多个小批次,每个小批次包含多个样本,而不是每次迭代只使用一个样本。这些小批次用于计算误差和更新参数。小批次梯度的梯度总和或平均值相对于随机优化减少了方差,从而导致更稳定的收敛。小批量梯度下降通常用于深度学习模型中,并且在文本中以公式形式表示。

3 正则化技术

算法正则化旨在提高算法泛化性能,在机器学习领域备受关注。正则化对于深度学习模型至关重要,因为其参数多于训练数据集。正则化可以避免过拟合,当算法学习输入数据及噪声时,过拟合现象常出现。近年来,人们提出了多种正则化方法,如数据增强、L2正则化或权重衰减、L1正则化、dropout、drop connect、随机池化和早停。

除了泛化原因,奥卡姆剃刀原理和贝叶斯估计也都支持着正则化。根据奥卡姆剃刀原理,在所有可能选择的模型中,能很好解释已知数据,并且十分简单的模型才是最好的模型。而从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。

3.1 数据增强

数据增强通过添加对训练数据的转换或扰动来人工增加训练集的重要性,而不需要增加计算成本。常见的技术包括水平或垂直翻转图像、裁剪、颜色抖动、缩放和旋转等。在imagenet分类中,Krizhevsky等人通过PCA改变RGB颜色通道强度,提高AlexNet性能。Bengio等人证明,深层架构从数据增强技术中受益更多。张等人通过数据论证技术和显式正则化器提高性能。Chaoyun等人通过数据增强技术提高叶子分类性能,开发的ConvNet架构优于其他分类方法。

3.2 L1 和 L2 正则化

L1 和 L2 正则化是深度卷积神经网络中最常用的正则化方法。L1正则化通过向目标函数添加正则化项来减少参数的绝对值之和,而L2正则化则通过向目标函数添加正则化项来减少参数的平方和。L1正则化中的许多参数向量是稀疏的,因为许多模型导致参数为零。因此,L1正则化可以应用于特征选择。机器学习中最常用的正则化方法是给权重施加一个平方L2范数约束,也称为权重衰减或吉洪诺夫(Tikhonov)正则化。

3.3 Dropout

Dropout是一种在训练神经网络时随机丢弃部分神经元及其连接的方法,有助于防止过拟合,提高融合不同网络架构的效率。神经元以1-p的概率被丢弃,降低相互适应性。通过对所有2^n个可能的丢弃神经元的样本平均值进行近似计算,可以降低过拟合同时通过避免在训练数据上的训练节点提高了算法的学习速度。Dropout已经在全连接和卷积层中实现,并且研究表明它可以减少测试结果误差并提高网络的性能

3.4 Drop Connect

DropConnect是一种用于减少算法过拟合的正则化策略,是Dropout的一种扩展形式。在DropConnect中,不是将每个层中随机选择的激活子集设置为零,而是将架构中随机选择的一部分权重设置为零。因此,DropConnect和Dropout都能够实现有限泛化性能。DropConnect与Dropout类似,因为它在模型中引入了稀疏性,但与权重的稀疏性不同,输出向量是稀疏的。

3.5 早停法

早停法是一种防止过度拟合的技术,通过确定合适的迭代次数来避免欠拟合和过拟合。早停技术将数据分为训练集、验证集和测试集,训练集用于优化权重和偏差,验证集用于监控训练过程。当验证误差开始增加时,停止迭代并返回权重和偏差值,以防止过度拟合并提高网络的泛化性能。

4 优化策略

4.1 动量(Momentum)

随机梯度下降法和小批量梯度下降法是优化成本函数的常用方法,但在大规模应用中学习效果并不理想。动量策略提出加速学习过程,特别是在高曲率情况下。动量策略引入了变量v,作为参数在空间中继续移动的速度向量,速度被设定为负梯度的指数级衰减平均值。动量类似于随机梯度下降(SGD)和Mini-batch梯度下降,但在更新参数的方式上有所不同。通过使用动量,可以加速学习过程并实现更好的收敛率,尤其是在高曲率的情况下。

4.2 Nesterov 加速梯度(NAG)

Nesterov加速梯度(NAG)是一种一阶优化算法,类似于动量算法,但梯度在速度实现后进行评估。NAG的更新与动量算法相似,但具有更好的收敛速率。NAG常用于批量梯度下降法处理平滑凸函数,可将收敛速率从1/k改进为1/k^2。

4.3 Adagrad

Adagrad是一种自适应梯度算法,可以根据参数来调整学习率,消除了调整学习率的必要性。Adagrad对不频繁的参数执行较大的更新,对频繁的参数执行较小的更新,使其成为图像识别和自然语言处理等稀疏数据的自然候选者。Adagrad最大的问题是,在某些情况下,学习率变得太小,导致网络停止学习过程,因为学习率单调递减。

4.4 AdaDelta

AdaDelta是一种自适应学习率优化算法,利用最近的历史梯度值来缩放学习率并积累历史更新以加速学习。AdaDelta的优点在于克服了Adagrad的缺点,Adagrad的学习率变得太小,网络就会停止学习。AdaDelta使用先前平方梯度的指数衰减平均和先前的平方更新来计算学习率。AdaDelta常用于深度学习模型,并表现出比Adagrad和RMSprop更好的性能。

4.5 RMS prop

RMSprop是一种自适应学习率优化算法,它将学习率除以指数衰减的平方梯度的平均值。RMSprop类似于AdaDelta的第一个更新向量,旨在解决Adagrad的问题,即学习率变得太小导致网络停止学习过程。RMSprop常用于深度学习模型,并显示出比Adagrad更好的性能。

4.6 Adam

Adam是一种自适应学习率优化算法,可以处理梯度噪声和非平稳目标。它通过存储指数下降的平均前期平方梯度和前期历史梯度来为参数计算自适应学习率。Adam与Adadelta和RMSprop相似,但还保留了指数下降的前期历史梯度的平均值。Adam通常用于深度学习模型,并且表现出比Adagrad、RMSprop和Adadelta更好的性能。

4.7 Nadam

Nadam是一种结合了Nesterov加速梯度(NAG)和Adam的组合。Nadam代表Nesterov加速自适应矩估计器,旨在提高Adam的收敛速度和泛化性能。Nadam使用NAG更新规则来计算梯度,这使得算法能够考虑到前一步的动力学。Nadam还使用Adam的自适应学习率来调整梯度下降的步长。通过结合这两种技术,Nadam可以实现比Adam更快的收敛速度和更好的泛化性能。

0 人点赞