当前位置:   article > 正文

深度学习——正则化(一)_(xw-y)t(xw-y)

(xw-y)t(xw-y)

深度学习——正则化(一)

1 正则化的引入

1.1 正则化的基本概念

机器的学习的目标在真实的情况中性能最好,一般情况下,我们使用训练集来训练学习算法,并采用损失函数来度量模型的性能。我们将模型在测试集(一般认为是真实情况)的误差称为泛化误差。在训练集上的误差称为训练误差。根据机器学习的最终目标,我们想要的是泛化误差最小。在机器学习中,有很多的策略被设计用来减少泛化误差,这种策略统一称之为正则化

2 正则化策略的基本方式

2.1 参数范数惩罚

基本形式:
L ∗ ( θ ; X , Y ) = L ( θ ; X , Y ) + α Ω ( θ ) L^*(θ;X,Y)=L(θ;X,Y)+αΩ(θ) L(θ;X,Y)=L(θ;X,Y)+αΩ(θ)
其中,α∈[0,∞),是用来权衡范数惩罚项Ω和标准的损失函数的L(θ;X,Y)的相对贡献的超参数。α=0表示没有正则化,α越大,对应的正则化的惩罚越大。

当我们使用正则化的损失函数之后,它会降低原始的损失函数对于训练数据的误差,同时减小某些衡量标准下参数θ的规模。通常情况下,机器学习中的参数不仅仅包括权重矩阵W,还包括偏置项B,一般情况下,我们只对权重做惩罚而不对偏置做正则惩罚。原因在于,每一个权重会指定两个变量如何的进行相互作用,我们需要在各种条件下观察这两个变量才能良好的拟合权重,而每一个偏置仅仅控制一个单变量。举个例子来说,对于一个全连接的网络而言,其基本的形式为:
Y = W T X + B Y=W^TX+B Y=WTX+B
对于上面的公式,我们可以看出,权重W通过乘法来控制权重参数与输入X之间的作用。而偏置项B仅仅是在 W T X W^TX WTX的结果的每一项上增加一个数量。对于偏置项B而言,我们是否对其进行正则化对于方差的影响并不大。

另外,正则化偏置项B可能会导致的另外一个问题是欠拟合。因此,我们正则化的参数θ实际指的就是权重W。

2.2、L2正则化

