前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习 学习笔记(21)深度学习中的正则化

机器学习 学习笔记(21)深度学习中的正则化

作者头像
发布2018-09-04 10:45:17
2K0
发布2018-09-04 10:45:17
举报
文章被收录于专栏:WD学习记录

在机器学习中,许多策略被显式的设计来减少测试误差(可能会以增大训练误差为代价)。这些策略统称为正则化。

有些策略项机器学习模型添加限制参数值得额外约束。有些策略向目标函数增加额外项来对参数值进行软约束。这些额外的约束和惩罚可以改善模型在测试集上的表现。有时候这些约束和惩罚被设计为编码特定类型的先验知识。其他时候,这些约束和惩罚被设计为偏好简单的模型,以便提高泛化能力。有时,惩罚和约束对于确定欠定问题是必要的。其他形式的正则化,如被称为集成的方法,则结合多个假说来解释训练数据。

估计的正则化以偏差的增加换取方差的减少。

控制模型的复杂度不是找到合适规模的模型(带有正确的参数个数)这样一个简单的事情。最好的拟合模型(从最小泛化误差的意义上)是一个适当正则化的大型模型。

参数范数惩罚

许多正则化方法通过对目标函数J添加一个参数惩罚项

\Omega(\theta)
\Omega(\theta)

,限制模型的学习能力,将正则化后的目标函数记为

\tilde{J}
\tilde{J}

\tilde{J}(\theta;X,y)=J(\theta;X,y)+\alpha \Omega(\theta),\alpha \in[0,\infty)
\tilde{J}(\theta;X,y)=J(\theta;X,y)+\alpha \Omega(\theta),\alpha \in[0,\infty)

\alpha
\alpha

是权衡范数惩罚项

\Omega
\Omega

和标准目标函数

J(X;\theta)
J(X;\theta)

相对贡献的超参数。将

\alpha
\alpha

设为0表示没有正则化。

\alpha
\alpha

越大,对应的正则化惩罚越大。

当训练算法最小化正则后的目标函数

\tilde{J}
\tilde{J}

时,会降低原始目标J关于训练数据的误差并同时减小在某些衡量标准下参数

\theta
\theta

(或参数子集)的规模。

在神经网络中,参数包括每一层仿射变换的权重和偏置,通常只对权重做惩罚而不对偏置做正则惩罚。精确拟合偏置所需要的数据通常比拟合权重少的多。每个权重会指定两个变量如何相互作用。我们需要在各种条件下观察这两个变量才能良好地拟合权重。而每个偏置仅控制一个单变量。这意味着,我们不对其进行正则化也不会导致太大的方差。另外,正则化偏置参数可能会导致明显的欠拟合。因此,使用向量w表示所有应受范数惩罚影响的权重,而向量

\theta
\theta

表示所有参数(包括w和无须正则化的参数)。

L2参数正则化

最简单而又最常见的参数范数惩罚是被称为权重衰减(weight decay)的

L^2
L^2

参数惩罚。这个正则化策略通过向目标函数添加一个正则项

\Omega (\theta )=\frac{1}{2} ||w||^2_2
\Omega (\theta )=\frac{1}{2} ||w||^2_2

,使权重更加接近远点。

L^2
L^2

也被称为岭回归或者Tikhonov正则。

我们可以通过研究正则化后的目标函数的梯度,洞察一些权重衰减的正则化表现。假定其中没有偏置参数,因此

\theta
\theta

就是w。

\tilde{J}(w;X,y)=\frac{\alpha}{2}w^Tw+J(w;X,y)
\tilde{J}(w;X,y)=\frac{\alpha}{2}w^Tw+J(w;X,y)
\nabla_w \tilde{J}(w;X,y)=\alpha w+\nabla_wJ(w;X,y)
\nabla_w \tilde{J}(w;X,y)=\alpha w+\nabla_wJ(w;X,y)

使用单步梯度下井更新权重,即:

w\leftarrow w-\epsilon(\alpha w+\nabla_wJ(w;X,y))
w\leftarrow w-\epsilon(\alpha w+\nabla_wJ(w;X,y))

即:

w\leftarrow (1-\epsilon \alpha )w-\epsilon \nabla_wJ(w;X,y)
w\leftarrow (1-\epsilon \alpha )w-\epsilon \nabla_wJ(w;X,y)

加入权重衰减后会引起学习规则的修改,即在每步执行通常的梯度更新之前先收缩权重向量。

w^*
w^*

为未正则化的目标函数取得最小训练误差时的权重向量,即

w^*=\arg \min \limits_w J(w)
w^*=\arg \min \limits_w J(w)

,并在

w^*
w^*

的领域内对目标函数做二次近似。如果目标函数确实是二次的(如以均方误差拟合线性回归模型的情况),则该近似是完美的。近似的

\hat{J}(\theta )
\hat{J}(\theta )

如下:

\hat{J}(\theta )=J(w^*)+\frac{1}{2}(w-w^*)^TH(w-w^*)
\hat{J}(\theta )=J(w^*)+\frac{1}{2}(w-w^*)^TH(w-w^*)

其中H是J在

w^*
w^*

处计算的Hessian矩阵(关于w)。因为

w^*
w^*

被定义为最优,即梯度消失为0,所以该二次近似中没有一阶项。同样地,因为

w^*
w^*

