引入正则化

在深度学习背景下,大多数正则化策略都会对估计进行正则化。估计的正则化以偏差的增加换取方差的减少。一个有效的正则化是有利的权衡,也就是能显著减少方差而不过度增加偏差。

参数范数惩罚

许多正则化方法通过对目标函数 J J J添加一个参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ),限制模型的学习能力。正则化后的目标函数记为 J ~ \tilde{J} J~
J ~ ( θ ; X , y ) = J ( θ ; X , y ) + α Ω ( θ ) \tilde{J}(\theta;X,y)= J(\theta;X,y)+\alpha\Omega(\theta) J~(θ;X,y)=J(θ;X,y)+αΩ(θ)

通常,在神经网络中只对每一层仿射变换的_权重_做惩罚而不对偏置做惩罚。精确拟合偏置所需的数据通常比拟合权重少得多。正则化偏置参数可能会导致明显的欠拟合。
在神经网络中,为了减少搜索空间,通常在所有层使用相同的权重衰减。

L2参数正则化

L2正则化通过向目标函数添加一个正则项 Ω ( θ ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 \Omega(\theta)=\frac{1}{2}||w||_2^2 Ω(θ)=21​∣∣w∣∣22​,使权重更加接近原点,又称为岭回归或Tikhonov正则。
假定模型没有偏置参数,因此 θ \theta θ就是 w w w。这样一个模型具有以下总的目标函数:
J ~ ( w ; X , y ) = α 2 w T w + J ( w ; X , y ) \tilde{J}(w;X,y)=\frac{\alpha}{2}w^Tw+J(w;X,y) J~(w;X,y)=2α​wTw+J(w;X,y)
与之对应的梯度为
∇ w J ~ ( w ; X , y ) = α w + ∇ w J ( w ; X , y ) \nabla_w \tilde{J}(w;X,y)=\alpha w+\nabla_w J(w;X,y) ∇w​J~(w;X,y)=αw+∇w​J(w;X,y)
使用单步梯度下降更新权重,即执行以下更新:
w ← w − ϵ ( α w + ∇ w J ( w ; X , y ) ) w\leftarrow w-\epsilon(\alpha w+\nabla_w J(w;X,y)) w←w−ϵ(αw+∇w​J(w;X,y))
换种写法:
w ← ( 1 − ϵ α ) w − ϵ ∇ w J ( w ; X , y ) w\leftarrow (1-\epsilon\alpha)w-\epsilon\nabla_wJ(w;X,y) w←(1−ϵα)w−ϵ∇w​J(w;X,y)
即在每步执行通常的梯度更新之前先收缩权重向量。
以上是单个步骤发生的变化,下面介绍在训练的整个过程会发生的变化。
在无助于目标函数减小的方向(对应Hessian矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。
##L1参数正则化
形式地,对模型参数 w w w的L1正则化定义为:
Ω ( θ ) = ∣ ∣ w 1 ∣ ∣ = ∑ i ∣ w i ∣ \Omega(\theta)=||w_1||=\sum\limits_i|w_i| Ω(θ)=∣∣w1​∣∣=i∑​∣wi​∣
正则化的目标函数如下:
J ~ ( w ; X , y ) = α ∣ ∣ w 1 ∣ ∣ + J ( w ; X , y ) \tilde{J}(w;X,y)=\alpha ||w_1||+J(w;X,y) J~(w;X,y)=α∣∣w1​∣∣+J(w;X,y)
与之对应的梯度(实际上是次梯度)
∇ w J ~ ( w ; X , y ) = α s i g n ( w ) + ∇ w J ( w ; X , y ) \nabla_w \tilde{J}(w;X,y)=\alpha sign(w)+\nabla_w J(w;X,y) ∇w​J~(w;X,y)=αsign(w)+∇w​J(w;X,y)

L1正则化不再是线性地缩放每一个 w i w_i wi​;而是添加了一项与 s i g n ( w i ) sign(w_i) sign(wi​)同号的常数。
L1正则化产生更稀疏的解。
许多正则化策略可以被解释为MAP贝叶斯推断。L1正则化相当于权重先验是各向同性的拉普拉斯分布。

Dropout

Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
Dropout在神经网络训练时以keep_prob的概率保留神经元,其他未保留的神经元失活。

权重比例推断规则 inverted dropout(反向随机失活)

为了得到神经网络单元输出的正确期望值,在训练时将应用了dropout的单元的输出结果除以keep_prob来保持测试时一个单元的期望总输入与训练时该单元的期望总输入是大致相同用的。(测试时不使用dropout)。
对许多不具有非线性隐藏单元的模型族而言,权重比例推断规则是精确的。

对于非常大的数据集,正则化带来的泛化误差减少得很小。使用Dropout和更大规模得计算代价可能超过正则化带来的好处。
只有极少的训练样本可用时,Dropout不会很有效。

数据集增强

让机器学习模型泛化得更好得最好办法是使用更多得数据进行训练。
数据增强对一个具体得分类问题来说特别有效:对象识别。
不能使用会改变类别的转换。例如,光学字符识别任务需要识别到"b"和"d"以及"6"和"9"的区别,这类任务中水平翻转和旋转180度不是合适的方式。

在神经网络的输入层注入噪声也可以被看作是数据增强的一种方式。对于许多分类甚至回归任务,即使小的随机噪声被加到输入,任务仍应该是能够被解决的。
向隐藏层施加噪声也是可行的,可以被看作在多个抽象层上进行的数据集增强。

提前终止

当训练有足够的表示能力甚至会过拟合的大模型时,通常训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。

元算法

如果我们返回使验证集误差最低的参数设置,就可以获得更好的模型。在每次验证集误差有所改善后,我们存储模型参数的副本。当训练算法终止时,我们返回这些参数而不是最新的参数。当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。

训练步数仅是另一个超参数。“训练时间”是唯一只要跑一次训练就能尝试很多值得超参数。通过提前终止自动选择超参数的唯一显著的代价是训练期间定期评估验集。
在理想情况下,这可以并行在与主训练过程分离的机器上,或独立的CPU,或独立的GPU上完整。
另一个额外代价是需要保持最佳的参数副本。

提前终止对减少训练过程的计算成本是有用的。除了由于限制训练的迭代次数而明显减少的计算成本,还带来了正则化的好处(不需要添加惩罚项的代价函数或计算这种附加项的梯度)。

如何利用验证集数据训练

提前终止需要验证集,这意味着某些训练数据不能被馈送到模型。为了更好利用数据,可以在完成提前终止的首次训练后,进行额外的训练。在第二轮额外的训练你步骤中,所有的训练数据都包括在内。有两个基本的策略都可以用于第二轮训练过程。

再次初始化,使用所有数据训练相同步数

这种方法,无法直到重新训练时,对参数进行相同次数的更新和对数据集进行相同的遍数哪一个更好。由于训练集变大了,在第二轮训练时,每一次遍历数据集将会更多次地更新参数。

保持参数,使用所有数据继续训练,直到验证集误差和训练误差相同

此粗略避免了重新训练模型的高成本,但表现并没那么好。例如,验证集的目标不一定能达到之前的目标值,所以甚至不能保证终止。

其他方法

  1. 作为约束的范数惩罚
    待补充
  2. 正则化和欠约束问题
  3. 噪声鲁棒性
  4. 半监督学习
  5. 多任务学习
  6. 参数绑定和参数共享
  7. 稀疏表示
  8. Bagging
  9. 对抗训练
  10. 切面距离,正切传播和流形正切分类器

参考资料

《深度学习》第7章

深度学习中的正则化方法相关推荐

  1. 理解深度学习中的正则化

    写在前面:这篇文章虽然公式有点多,但很好懂的. 仔细看一定会有很大收获.     本文介绍了对深度学习中正则化的理解,分为以下几部分: 什么是正则化? 为什么要正则化? 怎样理解正则化? 举例 首先从 ...

  2. AI圣经-深度学习-读书笔记(七)-深度学习中的正则化

    深度学习中的正则化 0 简介 机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化好的算法.采用显式减少测试误差(可能会增加训练误差)的策略称为正则化. 在深度学习的背景下,大多 ...

  3. 花书笔记:第07章 深度学习中的正则化

    花书笔记:第07章 深度学习中的正则化 7.1 参数范数惩罚 参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ) α ∈ [ 0 , ∞ ) \alpha \in [0,\infty ...

  4. 学习笔记:深度学习中的正则化

    点击上方"视学算法",星标公众号 重磅干货,第一时间送达 作者:草yang年华 一.正则化介绍 问题:为什么要正则化? NFL(没有免费的午餐)定理: 没有一种ML算法总是比别的好 ...

  5. 深度学习中的正则化技术(附Python代码)

    作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...

  6. 正则化的通俗解释_干货|深度学习中的正则化技术概述(附Python+keras实现代码)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 介绍 数据科学研究者们最常遇见的问题之一就是怎样避免过拟合.你也许在训练模型的时候也遇 ...

  7. 深度学习 正则化 正则化率_何时以及如何在深度学习中使用正则化

    深度学习 正则化 正则化率 介绍: (Introduction:) The key role of Regularization in deep learning models is to reduc ...

  8. 深度学习中的正则化技术详解

    目录 基本概念 1. 参数范数惩罚 1.1 \(L^2\)正则化 1.2 \(L^1\)正则化 1.3 总结\(L^2\)与\(L^1\)正则化 2. 作为约束的范数惩罚 3. 欠约束问题 4. 数据 ...

  9. 深度学习Bible学习笔记:第七章 深度学习中的正则化

    一.正则化介绍 问题:为什么要正则化? NFL(没有免费的午餐)定理: 没有一种ML算法总是比别的好 好算法和坏算法的期望值相同,甚至最优算法跟随机猜测一样 前提:所有问题等概率出现且同等重要 实际并 ...

最新文章

  1. QIIME 2用户文档. 18序列双端合并read-joining(2019.7)
  2. 基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)
  3. jquery实现在元素外单击,隐藏此元素
  4. JSP(1)—基础知识
  5. varchar与varchar2的区别
  6. Android --- 消息模式Toast.makeText.show()的几种用法总结
  7. CSS中flex和inline-flex的区别
  8. Jsp+Servlet+Mysql实现的火车票预定管理
  9. Next, let’s look at the interface
  10. Zabbix监控解决方案
  11. Python文件夹copy器(多进程版)学习笔记
  12. map和json数组以及JSON对象和的区别以及相互转换
  13. 第一章计算机视觉引论
  14. matlab做简单的信号处理分析
  15. 基于Java+SpringMVC+vue+element实现前后端分离校园失物招领系统详细设计
  16. java实验——设计圆柱体类和圆锥体类,继承圆类Circle并实现Volume接口,计算体积。
  17. python 线性插值处理_python线性插值解析
  18. PS图层蒙版应用——图片抠字
  19. Linux 配置SSH免密登录
  20. 喀纳斯与圣诞之夜(随想)

热门文章

  1. AJAX的概括(异步传输)
  2. 【机器学习】机器学习30个笔试题
  3. 简单爬虫,爬取天猫商品信息
  4. 用 Python 去除 PDF 水印,你学会吗?
  5. 数据结构:网上公开课
  6. Android--CoordinatorLayout源码分析及NestedScrolling机制
  7. html标签的默认样式及去除
  8. STM32 (基于HAL库) 硬件IIC读写任意AT24CXX芯片
  9. 创建两个线程,其中一个输出1-52,另外一个输出A-Z。输出格式要求:12A 34B 56C 78D 依次类推
  10. 【Oracle】更新数据表字段值