所谓的L2正则化,也被称为权重衰减或者岭回归。这个正则化的策略是在原始目标函数的上添加一个正则项 Ω ( θ ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 Ω(θ)=\frac{1}{2}||w||_2^2 Ω(θ)=21w22
通过正则项的添加,使得权重结果更加的接近于原点。

下面我们简单的说明一下L2正则化的过程:

  1. 首先,我们假定损失函数为
    L ∗ ( θ ) = L ( θ ; X , Y ) + α 2 W T W L^*(θ)=L(θ;X,Y)+\frac{α}{2}W^TW L(θ)=L(θ;X,Y)+2αWTW
  2. 我们对上述的损失函数求导有:
    ▽ L W ∗ ( θ ) = α W + ▽ L W ( θ ; X , Y ) ▽L^*_W(θ)=αW+▽L_W(θ;X,Y) LW(θ)=αW+LW(θ;X,Y)
  3. 更新权重的时候,我们计算的是:
    W n e w = W − β ∗ L W ∗ ( θ ) = W − β ( α W + ▽ L W ( θ ; X , Y ) ) = W ( 1 − β α ) W − β ▽ L W ( θ ; X , Y ) W_{new}=W -β*L^*_W(θ)=W- β(αW+▽L_W(θ;X,Y))\\ \frac{}{}\\ \\=W(1-βα)W-β▽L_W(θ;X,Y) Wnew=WβLW(θ)=Wβ(αW+LW(θ;X,Y))=W(1βα)WβLW(θ;X,Y)

不难发现,通过加入的L2正则化,使得在更新损失函数带来的权重变化之前,会先将原来的权重进行一定的缩减。

为了进一步的理解,我们下面拿线性回归来举一个例子,通常情况下,线性回归的目标函数为:
( X w − Y ) T ( X w − Y ) (Xw-Y)^T(Xw-Y) (XwY)T(XwY)
添加完L2正则化之后:
( X W − Y ) T ( X W − Y ) + 1 2 α W T W (XW-Y)^T(XW-Y)+\frac{1}{2}αW^TW (XWY)T(XWY)+21αWTW
我们求损失函数的最小值,也就是导数为0,求导权重W为:
W = ( X T X + α I ) − 1 X T Y W=(X^TX+αI)^{-1}X^TY W=(XTX+αI)1XTY
其中I表示的是单位矩阵。

而原始的W的值为:
W = ( X T X ) − 1 X T Y W=(X^TX)^{-1}X^TY W=(XTX)1XTY

不难发现,通过增加L2的正则化项,与原始的 X T X X^TX XTX相比,只是在对角项增加了α,所以和原始矩阵的形式是一样的,当时该矩阵的对角项恰好对应的是每个输入特征的方差,通过添加α,能够让学习算法感知到具有较高方差的输入X,因此与输出目标的协方差比较小的特征的权重将会变小。

综上所述,L2正则化的作用在于能够权重参数,并且能够降低泛化误差。

2.3 L1正则化

L1正则化的基本形式为:
Ω ( θ ) = ∣ ∣ W ∣ ∣ 1 = ∑ i = 1 ∣ W i ∣ Ω(θ)=||W||_1=∑_{i=1}|W_i| Ω(θ)=W1=i=1Wi
即每一个权重参数的和。则,L1正则化下的损失函数为:
L ∗ ( θ ) = L ( θ ; X , Y ) + α ∣ ∣ W ∣ ∣ 1 L^*(θ)=L(θ;X,Y)+α||W||_1 L(θ)=L(θ;X,Y)+αW1
则其对应的梯度为:
▽ L W ∗ ( θ ) = α s i g n ( W ) + ▽ L W ( θ ; X , Y ) ▽L^*_W(θ)=αsign(W)+▽L_W(θ;X,Y) LW(θ)=αsign(W)+LW(θ;X,Y)
其中sign(W)函数表示对W求导后的各个参数的正负号。

观察上面求导之后的式子,我们可以发现的是L1正则化的效果和L2正则化的效果是不同。首先,我们能确定的是,αsign(W)不再能够对原来的参数W进行缩放,而是相当于添加了sign( W i W_i Wi)符号的常数α。 在这种情况下,通过一个常数的作用,可能会将一个参数值变成0,也就是说相对于L2正则化,L1正则化将会产生更为稀疏的权重的解。

L1正则化的产生的稀疏参数矩阵被广泛的应用于特征的选择,可以从特征的子集中选择有意义的特征,来化简机器学习的问题。

3、 数据增强

让机器学习的模型泛化能力最好的办法是使用更多的训练数据进行训练。当我们的数据有限的时候,将数据量的增加或者在数据中增加一些噪声,是训练过程变得复杂的技术成为数据增强。

3.1 增加训练样本集合

首先,对于分类任务,分类器的输入是一个复杂的高维度的输入X,并且使用单个的类别标示Y来进行判断。在对于这类任务进行构造数据的时候,可以通过转换输入X中的部分属性来构造一个新的(X,Y)对。

3.2 在数据增加噪声

除了在增加训练数据的样本数量,在神经网络中注入噪声也是可以看做数据增强的一种办法。对于许多任务而言,即使最小的随机噪声被作为输入,这个任务仍然是可以被解决的。与此同时,增加一定量的噪声也可以增加神经网络的健壮性。

  1. 噪声添加的位置可以有多个地方,首先是输入层,这种方法是简单的将随机噪声添加到输入中在进行训练。输入噪声是一些无监督学习算法的一部分,比如去噪自编码器。对于某些模型而言,向输入中增加噪声等价于对权重施加范数惩罚。

  2. 我们也可以将噪声添加到隐藏层,这种操作可以看做是在多个抽象层进行数据增强的操作。一般情况下,对于隐藏单元的噪声注入会比简单的使用L2范数来收缩参数更为的强大。

  3. 另外一种的正则化的噪声使用方式是将其加入到权重之中,这种方法主要用于循环神经网络中去。

  4. 除了上面介绍的几种情况,我们还可以向输出目标中注入噪声,这种方式主要的假设是:大多数的数据集中的标签都有一定的错误,错误的标签Y不利于优化损失函数。这种情况建模的一种方法就是显示的对标签中的噪声进行建模。比如,我们可以利用一些小的常数ε,使得训练标记Y是正确的概率是1-ε,也就是说其他的标签也可能是正确的。或者通过标签平滑的方式,将原来的0,1分类标签改成 ε k − 1 \frac{ε}{k-1} k1ε和1-ε,然后正则化具有k个输出的softmax模型。综上所述,也就是说,我们通过向输出中注入噪声(也可能是训练标签中本身就存在噪声),然后对输出的噪声进行建模,最终实现正确分类,降低泛化误差。

4、半监督学习与多任务学习

4.1 半监督学习
4.1.1 半监督学习的基本概念

半监督学习通常是指学习一个表示h=f(x),学习表示的目的是使用相同类中的文本有相似的表示。在半监督学习的框架之下,预测生成的P(x)无标记的样本和有标记的样本P(x,y)都会别用于估计P(Y|X)或者根据X来预测Y。

4.1.2 半监督学习的模型构建

我们可以来构建这样一种模型,其中生成模型P(x)或者P(x,y)与判别模型P(Y|X)共享参数,而不用分离无监督和监督的部分。我们通过权衡监督模型准则-logP(y|x)与无监督或者生成模型的准则-logP(x)或者-logP(x,y)。其中生成模型的作用是对于监督学习问题解特殊形式的先验知识,通过控制在总准则中的生成准则,我们可以获得比纯的生成或者判别训练准则更好的权衡。

4.2 多任务学习

所谓的多任务学习,指的就是通过合并几个任务的样例来提高泛化的一种方式。类似于增加额外的训练样本可以降低泛化误差,当一个模型被多个任务共享的时候,存在一些通用的参数,这些通用的参数在多个学习任务的约束下能够获得更良好的值,通常会提高泛化能力。

一般情况下,多任务学习的基本框架如下图所示:
在这里插入图片描述

如上图所示,其中h_s表示多个任务的共享参数,h1,h2,h3分别表示不同任务的参数,y1,y2表示两个任务的预测输出。

使用多任务学习的前提在于不同的任务之间是存在着某些统计关系且假设是合理的,也就是说参数是可以共享的

5、提前终止

提前终止主要针对的是模型过拟合的问题。所谓的模型过拟合,是指模型在训练集的上的训练误差越来越小,但是在测试集上的误差会再次上升的问题。而所谓的提前终止,指的就是不要等到训练数据集的训练误差最小的时候,而是采用验证集的方式,当验证集的误差达到最小的时候,就停止模型的训练。

在实际的实现中,我们一个循环的次数,当验证集上的误差在循环次数内没有进一步的降低的时候,算法就会终止。其基本的算法描述如下所示:

在这里插入图片描述

相对于其他的正则化的方式,提前终止的方式最为简单,只需要通过验证集来进行控制,不需要改变损失函数的基本形式,也无需进行考虑数据增强或者考虑多个任务之间的统计关系。不过,提前终止是可以和其他的正则化方式进行一起使用的。

这里,我们需要注意到的一个问题是引入了验证集会导致训练数据的减少,为了利用这些减少的训练数据,有如下的两个基本策略

第一种策略:在带有验证集的数据训练结束之后,再次初始化模型,使用全部的数据进行训练。在第二次的训练中,我们训练的轮数和第一次训练的轮数相同。但是这里需要了解的是,在第二次中我们的训练数据的规模扩大了,也就是说尽管训练的轮数相同,但是实际上对于由于数据量的增加,对于参数的更新次数实际上上增加了。

第二种策略:使用第一次训练得到的参数,对全部的数据进行第二次训练。这里需要注意的是,由于没了验证集的知道,我们并不能做的根据验证集来提前终止(第一种策略也是如此)。一种解决方案是,我们继续关注验证集的损失,当验证集的平均损失低于目标值的时候终止训练。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/829927
推荐阅读
相关标签
  

闽ICP备14008679号