是J的一个最优点,可以得出H是半正定的结论。当

\hat{J}
\hat{J}

取得最小时,其梯度

\nabla_w\hat{J}(w)=H(w-w^*)
\nabla_w\hat{J}(w)=H(w-w^*)

为0

在其中加入权重衰减的梯度,用变量

\tilde{w}
\tilde{w}

表示最小化正则化后的

\hat{J}
\hat{J}

时的最优点:

\alpha \tilde{w}+H(\tilde{w}-w^*)=0
\alpha \tilde{w}+H(\tilde{w}-w^*)=0
(H+\alpha I)\tilde{w}=Hw^*
(H+\alpha I)\tilde{w}=Hw^*
\tilde{w}=(H+\alpha I)^{-1}Hw^*
\tilde{w}=(H+\alpha I)^{-1}Hw^*

\alpha
\alpha

趋向于0时,

\tilde{w}
\tilde{w}

趋向于

w^*
w^*

。当

\alpha
\alpha

增加时,因为是是对城的,所以可以将其分解为一个对角矩阵

\Lambda
\Lambda

和一组特征向量的标准正交基

Q,并且

H=Q\Lambda Q^T
H=Q\Lambda Q^T

\tilde{w}=(Q\Lambda Q^T+\alpha I)^{-1}Q\Lambda Q^Tw^*=[Q(\Lambda +\alpha I)Q^T]^{-1}Q\Lambda Q^Tw^*
\tilde{w}=(Q\Lambda Q^T+\alpha I)^{-1}Q\Lambda Q^Tw^*=[Q(\Lambda +\alpha I)Q^T]^{-1}Q\Lambda Q^Tw^*
=Q(\Lambda +\alpha I)^{-1}\Lambda Q^Tw^*
=Q(\Lambda +\alpha I)^{-1}\Lambda Q^Tw^*

。权重衰减的效果是沿着由H的特征向量所定义的轴缩放

w^*
w^*

。会根据

\frac{\lambda _i}{\lambda _i+\alpha }
\frac{\lambda _i}{\lambda _i+\alpha }

因子缩放与H第i个特征向量对其的

w^*
w^*

的分量。

沿着H特征值较大的方向

\lambda _i\gg \alpha
\lambda _i\gg \alpha

正则化的影响较小,而

\lambda _i\ll \alpha
\lambda _i\ll \alpha

的分类将会收缩到几乎为零

