美文网首页
深度学习中的正则化方法

深度学习中的正则化方法

作者: 晨光523152 | 来源:发表于2019-07-26 22:54 被阅读0次

梯度下降是一种优化技术,它通过最小化代价函数的误差而决定参数的最优值,进而提升网络的性能。尽管梯度下降是参数优化的自然选择,但它在处理高度非凸函数和搜索全局最小值时也存在很多局限性。

  • 正则化技术令参数数量多于输入数据量的网络避免产生过拟合现象
  • 正则化通过避免训练完美拟合数据样本的系数而有助于算法的泛化
  • 为了防止过拟合,增加训练样本是一个好的解决方案。此外,还可使用数据增强、L1 正则化、L2 正则化、Dropout、DropConnect 和早停(Early stopping)法等。

增加输入数据、数据增强、早停、dropout 及其变体是深度神经网络中常用的调整方法。

正则化技术

重要性:

  • 正则化技术是保证算法泛化能力的有效工具
  • 正则化是训练参数数量大于训练数据集的深度学习模型的关键步骤
  • 除了泛化原因,奥卡姆剃刀原理和贝叶斯估计也都支持着正则化。根据奥卡姆剃刀原理,在所有可能选择的模型中,能很好解释已知数据,并且十分简单的模型才是最好的模型。而从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。

研究者提出和开发了多种适合机器学习算法的正则化方法,如数据增强、L2 正则化(权重衰减)、L1 正则化、Dropout、Drop Connect、随机池化和早停等。

数据增强

  • 数据增强是提升算法性能、满足深度学习模型对大量数据的需求的重要工具
  • 数据增强通过向训练数据添加转换或扰动来人工增加训练数据集(通过增加训练样本的方法防止过拟合)
  • 数据增强技术如水平或垂直翻转图像、裁剪、色彩变换、扩展和旋转通常应用在视觉表象和图像分类中

L1和L2正则化

L1,L2正则化是最常用的正则化方法。

  • L1正则化是向目标函数中添加正则化项,以减少参数的绝对值总和
  • L2正则化是向目标函数中添加正则化项,以减少参数平方的绝对值总和

L1正则化后的交叉熵代价函数如下:
C = -\frac{1}{N}\sum_{j}(y_{j}lna_{j}) + (1 - y_{j})ln(1-a_{j})) + \frac{ \lambda }{N}\sum_{j} w_{j}\;\;\;\;\;\;\;\;\;\;\;(1)
或者写成:
C = -\frac{1}{N}\sum_{j}(y_{j}lna_{j} + (1 - y_{j})ln(1-a_{j})) + \frac{ \lambda }{N}||W||_{1}\;\;\;\;\;\;\;\;\;\;\;(2)

L2正则化后的交叉熵代价函数如下:
C = -\frac{1}{N}\sum_{j}(y_{j}lna_{j} + (1 - y_{j})ln(1-a_{j})) + \frac{ \lambda }{2N}\sum_{j} w_{j}^2\;\;\;\;\;\;\;\;\;\;\;(3)
或者写成:
C = -\frac{1}{N}\sum_{j}(y_{j}lna_{j} + (1 - y_{j})ln(1-a_{j})) + \frac{ \lambda }{2N}||W||_{2}^{2}\;\;\;\;\;\;\;\;\;\;\;(4)

L1正则化后的均方误差代价函数如下:
C = \frac{1}{2N}||y - a||^{2} + \frac{\lambda}{N}\sum_{j}w_{j}\;\;\;\;\;\;\;\;\;\;\;(5)
或者写成:
C = \frac{1}{2N}||y - a||^{2} + \frac{\lambda}{N}||W||_{1}\;\;\;\;\;\;\;\;\;\;\;(6)

L2正则化后的均方误差代价函数如下:
C = \frac{1}{2N}||y - a||^{2} + \frac{\lambda}{2N}||W||_{2}^{2}\;\;\;\;\;\;\;\;\;\;\;(7)

其中用C_{0}表示原始代价函数,则L1,L2正则化后的代价函数分别是:
L1:C = C_{0} + \frac{\lambda}{N}||W||_{1}\;\;\;\;\;\;\;\;\;\;\;(8)
L2:C=C_{0} + \frac{\lambda}{2N}||W||_{2}^2\;\;\;\;\;\;\;\;\;\;\;(9)
正则化的作用是让网络偏好学习更小的权重,而在其他方面保持不变;
正则化可以看成一种能够折中考虑小权重和最小化原来代价函数的方法。

  • \lambda较小时,偏好最小化原始代价函数
  • \lambda较大时,偏好更小的权重

例子:

考虑L2正则化:

对(9)求偏导得到:
\begin{split} \frac{\partial C}{\partial W} &= \frac{\partial C_{0}}{\partial W} + \frac{\lambda}{N}W\;\;\;\;\;\;\;\;\;\;\;(10)\\ \frac{\partial C}{\partial b} & = \frac{\partial C_{0}}{\partial b}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(11) \end{split}
梯度下降的更新规则:
\begin{split} b\to b - \eta \frac{\partial C}{\partial b} &= b- \eta \frac{\partial C_{0}}{\partial b} \;\;\;\;\;\;\;\;\;\;\;(12)\\ W\to W - \eta \frac{\partial C}{\partial W} &= W - \eta (\frac{\partial C_{0}}{\partial W} + \frac{\lambda}{N}W) = (1 - \eta \frac{\lambda}{N})W- \eta \frac{\partial C_{0}}{\partial W} \;\;\;\;\;\;\;\;\;\;\;(13) \end{split}
从(12)可以看出,对b的更新没有改变,(13)中,1 - \eta \frac{\lambda}{N}小于1。
有时候叫做权重衰减(使得W比以前小了)。

考虑L1正则化:

对(8)求偏导得到:
\begin{split} \frac{\partial C}{\partial W} &= \frac{\partial C_{0}}{\partial W} + \frac{\lambda}{N}sgn(W)\;\;\;\;\;\;\;\;\;\;\;(14)\\ \frac{\partial C}{\partial b} &= \frac{\partial C_{0}}{\partial b}\;\;\;\;\;\;\;\;\;\;\;(15) \end{split}
梯度下降更新规则:
\begin{split} b\to b - \eta \frac{\partial C}{\partial b} &= b - \eta \frac{\partial C_{0}}{\partial b}\;\;\;\;\;\;\;\;\;\;\;(16)\\ W\to W - \eta \frac{\partial C}{\partial W} &= W - \eta (\frac{\partial C_{0}}{\partial W} + \frac{\lambda}{N}sgn(W)) \;\;\;\;\;\;\;\;\;\;\;(17) \end{split}
- 当W > 0时,经(17)更新后的W会变小
- 当W < 0时,经(17)更新后的W会变大
因此,L1正则化的效果就是让W往0靠拢,使得网络中的权重尽可能为0,也就相当于减少了网络复杂度,防止过拟合。
参考资料:
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss2.html
https://www.jiqizhixin.com/articles/2017-12-20

相关文章

网友评论

      本文标题:深度学习中的正则化方法

      本文链接:https://www.haomeiwen.com/subject/uaqqkctx.html