深度学习中的正则化:你必须了解的一些基本概念

深度学习中的正则化:你必须了解的一些基本概念

机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化好的算法。在机器学习中,许多策略被显示地设计来减少测试误差(可能会以增大训练误差为代价)。这些策略被统称为正则化
本文主要根据作者在研究正则化过程中遇到的一些概念性问题进行了一遍梳理。

问题一:什么是正则化
就像开头文章叙述的那样,正则化是一种策略,目的就是减少模型的泛化误差

问题二:通常如何对模型进行正则化
对模型进行正则化的策略有很多,总体方式可以分为:向机器学习模型添加限制参数值的额外约束;向目标函数增加额外项对参数值进行软约束。

问题三:介绍一下参数范数惩罚的概念
许多正则化方法通过对目标函数 J J 添加一个参数范数惩罚 Ω ( θ ) Ω(\theta ) ,限制模型(如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化后的目标函数记为 J ~ \tilde{J} :
J ~ ( θ ; X , y ) = J ( θ ; X , y ) + α Ω ( θ ) \tilde{J}(\theta;X,y)=J(\theta ;X,y)+\alpha \Omega (\theta ) 。。。。。。。。。。。。。。。。。。。。(1)
其中 α [ 0 , ) \alpha \in [0,\infty ) 是权衡范数惩罚项 Ω Ω 和标准目标函数 J ( X ; θ ) J(X;\theta ) 相对贡献的超参数。将 α \alpha 设为0表示没有正则化。 α \alpha 越大,对应正则化惩罚越大。

☆☆☆ 需要说明的是,我们通常只对权重做惩罚而不对偏置做正则惩罚。这是因为,每个偏置仅控制一个单变量,不对其进行正则化也不会导致太大的方差,反之可能会导致明显的欠拟合。 上述公式里面的 θ \theta 表示所有的参数(包括 w w 和无需正则化的参数)。

问题四:描述一下 L 2 L^{2} 正则化
L 2 L^{2} 正则化又称为权重衰减的参数范数惩罚。这个正则化策略通过对目标函数添加一个正则项 Ω ( θ ) = 1 2 w 2 2 \Omega (\theta )=\frac{1}{2}\left \| w \right \|_{2}^{2} ,使得权重更加接近原点。在其他学术圈, L 2 L^{2} 也被称为岭回归或者Tikhonov正则。
我们可以通过研究正则化后目标函数的梯度,洞察一些权重衰减的正则化表现。下面我们就涉及到的数学模型进行一个简单的阐述:

我们假定没有偏置,因此 θ \theta 就是 w w
J ~ ( w ; X , y ) = α 2 w T w + J ( w ; X , y ) \tilde{J}(w;X,y)=\frac{\alpha }{2}w^{T}w+J(w;X,y) 。。。。。。。。。。。。。。。。。。。(2)

上式对 w w 求导得到
w J ~ ( w ; X , y ) = α w + w J ( w ; X , y ) \bigtriangledown _{w}\tilde{J}(w;X,y)=\alpha w+\bigtriangledown _{w}J(w;X,y) 。。。。。。。。。。。。。。。。。(3)

我们对权重进行更新,即新的权重=之前一步的权重-学习率*权重的偏导数
w w ϵ ( α w + w J ( w ; X , y ) ) w\leftarrow w-\epsilon (\alpha w+\bigtriangledown _{w}J(w;X,y)) 。。。。。。。。。。。。。。。。。。。。(4)
我们对上述公式合并同类项得到
w ( 1 ϵ α ) w ϵ w J ( w ; X , y ) w\leftarrow (1-\epsilon \alpha )w-\epsilon \bigtriangledown _{w}J(w;X,y) 。。。。。。。。。。。。。。。。。。。(5)
不难发现,加入权重衰减后会引起学习规则的修改,即在每步执行通常的梯度更新之前先收缩权重向量(将权重向量乘以一个常数因子)。这是单个步骤发生的变化。

问题五:描述一下 L 1 L^{1} 正则化
L 1 L^{1} 正则化的与 L 2 L^{2} 正则化最大的区别是 L 1 L^{1} 正则化会产生更稀疏的解。
L 1 L^{1} 正则化导出的稀疏性质已经被广泛的用于特征选择机制。

关于 L 1 L^{1} L 2 L^{2} 正则化的详细介绍,大家可以参考我的这一篇博文白话解释正则化原理

问题六:什么是数据集增强
让机器学习模型泛化的更好的最好办法是使用更多的数据进行训练。但是,在实践中,我们拥有的数据量是有限的。解决这个问题的一种方法是创建假数据并添加到训练集中。
以图像识别为例,对输入图像进行微调是改变数据集的有效方式,但是我们必须要小心的是,不能使用会改变类别的转换。例如,光学字符识别任务需要认识到‘b’和‘d’以及‘6’和‘9’的区别,所以对这些任务来说,水平翻转和旋转180°并不是适合的数据集增强方式。
向神经网络的输入层注入噪声也是数据增强的一种方式。对于许多分类甚至一些回归任务而言,即使小的随机噪声被加入到输入,任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常的健壮。改善神经网络健壮性的方法之一是简单的将随机噪声添加到输入再进行训练。
在比较机器学习算法A和机器学习算法B时,应该确保这两个算法使用同一人工设计的数据集增强方案。
关于数据增强的细致介绍,大家可以参考我的这一篇博文深度学习:为什么要进行数据增强?

问题七:什么是噪声鲁棒性

关于噪声鲁棒性问题相当于我们如何添加噪声问题。通常有以下几种方式添加噪声:
1,向输入添加方差极小的噪声,该策略等价于对权重施加范数惩罚。
2,将噪声添加到权重,该策略主要应用于循环神经网络
3,向输出目标注入噪声,该策略起源于很多数据集的标签都有一定的错误。

问题八:为什么多任务学习
多任务学习是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。正如额外的训练样本能够将模型参数推向具有更好泛化能力的值一样,当模型的一部分被多个额外的任务共享时,这部分将被约束为良好的值(如果共享合理),通常会带来更好的泛化能力。
在这里插入图片描述

上图说明了任务共享相同输入但涉及不同目标随机变量的情况。深度网络的较低层可以跨这样的任务共享,而任务特定的参数(分别h1和h2进入和发出的权重)可以再共享表示h(shared)之上学习。这里的基本假设是存在解释输入x变化的共同因素池,而每个任务与这些因素的子集相关联。在该例中,额外假设顶层隐藏单元h1和h2专用于每个任务(分别预测y1和y2),而一些中间层表示h(shared)在所有任务之间共享。在无监督学习情况下,一些顶层因素不与输入任务(h3)的任意一个关联是有意义的:这些因素可以解释一些输入变化但与预测y1和y2不相关。
因为共享参数,其统计强度可以大大提高,并能改善泛化和泛化误差的范围。

问题九:为什么要提前终止
当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。
在这里插入图片描述
解决这种问题的一种思路是,我们只返回验证集误差最低的参数设置,以此获得验证集误差更低的模型。在每次验证集误差有所改善后,我们存储模型参数的副本。当训练算法终止时,我们返回这些参数而不是最新的参数。当验证集上的误差在事先指定的循环次数内没有近一步改善时,算法就会终止。这种策略被称为提前终止。这是深度学习中最常用的正则化形式。它的流行主要是因为有效性和简单性。

问题十:什么是Dropout
Dropout提供了正则化一大类模型的方法,计算方便且功能强大。关于Dropout的概念介绍,可以参考我的另一篇博文漫谈Droupot

总结:
以上就是我们研究正则化问题时要搞清楚的一些基本概念。当然本文只是做了粗浅的介绍,如果大家想了解更详细的模型原理,可以参考网上其他的博客论坛,也可以持续关注我的博客,我会在之后进行相关的更新和解释。

发布了64 篇原创文章 · 获赞 25 · 访问量 9887

猜你喜欢

转载自blog.csdn.net/LEEANG121/article/details/103956226
今日推荐