只有在显著减小目标函数方向上的参数会保留得相对完好。在无助于目标函数减小的方向(对于Hessian矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分类会在训练过程中因正则化而衰减掉。

L^2
L^2

正则化能让学习算法感知到具有较高方差的输入x,因此与输出目标的协方差较小(相对增加方差)的特征权重会收缩。

L1正则化

对模型参数w的

L^1
L^1

正则化被定义为:

\Omega (\theta )=||w||_1=\sum_{i}|w_i|
\Omega (\theta )=||w||_1=\sum_{i}|w_i|

,即各个参数的绝对值之和。与

L^2
L^2

权重衰减类似,也可以通过缩放惩罚项

\Omega
\Omega

的正超参数

\alpha
\alpha

来控制

L^1
L^1

权重衰减的强度。正则化目标函数

\tilde{J}(w;X,y)=\alpha ||w|_1+J(w;X,y)|
\tilde{J}(w;X,y)=\alpha ||w|_1+J(w;X,y)|

对应的梯度(实际上是次梯度):

\nabla_w\tilde{J}(w;X,y)=\alpha sign(w)+\nabla_wJ(w;X,y)
\nabla_w\tilde{J}(w;X,y)=\alpha sign(w)+\nabla_wJ(w;X,y)

,其中

sign(w)
sign(w)

只是简单的取w各个元素的正负号。

L^1
L^1

正则化对梯度的影响不再是线性地缩放每个

w_i
w_i

,而是添加了一项与

sign(w_i)
sign(w_i)

同号的常数,使用这种形式的梯度后,我们不一定能得到

J(X,y;w)
J(X,y;w)

二次近似的直接算术解。

简单线性模型具有二次代价函数,可以通过泰勒级数表示。或者可以设想,这是逼近更复杂模型的代价函数的截断泰勒级数。在这个设定下,梯度由下式给出,

\nabla_w\hat{J}(w)=H(w-w^*)
\nabla_w\hat{J}(w)=H(w-w^*)

,同样,H是J在

w^*
w^*

处的Hessian矩阵(关于w)。

由于

L^1
L^1

惩罚项在完全一般化的Hessian的情况下,无法得到直接清晰的代数表达式,因此将进一步简化假设Hessian是对角的,即

H=diag([H_{1,1},...,H_{n,n}])
H=diag([H_{1,1},...,H_{n,n}])

,其中每个

H_{i,i}>0
H_{i,i}>0

。如果线性回归问题中数据已被预处理(如PCA),去除了输入特征之间的相关性,那么这一假设成立。

L^1
L^1

正则化目标函数的二次近似分解成关于参数的求和:

\hat{J}(w;X,y)=J(w^*;X,y)+\sum_{i}[\frac{1}{2}H_{i,i}(w-w^*_i)^2+\alpha |w_i|]
\hat{J}(w;X,y)=J(w^*;X,y)+\sum_{i}[\frac{1}{2}H_{i,i}(w-w^*_i)^2+\alpha |w_i|]

如下列形式的解析解(对每一维i)可以最小化这个近似代价函数:

w_i=sign(w^*_i)max\{|w^*_i|-\frac{\alpha}{H_{i,i}},0\}
w_i=sign(w^*_i)max\{|w^*_i|-\frac{\alpha}{H_{i,i}},0\}

对每个i,考虑

w^*_i>0
w^*_i>0

的情形,会有两种可能结果:

(1)

w^*_i\leqslant \frac{\alpha }{H_{i,i}}
w^*_i\leqslant \frac{\alpha }{H_{i,i}}

的情况,正则化后目标中的

w_i
w_i

最优值是

w_i=0
w_i=0

,这是因为在方向i上,

J(w;X,y)
J(w;X,y)

\hat{J}(w;X,y)
\hat{J}(w;X,y)

的贡献被抵消,

L^1
L^1

正则化项将

w_i
w_i

推至0。

(2)

w^*_i> \frac{\alpha }{H_{i,i}}
w^*_i> \frac{\alpha }{H_{i,i}}

的情况,在这种情况下,正则化不会将

w_i
w_i

的最优值推至0,而仅仅在那个方向上移动

\frac{\alpha }{H_{i,i}}
\frac{\alpha }{H_{i,i}}

的距离。

w^*_i<0
w^*_i<0

的情况与此类似,但是

L^1
L^1

惩罚项会使

w_i
w_i

更接近0(增加

\frac{\alpha }{H_{i,i}}
\frac{\alpha }{H_{i,i}}

)或者为0》

相比

L^2
L^2

正则化,

L^1
L^1

正则化会产生更稀疏的解,此处稀疏性指的是最优值中的一些参数为0。和

L^2
L^2

正则化相比,

L^1
L^1

正则化的稀疏性有本质的不同,

L^2
L^2

正则化中,

\tilde{w}_i=\frac{H_{i,i}}{H_{i,i}+\alpha }w^*_i
\tilde{w}_i=\frac{H_{i,i}}{H_{i,i}+\alpha }w^*_i

,如果

w^*_i
w^*_i

不是0,那么

\tilde{w}_i
\tilde{w}_i

也保持非0.这表明

L^2
L^2

正则化不会使参数变得稀疏,而

L^1
L^1

正则化通过足够大的

\alpha
\alpha

实现稀疏。

L^1
L^1

正则化导出的稀疏被广泛用于特征选择,如LASSO。

许多正则化策略可以被解释为MAP贝叶斯推断,特别是

L^2
L^2

正则化相当于权重是高斯先验的MAP贝叶斯推断。对于

L^1
L^1

正则化,用于正则化代价函数的惩罚项

\alpha \Omega (w)=\alpha \sum_{i}|w_i|
\alpha \Omega (w)=\alpha \sum_{i}|w_i|

通过与MAP贝叶斯推断最大化的对数先验项是等价的(

w\in R^n
w\in R^n

并且权重先验是各向同性的拉普拉斯分布):

logp(w)=\sum_{i}log Lalpace(w_i;0,\frac{1}{\alpha })=-\alpha ||w||_1+nlog a-nlog2
logp(w)=\sum_{i}log Lalpace(w_i;0,\frac{1}{\alpha })=-\alpha ||w||_1+nlog a-nlog2

作为约束的范数惩罚

考虑经过参数范数正则化的代价函数:

\tilde{J}(\theta ;X,y)=J(\theta ;X,y)+\alpha \Omega (\theta )
\tilde{J}(\theta ;X,y)=J(\theta ;X,y)+\alpha \Omega (\theta )

我们可以构建一个广义Lagrange函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项。每个惩罚是一个呗称为KKT乘子的系数以及一个表示约束是否满足的函数之间的乘积。如果想约束

\Omega (\theta )
\Omega (\theta )

小于某个常数k,我们可以构建广义Lagrange函数:

\varphi (\theta ,\alpha ;X,y)=J(\theta ;X,y)+\alpha (\Omega (\theta )-k)
\varphi (\theta ,\alpha ;X,y)=J(\theta ;X,y)+\alpha (\Omega (\theta )-k)

,这个约束问题的解由下式给出:

\theta ^*=\arg \min \limits_{\theta } \max \limits_{\alpha, \alpha \geqslant 0}\varphi (\theta ,\alpha )
\theta ^*=\arg \min \limits_{\theta } \max \limits_{\alpha, \alpha \geqslant 0}\varphi (\theta ,\alpha )

在所有过程中

\alpha
\alpha

\Omega (\theta )>k
\Omega (\theta )>k

时必须增加,在

\Omega (\theta )<k
\Omega (\theta )<k

时必须减小。所有正值得

\alpha
\alpha

都鼓励

\Omega (\theta )
\Omega (\theta )

收缩,但不会强到使得

\Omega (\theta )
\Omega (\theta )

小于k。

为了洞察约束的影响,固定

\alpha ^*
\alpha ^*

,把问题看成只跟

\theta
\theta

有关的函数:

\theta ^*=\arg \min \limits_{\theta }\varphi (\theta ,\alpha ^*)=\arg \min \limits_{\theta }J(\theta ;X,y)+\alpha ^*\Omega (\theta )
\theta ^*=\arg \min \limits_{\theta }\varphi (\theta ,\alpha ^*)=\arg \min \limits_{\theta }J(\theta ;X,y)+\alpha ^*\Omega (\theta )

这回最小化

\tilde{J}
\tilde{J}

的正则化训练问题是完全一样的,因此,可以把参数范数惩罚看做对权重强加的约束。如果

\Omega
\Omega

L^2
L^2

范数,那么权重就被约束在一个

L^2
L^2

球中,如果

\Omega
\Omega

L^1
L^1

范数,那么权重就是被约束在一个

L^1
L^1

范数限制的区域内。较大的

\alpha
\alpha

会得到较小的约束区域,较小的

\alpha
\alpha

会得到较大的约束区域。

如果希望使用显式的限制,而不是惩罚,可以修改下降算法(如随机梯度下降算法),使其先计算

J(\theta )
J(\theta )

的下降步,然后将

\theta
\theta

投影到满足

\Omega (\theta )<k
\Omega (\theta )<k

的最近点。

另一个使用显式约束和重投影而不是使用惩罚强加约束的原因是,惩罚可能会导致目标函数非凸而使算法陷入局部极小(对应于小的

\theta
\theta

)。当训练神经网络时,这通常表现为训练带有几个死亡单元的神经网络。这些单元不会对网络学到的函数有太大影响,因为进入或离开它们的权重都非常小。当使用权重范数的惩罚训练时,即使可以通过增加权重以显著减少J,这些配置也可能是局部最优的。重投影实现的显式约束不鼓励权重接近原点,所以在这些情况下效果更好。通过重投影实现的显式约束只在权重变大并试图离开限制区域时产生作用。

最后,重投影的显示约束还对优化过程增加了一定的稳定性,所以这是另一个好处。当使用较高的学习率时,很可能进入正反馈,即大得权重诱导大梯度,然后使得权重获得较大更新,如果这些更新持续增加权重的大小,

\theta
\theta

就会迅速增大,直到离远点很远而发生溢出。重投影的显式约束可以防止这种反馈环引起权重无限制地持续增加。约束和高学习速率的结合,可以更快地探索参数空间,并保持一定的稳定性。

约束神经网络层的权重矩阵每列的范数,而不是限制整个权重矩阵的Frobenius范数。分别限制每一列的范数可以防止某一隐藏单元由非常大的权重。如果我们将此约束转换成Lagrange函数中的一个惩罚,这将与

L^2
L^2

权重衰减类似但每个隐藏单元权重都具有单独的KKT乘子,每个KKT乘子分别会被动态更新,以使每个隐藏单元服从约束。在实践中,列范数的限制总是通过重投影的显式约束来实现。

正则化和欠约束问题

在某些情况下,为了正确定义机器学习问题,正则化是必要的,机器学习中许多线性模型,包括线性回归和PCA,都依赖于矩阵

X^TX
X^TX

求逆,只有

X^TX
X^TX

是奇异的,这些方法就会失效。当数据生成分布在一些方向上确实没有差异时,或因为例子较少(相对输入特征的维数来说),而在一些方向上没有观察到方差时,这个矩阵就是奇异的。在这种情况下,正则化的许多形式对应求逆

X^TX+\alpha I
X^TX+\alpha I

,这个正则化矩阵可以保证是可逆的。

相关矩阵可逆时,这些线性问题就有闭式解。没有闭式解的问题也可能是欠定的。

大多数形式的正则化能保证应用于欠定问题的迭代方法收敛。

数据集增强

让机器学习模型泛化的更好的最好办法是使用更多的数据进行训练。一种办法是创建假数据并添加到训练集中。

对分类任务来说这种方法是最简单的,分类器需要一个复杂的高维输入x,并用单个类别标识y概率x。

这种方法对于其他许多任务来说并不那么容易。

数据集增强对一个具体的分类任务来说是特别有效的方法:对象识别。

数据集增强对语音识别也是有效的。

在神经网络的输入层注入噪声,也可以看做数据增强的一种方式。对于许多分类甚至一些回归任务而言,即使小的随机噪声也被加到输入。任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常健壮的。改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。输入噪声注入是一些无监督学习算法的一部分。如去噪自编码。向隐藏单元施加噪声也是可行的,这可以被看做在多个抽象层上进行的数据集增强。

人工设计的数据集增强方案可以大大减少机器学习技术的泛化误差。普适操作(如向输入添加高斯噪声)被认为是机器学习算法的一部分,而特定于一个应用领域(如随机地裁剪图像)的操作被认为是独立的预处理步骤。

噪声鲁棒性

对某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚。

在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。

另一种正则化模型的噪声使用方式是将其加到权重,这项技术主要用于循环神经网络,这可以被解释为关于权重的贝叶斯推断的随机实现。贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。向权重添加早上是反映这种不确定性的一种实用的随机方法。

在某些假设下,施加于权重的噪声可以被解释为与更传统的正则化形式等同,鼓励要学习的函数保持稳定。

对于小的学习率,最小化带权重噪声的J等同于最小化附加正则化项,推动模型进入对权重小的变化相对不敏感的区域,找到的点不只是极小点,还有由平坦区域所包围的极小点。

向输出目标注入噪声

大多数数据集的y标签都有一定错误。错误的y不利于最大化

log p(y|x)
log p(y|x)

,避免这种情况的一种方法是显式地对标签上的噪声进行建模。

例如,对于一些小常数

\epsilon
\epsilon

,训练集标记y是正确的概率是

1-\epsilon
1-\epsilon

,任何其他可能的标签也可能是正确的。这个假设很容易与代价函数结合,而不用显式地抽取噪声样本。

标签平滑(label smoothing)通过把确切分类目标从0和1替换成

\frac{\epsilon }{k-1}
\frac{\epsilon }{k-1}

1-\epsilon
1-\epsilon

,正则化具有k个输出的softmax函数的模型。标准交叉熵损失可以用在这些非确切目标的输出上。使用softmax函数和明确目标的最大似然学习可能永远不会收敛,softmax函数永远无法真正预测0概率或1概率,因此会继续学习越来越大的权重,使预测更极端。使用如权重衰减等其他正则化策略能够防止这种情况。标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。

半监督学习

在半监督学习框架下,

P(x)
P(x)

产生的未标记样本和

P(x,y)
P(x,y)

中的标记样本都用于估计

P(y|x)
P(y|x)

,或者根据x预测y。

在深度学习的背景下,半监督学习通常指的是学习一个表示

h=f(x)
h=f(x)

,学习表示的目的是使用相同类中的样本有类似的表示。无监督学习可以为如何在表示空间聚集样本提供有用线索。在输入空间紧密聚集的样本应该被映射到类似的表示。在许多情况下,新空间上的线性分类器可以达到较好的泛化。这种方法的一个经典变种是使用主成分分析作为分类前(在投影后的数据上分类)的预处理步骤。

我们可以构建这样一个模型,其中生成模型

P(x)
P(x)

P(x,y)
P(x,y)

与判别模型

P(y|x)
P(y|x)

共享参数,而不用分离无监督和监督部分。权衡监督模型准则

-logP(y|x)
-logP(y|x)

和无监督或生成模型准则(如

-logP(x)
-logP(x)

-logP(x,y)
-logP(x,y)

)。生成模型准则表达了对监督学习问题解的特殊形式的先验知识,即

P(x)
P(x)

的结构通过某种共享参数的方式连接到

P(y|x)
P(y|x)

。通过控制在总准则中的生成准则,我们可以获得比纯上次或纯判别训练准则跟好的权衡。

多任务学习

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

因能共享参数,其统计强度可以大大提高(共享参数的样本数量相对与单任务模型增加的比例),并能改善泛化和泛化误差的范围,当然,仅当不同的任务之间存在某些统计关系的假设是合理(意味着某些参数能通过不同任务共享)时才会发生这种情况。

从深度学习的观点看,底层的先验知识如下:能解释数据变化(在与之相关联的不同任务中观察到)的因素中,某些因素是跨两个或更多任务共享的。

提前终止

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

这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并因此有希望获得更好的测试误差)。

