深度学习中,正则化与优化策略占据了重要的地位,它们很大程度上决定了模型的泛化与收敛等性能。通过阅读《深度学习》,简要的总结了深度学习中的五大正则化方法和七大优化策略。
正则化通过对学习算法的修改,旨在减少泛化误差而不是训练误差。 从之前对方差和偏差( https://blog.csdn.net/qq_31827399/article/details/96730108 )的角度看,正则化技术就是以偏差的增加换取方差的减少 ,而且一个有效的正则化能显著减少方差而不是过度增加偏差。正则化技术是保证算法泛化能力的有效工具,因此算法正则化的研究成为机器学习中主要的研究主题。
在深度学习中常用的几种正则化策略:数据增强、L1 和L2正则化、提前终止、Dropout、Drop Connect、随机池化等。
让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练,但是在实际运用中数据是有限的,为了实现这一目的,我们可以创建“假数据添加到训练集中。数据增强一般是通过向训练数据添加转换或扰动来人工增加训练数据集。
任务 | 数据增强方式 |
---|---|
对象识别(图像) | 数据集的各种变换,如对图像的平移、旋转和缩放。 |
语音识别 | 注入噪声(通过将随机噪声添加到输入再进行训练能够大大改善神经网络的健壮性,也可以在隐藏层中注入噪声) |
在实际运用中,也有对图像加入噪声的,如通过向图像添加高斯噪声,以及一个色调较低的版本是盐和胡椒噪音(它表现为随机的黑白像素在图像中传播,这类似于通过向图像添加高斯噪声而产生的效果,但可能具有较低的信息失真水平)
https://zhuanlan.zhihu.com/p/41679153
L1 和 L2 正则化是最常用的正则化方法,通过对目标函数 J 添加一个参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ),限制模型的学习能力。 J ^ ( t h e t a : X , y ) = J ( θ : X , y ) + α Ω ( θ ) \hat J(theta:\rm{X},y)=J (\theta:\rm{X},y)+\alpha\Omega(\theta) J^(theta:X,y)=J(θ:X,y)+αΩ(θ) α > = 0 \alpha>=0 α>=0衡量参数范数惩罚程度的超参数,在神经网络中,参数包括每层线性变换的权重和偏置,我们通常只对权重做惩罚而不对偏置做正则惩罚;使用向量 ω \omega ω表示应受惩罚影响的权重,用向量 θ \theta θ表示所有参数。
当我们的训练算法最小化正则化后的目标函数 J ^ \hat J J^时,它会降低原始目标函数 J J J关于训练数据的误差并同时减少在某些衡量标准下参数 θ \theta θ(或参数子集)的规模。
L 2 L^2 L2参数正则化(也称为岭回归、Tikhonov正则)通常被称为权重衰减(weight decay),是通过向目标函数添加一个正则项 Ω ( θ ) = 1 2 ∥ ω ∥ 2 2 \Omega(\theta)=\frac{1}{2}\|\omega\|_2^2 Ω(θ)=21∥ω∥22 使权重更加接近原点。
r* 通过研究正则化后目标函数的梯度,可知加入权重衰减后会导致学习规则的修改,即在每步执行梯度更新前先收缩权重(乘以 ( 1 − ϵ α ) (1-\epsilon\alpha) (1−ϵα), ϵ \epsilon ϵ学习率)。
L2 正则化将能让深度学习算法感知到具有较高方差的输入 x,因此与输出目标的协方差较小(相对增加方差)的特征权重将会收缩。
L 1 L^1 L1正则化的参数惩罚项 Ω ( θ ) \Omega(\theta) Ω(θ)为各个参数的绝对值之和: Ω ( θ ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ \Omega(\theta)=||w||_1=\sum_i|w_i| Ω(θ)=∣∣w∣∣1=i∑∣wi∣
(1)L1与L2正则化可看作对权重强加的约束,L2正则化将权重约束到一个 L 2 L^2 L2的球(圆)中,L1正则化将权重约束到一个 L 1 L^1 L1f范数限制的区域中。如上图的红色部分。权重衰减系数 α \alpha α约束着区域的大小。
(2) 相比 L 2 L^2 L2正则化, L 1 L^1 L1正则化会产生更稀疏的解。
如果考虑Hessian矩阵是对角正定矩阵,我们得到 L 2 L^2 L2正则化的最优解是 ω i ~ = H i , i H i , i + α ω i ∗ \tilde{\omega_i}=\frac{H_{i,i}}{H_{i,i}+\alpha}\omega_i^{* } ωi~=Hi,i+αHi,iωi∗。如果 ω i ∗ ! = 0 \omega_i^{* }!= 0 ωi∗!=0(未正则化的解),则 ω i ~ ! = 0 \tilde{\omega_i}!=0 ωi~!=0(正则化后的解),这说明 L 2 L^2 L2正则化不会使参数变得稀疏,而 L 1 L^1 L1正则化有可能通过足够大的 α \alpha α实现稀疏( L 1 L^1 L1正则化的最优解: ω i ~ = s i g n ( ω i ∗ ) m a x ( ∣ ω i ∗ ∣ − α H i , i , 0 ) \tilde{\omega_i}=sign(ω^∗_i)max(|ω^∗_i|−\frac{\alpha}{H_{i,i}},0) ωi~=sign(ωi∗)max(∣ωi∗∣−Hi,iα,0))。
输入 :n为评估间隔步数,p为patience(即观察到p次更差的验证集表现后终止),w0为初始参数,k=0(k
提前终止的优缺点:
优:
1、简单有效,具有正则化效果而不需要添加惩罚项或计算其梯度
2、由于限制了训练迭代次数,减少了训练时的计算成本
缺:
1、训练期间要定期评估验证集
2、需要保存最佳的参数副本(可以忽略)
提前终止具有正则化效果
提前终止为何具有正则化效果?其真正机制可理解为将优化过程的参数空间限制在初始参数值 θ 0 \theta_0 θ0的小邻域内。
(1)提前终止和 L 2 L^2 L2正则化是等价的(在二阶近似、 λ i \lambda_i λi小的情况下),即 1 ϵ τ ≈ α \frac{1}{\epsilon\tau}\approx \alpha ϵτ1≈α。也就是说训练迭代次数 τ \tau τ和学习率 ϵ \epsilon ϵ起着与 L 2 L^2 L2正则化(权重衰减)系数 α \alpha α成反比的作用。
(2)长度为 τ \tau τ的轨迹结束于 L 2 L^2 L2正则化目标的极小点,但是提前终止通常涉及监控验证集误差,以便在空间特别好的点处终止轨迹。
(3)提前终止比 L 2 L^2 L2正则化更具有优势,提前终止能自动确定正则化的正确量,而权重衰减需要进行多个不同超参数的训练实验。
参数范数惩罚或约束是相对于固定区域或点,但有时我们需要对模型参数之间的相关型进行惩罚,使模型参数尽量接近或者相等。
参数共享这种正则化方法就是强迫模型某些参数相等,这样的约束使之模型共享一组参数。
其显著优点就是,只有参数的子集需要被存储在内存中。对于特定的模型,如CNN,这可以显著减少模型所占用的内存,并且显著提高了网络大小而不需要相应的增加训练数据。
稀疏表示是一种间接地对模型参数施加复杂惩罚,通过惩罚神经网络的激活单元,稀疏化激活单元,使得许多元素为零。例如CNN中的稀疏连接。
优 | 缺 |
---|---|
计算方便 | 不适合训练数据太小(如小于5000)的网络 |
不限制适用的模型或训练过程 | 不适合宽度太窄的网络。否则大部分网络没有输入到输出的路径。 |
[1]深度学习