这种策略被称为提前终止(early stopping),这可能使深度学习中最常用的正则化形式,有效而简单。

通过庭前终止自动选择超参数的唯一显著代价是训练期间要定期评估验证集。在理想情况下,这可以并行在与主训练过程分离的机器上,或独立的CPU,或独立的GPU上完成。如果没有这些额外的资源,可以使用比训练集更小的验证集或较不频繁地评估验证集来减小评估代价,较粗略地估算取得最佳的训练时间。

另一个提前终止的额外代价是需要保持最佳的参数副本。这种代价一般是可忽略的。由于最加参数的写入很少发生,而且从不在训练过程中读取,这些偶发的慢写入对总训练时间的影响不大。

提前终止是一种非常不显眼的正则化形式,几乎不需要改变基本训练过程、目标函数或一组允许的参数值。这意味着,无须破坏学习动态就能很容易地使用提前终止,相对与权重衰减,必须小心不能使用太多的权重衰减,以防网络陷入不良局部极小点(对应于病态的小权重)。。

提前终止可单独使用或与其他的正则化策略结合使用。即使为鼓励更好泛化,使用正则化策略改进目标函数,在训练目标的局部极小点达到最好泛化也是非常罕见的。

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

一个策略是在此初始化模型,然后使用所有数据再次训练,在这个第二轮训练过程中。我们使用第一轮提前终止训练确定的最佳步数。此过程有一些细微之处,我们没有办法知道重新训练时,对参数进行相同次数的更新和对数据集进行相同次数的遍历哪一个更好。由于训练集变大了,第二轮训练时,每一个遍历数据集将会更多次地更新参数。

另一个策略是保持从第一轮训练获得的参数,然后使用全部的数据继续训练。在这个阶段,已经没有验证集指导应该训练多少步之后终止,取而代之,可以监控验证集的平均损失函数,并继续训练,指导它低于提前终止过程终止时的目标值。避免了重新训练模型的高成本,但表现并没有那么好。例如验证集的目标不一定能达到之前的目标值,所以这种策略甚至不能保证终止。

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

提前终止为何具有正则化效果:提前终止可以将优化过程的参数空间限制在初始参数值

\theta _0
\theta _0

的小领域内。想象学习率

\epsilon
\epsilon

进行

\tau
\tau

个优化步骤,可以将

\epsilon \tau
\epsilon \tau

作为有效容量的度量。假设梯度有界,限制迭代的次数和学习速率能够限制

\theta _0
\theta _0

到达的参数空间的大小。在这个意义上,

\epsilon \tau
\epsilon \tau

的效果就好像是权重衰减的稀疏系数的导数。

在二次误差的简单线性模型和简单梯度下降情况下,提前终止相当于

L^2
L^2

正则化。

在大曲率(目标函数)方向上的参数值受正则化影响小于小曲率方向。当前在提前终止的情况下,这实际上意味着在大曲率方向的参数比较小曲率方向的参数更早地学习到。

长度为

\tau
\tau

的轨迹结束于

L^2
L^2

正则化目标的极小点,当然,提前终止比简单的轨迹长度限制更丰富;取而代之,提前终止通常涉及监控验证集误差,一遍在空间特别好的点处终止轨迹,因此提前终止比权重衰减更具有优势,提前终止能正确自动确定正则化的正确量,而权重衰减需要进行多个不同超参数值得训练实验。

参数绑定和参数共享

之前提到的对参数添加约束或惩罚时,一直是相对于固定的区域或点。

正则化一个模型(监督模型下训练的分类器)的参数,使其接近另一个无监督模式下训练的模型(捕捉观察到的输入数据的分布)的参数。构造这种架构使得分类模型中的许多参数能与无监督模型中的对应参数匹配。

参数范数惩罚是正则化参数使其批次接近的而一种方式。更流行的方法是使用约束,强迫某些参数相等,由于我们将各种模型或模型组件解释为共享一组参数,这种正则化方法通常被称为参数共享。和正则化参数使其接近(通过范数惩罚)相比,参数共享的优点是,只有参数(唯一一个集合)的自子集需要被存储在内存中。

最流行和最广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络中。

参数共享显著降低了CNN模型的参数数量,并显著提高了网络的大小而不需要相应地增加训练数据。它仍然是将领域知识有效地整合到网络架构的最佳范例之一。

稀疏表示

之前的权重衰减直接惩罚模型参数,另一种策略是惩罚神经网络中的激活单元,稀疏化激活单元,间接地对模型参数施加了复杂惩罚。

表示正则化可以使用参数正则化中同种类型的极值实现。

表示的范数惩罚正则化是通过向损失函数J添加对表示的范数惩罚来实现的。将惩罚记作

\Omega (h)
\Omega (h)

。正则化后的损失函数记作:

\tilde{J}
\tilde{J}
\tilde{J}(\theta ;X,y)=J(\theta ;X,y)+\alpha \Omega (h)
\tilde{J}(\theta ;X,y)=J(\theta ;X,y)+\alpha \Omega (h)

\alpha \in [0,\infty )
\alpha \in [0,\infty )

权衡范数惩罚项的相对贡献,越大的

\alpha
\alpha

对应越多的正则化。

对参数的

L^1
L^1

惩罚诱导参数的稀疏性,对表示元素的

L^1
L^1

惩罚诱导稀疏的表示:

\Omega (h)=||h||_1=\sum_{i}|h_i|
\Omega (h)=||h||_1=\sum_{i}|h_i|

。其他方法还包括从表示上的Student-t先验导出的惩罚和KL散度程度。这些方法对于将表示中的元素约束与单位区间上特别有用。

还有一些其他方法通过激活值得硬性约束来获得表示稀疏。例如,正交匹配追踪。通过解决以下约束优化问题将输入值x编码成表示h:

\arg \min \limits_{h,||h||_0<k}||x-Wh||^2
\arg \min \limits_{h,||h||_0<k}||x-Wh||^2

其中

||h||_0
||h||_0

是h中非零项的个数。当W被约束正交时,我们可以很高效地解决这个问题。这种方法通常被称为OMP-k,通过k指定允许的非零特征数量。OMP-1被怎么是可以称为深度架构中非常有效的特征提取器。

含有隐藏单元的模型本质上都能变得稀疏。

Bagging和其他集成方法

Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术,主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平均。采用这种策略的技术被称为集成方法。

模型平均奏效的原因是不同的模型通常不会再测试集上产生完全相同的误差。

集成平方误差的期望会随着集成规模的增大而线性减小。平均上,集成至少与它的任何成员表现得一样好,并且如果成员误差是独立的,集成将显著地比其他成员表现得更好。

神经网络能够找到足够多不同的解,意味着它们可以从模型平均中受益(即使所有模型都在同一数据集上训练)。神经网络中随机初始化的差异、小批量的随机选择、超参数的差异或不同输出的非确定性实现往往足以使得集成中的不同成员具有部分独立的误差。

不是所有构建集成的技术都是为了让集成模型比单一模型更加正则化。例如,Boosting构建比单个模型容量更高的集成模型,通过向集成逐步添加神经网络,boosting以及被用于构建神经网络的集成。通过逐渐增加神经网络中的隐藏单元,boosting也可以将单个神经网络解释为一个集成。

Dropout

Dropout提供了正则化一大类模型的方法,计算方便但功能强大。在涉及第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Bagging涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是一个很大的神经网络时,这似乎是不切实际的,因为训练和评估这样的模型需要花费很多运行时间和内存。通常我们只能集成5-10个神经网络。

Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。

Dropout训练的集成包括所有从基础网络除去非输出单元后形成的子网络。最先进的神经网络基于一系列仿射变换和非线性变换,只需要将一些单元的输出乘0就能有效地删除一个单元。这个过程需要对模型(如径向基函数网络,单元的状态和参考值之间存在一定区别)进行一些修改。

Bagging学习,定义k个不同的模型,从训练数据集有放回采样构造k个不同数据集,然后在训练集i上训练模型i。Dropout的目标是在指数级数量的神经网络上近似这个过程。每次使用Dropout时,会使用基于小批量产生较小步长的学习算法,如随机梯度下降等。每次在小批量中加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。对于每个单元,掩码采样是独立采样的。掩码值为1的采样概率(导致包含一个单元)是训练开始前一个固定的超参数。它不是模型当前参数值或输入样本的函数,通常在每一个小批量训练的神经网络中。一个输入单元被包括的概率的0.8,一个隐藏单元被包括的概率为0.5。更正式的说,假设一个掩码向量

\mu
\mu

指定被包括的单元,

J(\theta ,\mu )
J(\theta ,\mu )

是由参数

\theta
\theta

和掩码

\mu
\mu

定义的模型代价。那么Dropout训练的目标是最小化

E_\mu J(\theta ,\mu )
E_\mu J(\theta ,\mu )

,这个期望包含多达指数级的项,但我们可以通过抽样

\mu
\mu

获得梯度的无偏估计。

Dropout训练与Bagging训练不太一样。在Bagging情况下,所有模型都是独立的。在Dropout的情况下,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。参数共享使得在有限可用内存下表示指数级数量的模型变得可能。在Bagging情况下,每一个模型在其相应训练集上训练到收敛。在Dropout情况下,通常大部分模型都没有显式地被训练,因为通常父神经网络非常大,以至于无法采样完全部的子网络。在单个步骤中训练一小部分的子网络,参数共享会使得剩余的子网络也能有好的参数设定。

在Dropout情况下,通过掩码

\mu
\mu

定义每个子模型的概率分布

p(y|x,\mu )
p(y|x,\mu )

。所有掩码的算术平均值为:

\sum_{\mu}p(\mu)p(y|x,\mu)
\sum_{\mu}p(\mu)p(y|x,\mu)

p(\mu)
p(\mu)

是训练时采样

\mu
\mu

的概率分布。

这个求和包含多达指数级的项,除非该模型的结构允许某种形式的简化,否则是不可计算的。可以通过采样近似推断,即平均许多掩码的输出,即使10-20个掩码就足以获得不错的表现。

然而,一个更好的方法能不错地近似整个集成的预测,且只需一个前向传播的代价,要做到这一点,改用集成成员预测分布的集合平均而不是算术平均。在这个情况下,几何平均与算术平均表现的差不多。

多个概率分布的几何平均不能保存是一个概率分布。为了保证结果是一个概率分布,要求没有子模型给某一事件分配概率0,并重新标准化所得分布,通过几何平均直接定义的非标准化概率分布由下式给出:

\tilde{p}_{ensemble}(y|x)=\sqrt[2^d]{\prod _{\mu}p(y|x,\mu)}
\tilde{p}_{ensemble}(y|x)=\sqrt[2^d]{\prod _{\mu}p(y|x,\mu)}

,其中d是可以被丢弃的单元数。使用均分分布

\mu
\mu

,非均匀分布也是可以的,为了做出预测,标准化集成为:

p_{ensemble}(y|x)=\frac{\tilde{p}_{ensemble}(y|x)}{\sum{y'}\tilde{p}_{ensemble}(y'|x)}
p_{ensemble}(y|x)=\frac{\tilde{p}_{ensemble}(y|x)}{\sum{y'}\tilde{p}_{ensemble}(y'|x)}

我们可以通过评估模型中

p(y|x)
p(y|x)

来近似

p_{ensemble}
p_{ensemble}

:该模型具有所有单元,但我们将单元i的输出的权重乘以单元i的被包含概率。这个修改的动机是得到从该单元输出的正确期望值。把这种方法称为权重比例推断规则(weight scaling inference rule)。

因为通常使用

\frac{1}{2}
\frac{1}{2}

的包含概率,权重比例规则一般相当于在训练结束后将权重除2,然后像平常一样使用模型。实现相同的结果的另一种方法是在旋律期间将单元的状态乘2。目标是确保在测试时一个单元的期望总输入与在训练时该单元的期望总输入大致相同(即使在近半单位在训练时丢失)。

对许多不具有非线性隐藏单元的模型族而言,权重比例推断规则是精确的。

权重比例推断规则在其他设定下也是精确的,包括条件正态输出的回归网络以及那些隐藏层不包含非线性的深度网络。然而,权重比例推断规则对具有非线性的深度模型仅仅是一个近似。

Dropout比其他标准的计算开销小的正则化方法(如权重衰减、过滤器范数约束和稀疏激活的正则化)更有效。Dropout也可以与其他形式的正则化合并,得到进一步提升。

Dropout的一个优点是计算方便,训练过程中使用Dropout产生n个随机二进制数与状态相乘,每个样本每次更新只需

O(n)
O(n)

的计算复杂度。根据实现,也可能需要

O(n)
O(n)

的存储空间来持续保存这些二进制数(直到反向传播阶段)。使用训练好的模型推断时,计算每个样本的代价与不使用Dropout是一样的,尽管我们必须在开始运行推断前将权重除以2。

Dropout的另一个显著优点是不怎么限制适用的模型或训练过程。

虽然Dropout在特定模型上每一步的代价是微不足道的,但在一个完整的系统上适用Dropout的代价可能非常显著,因为Dropout是一个正则化技术,减少了模型的有效容量,为了抵消这种影响,我们必须增大模型规模。不出意外,适用Dropout时最佳验证集的误差会低很多,但这是以更大模型和更多训练算法的迭代次数为代价换来的。对于非常大的数据集,正则化带来的泛化误差减少的很小。在这些情况下,适用Dropout和更大模型的计算代价可能超过正则化带来的好处。

只有极少的训练样本可用时,Dropout不会很有效。

当Dropout作用于线性回归时,相当于每个输入特征具有不同权重衰减系数的

L^2
L^2

权重衰减。其他线性模型也有类似的结果。对于深度模型而言,Dropout与权重衰减是不等同的。

随机性对实现Dropout的正则化效果不是必要的,也不是充分的。

使用Bagging解释Dropout比使用稳健型噪声解释Dropout更好,只有当随机抽样的集成成员相互独立地训练好后,才能达到Bagging集成的正则化效果。

Dropout启发其他以随机方法训练指数量级的共享权重的集成。DropConnect是Dropout的一个特殊情况,其中一个标量权重和单个隐藏单元状态之间的每个乘积被认为是可以丢弃的一个单元。随机池化是构造卷积神经网络集成的一种随机池化的形式,其中每个卷积网络参与每个特征图的不同空间位置。Dropout是最广泛使用的隐式集成方法。

一个关于Dropout的重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,实现了一种参数共享的Bagging形式。

Dropout不仅仅是训练一个Bagging的集成模型,而且是共享隐藏单元的集成模型。意味着无聊其他隐藏单元是否在模型中,每个隐藏单元必须都能表现良好。隐藏单元必须准备好进行模型之间的交换和互换。

Dropout强大的大部分原因来自施加到隐藏单元的掩码噪声,了解这一事实是最重要的。这可以看做对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。破坏提取的特征恶如不是原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。

Dropout的另一个重要方面是噪声是乘性的。如果是固定规模的加性噪声,那么加了噪声

\epsilon
\epsilon

的整流线性隐藏单元可以很简单地学会使

h_i
h_i

变得很大(使增加的噪声

\epsilon
\epsilon

变得不显著)。乘性噪声不允许这样病态地解决噪声鲁棒性的问题。

批标准化,在训练时向隐藏单元引入加性和乘性噪声重新参数化模型。批标准化的主要目的是改善优化,但噪声具有正则化效果,有时没必要再使用Dropout。

对抗训练

对抗样本

通过对抗训练(adversarial training)减少原有独立同分布测试集的错误率。

对抗训练通过鼓励网络在训练数据附近的局部区域恒定来限制这一高度敏感的局部线性行为。可以看做是明确地项监督神经网络引入局部恒定先验的方法。

对抗训练有助于体现积极正则化与大型函数族结合的力量。

切面距离、正切传播和流形正切分类器

一种流形假设早期尝试是切面距离(tangent distance)算法。是一种非参数的近邻算法,使用的度量不是通用的欧几里得距离,而是根据邻近流形关于聚集概率的知识导出的。这个算法假设我们将尝试分类的样本和同一流形上的样本具有相同的类别。由于分类器应该对局部因素(对于流形上的移动)的变化保持不变。

正切传播(tangent prop)算法训练带有额外惩罚的神经网络分类器,使神经网络的每个输出

f(x)
f(x)

对已知的变化因素是局部不变的。这些变化因素对应于沿着相同样本聚集的流形的移动。正切传播算法不仅用于监督学习,还在强化学习中有所应用。

正切传播与数据集增强密切相关,在这两种情况下,该算法的用户通过制定一组应当不会改变网络输出的转换,将其先验知识编码至算法中,不同的是在数据集增强的情况下,网络显式地训练正确分类这些施加大量变换后产生的不同输入。正切传播不需要显式访问一个新的输入点。而是解析地对模型正则化从而在指定转换方向抵抗扰动。有两个主要缺点:首先,模型的正则化只能抵抗无穷小的扰动。显式的数据集增强能抵抗较大的扰动。其次,很难在基于整流线性单元的模型上使用无线小的方法。这些模型只能通过关闭单元或缩小它们的权重才能缩小它们的导数。数据集增强在整流线性单元上工作的很好,因为不同的整理单元会在每一个原始输入的不同转换版本上被激活。

正切传播也和双反向传播以及对抗训练有关联。双反向传播正则化是Jacobian矩阵偏小,而对抗训练找到原输入附近的点,训练模型在这些点上产生于与原来输入相同的输出。正切传播和手动指定转换的数据集增强都要求模型在输入变化的某些特定方向上报纸不变。双反向传播和对抗训练都要求模型对输入所有方向中的变化(只要该变化较小)都 应当保持不变。数据集增强是正切传播非无限小的版本,对抗训练是双反向传播非无限小的版本。

参考

  1. 《深度学习》
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数范数惩罚
    • L2参数正则化
      • L1正则化
      • 作为约束的范数惩罚
      • 正则化和欠约束问题
      • 数据集增强
      • 噪声鲁棒性
        • 向输出目标注入噪声
        • 半监督学习
        • 多任务学习
        • 提前终止
        • 参数绑定和参数共享
        • 稀疏表示
        • Bagging和其他集成方法
        • Dropout
        • 对抗训练
        • 切面距离、正切传播和流形正切分类器
        • 参考
        相关产品与服务
        语音识别
        腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档