基础 --- > 正则化

孤街醉人 提交于 2019-12-23 05:33:50

L1, L2正则化

贝叶斯先验分布

最大似然估计

如果有数据集(X, Y),并且Y是有白噪音(就是测量的Y与真实的YrealY_{real}有均值为0的高斯分布误差),目的是新产生的X来得到Y,线性模型表示有:
f(X)=i(xiθi)+ϵ=XθT+ϵf(X) = \sum_i(x_i\theta_i) + \epsilon= X\theta^T + \epsilon
其中X=(x1,x2,...,Xn)ϵX=(x_1,x_2,...,X_n),\epsilon是白噪音,即ϵN(0,δ2)\epsilon \sim N(0, \delta^2)。对于一数据集(Xi,Yi)(X_i, Y_i)来说,由XiX_i得到YiY_i的概率是YiN(f(Xi,δ2))Y_i\sim N(f(X_i, \delta^2)):
P(YiXi,θ)=1δ2πexp(f(Xi)Yi22δ2)P(Y_i|X_i, \theta)=\frac{1}{\delta \sqrt{2\pi}}exp(-\frac{||f(X_i)-Y_i||^2}{2\delta^2})
对所有的数据,如果他们独立同分布有:
P(YX,θ)=Πi1δ2πexp(f(Xi)Yi22δ2)P(Y|X, \theta)=\Pi_i\frac{1}{\delta \sqrt{2\pi}}exp(-\frac{||f(X_i)-Y_i||^2}{2\delta^2})
前加log求解,得到
θ=arg maxθ(lnP(YX,θ))arg maxθ(12δ2if(Xi)Yi2+iln(δ2π))=arg maxθ(if(Xi)Yi2)\begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta) )\\ & arg\ max_{\theta}(-\frac{1}{2\delta^2}\sum_i||f(X_i)-Y_i||^2 + \sum_i ln(\delta \sqrt{2\pi}))\\ = & arg\ max_{\theta}(\sum_i||f(X_i)-Y_i||^2) \end{aligned}

上述即最小二乘法

Laplace 分布
Laplace概率密度函数分布为:
f(xμ,b)=12bexp(xμb)f(x|\mu,b)=\frac{1}{2b}exp(-\frac{|x-\mu|}{b})
分布的图像:

可以看到该分布主要集中在μ\mu附件,而且b越小,数据的分布越集中

Laplace先验导出L1正则化

对于前述的最大似然估计,我们实事上假设了θ\theta是均匀分布的,也就是P(θ)=ConstantP(\theta)=Constant

L1 相当于设置了一个 Laplacean先验分布,然后最大化后验概率:
Laplace先验为:
P(θi)=λ2exp(λθi)P(\theta_i) = \frac{\lambda}{2}exp(-\lambda|\theta_i|)
代入上式子有
θ=arg maxθ(lnP(YX,θ)P(θ))arg maxθ(12δ2if(Xi)Yi2+iln(δ2π)+iln(P(θi)))=arg maxθ(if(Xi)Yi2+λiθi)\begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta)P(\theta) )\\ & arg\ max_{\theta}(-\frac{1}{2\delta^2}\sum_i||f(X_i)-Y_i||^2 + \sum_i ln(\delta \sqrt{2\pi}) + \sum_i ln(P(\theta_i)))\\ = & arg\ max_{\theta}(\sum_i||f(X_i)-Y_i||^2 + \lambda \sum_i|\theta_i|) \end{aligned}

可以由Laplace先验分布知,λ\lambda 越大,说明先验分布中参数越集中在0附近。

Gauss先验导出L2正则化

参数θ\theta的分布式符合高斯分布:
P(θi)=λπexp(λθi2)P(\theta_i) = \frac{\lambda}{\sqrt \pi}exp(-\lambda||\theta_i||^2)

θ=arg maxθ(lnP(YX,θ)P(θ))=arg maxθ(if(Xi)Yi2+λiθi2)\begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta)P(\theta) )\\ =& arg\ max_{\theta} (\sum_i||f(X_i)-Y_i||^2 + \lambda \sum_i ||\theta_i||^2) \end{aligned}

总结

  1. 为什么引入正则化?
    主要解决过拟合问题

  2. 为什么L1引入稀疏性

    • L1正则化先验分布Laplace分布,数据集中在0处,引入稀疏性
    • L2正则化先验Gauss分布,数据集中在0附近,得到的解更加平滑。
  3. 为什么降低过拟合
    正则化是一种结构风险最小化的策略。
    通过在原式和正则项中做一个trade-off。能够让模型更加简单,降低模型复杂度,得到更小的泛化误差,降低过拟合。
    L2 :使得模型的解偏向于范数较小的 W,通过限制 W 范数的大小实现了对模型空间的限制,从而在一定程度上避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。
    L1 :它的优良性质是能产生稀疏性,导致 W 中许多项变成零。 稀疏的解除了计算量上的好处之外,更重要的是更具有“可解释性”。

结构风险最小化

图1 上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为L2、L1正则化给出的限制。

可以看到在正则化的限制之下,L2正则化给出的最优解w∗是使解更加靠近原点,也就是说L2正则化能降低参数范数的总和。L1正则化给出的最优解w∗是使解更加靠近某些轴,而其它的轴则为0,所以L1正则化能使得到的参数稀疏化。

  • 之所以L1是一个正方形,而L2是一个圆,因为对于二维来说:L2: w12+w22=|w_1|^2 + |w_2|^2 = 定值,L2: w1+w2=|w_1|+ |w_2| =定值
  • 当L正则化(L1和L2的圆和正方形)不变时,看出经验函数和L正则化交于一点时,经验函数尽可能的小,同样,当经验函数不变时,L正则化尽可能小,也时交于一点时总结构风险函数小

解析解

我们的目标函数为:
J(w;X,y)=Lemp(w;X,y)+αw1     (1)J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \ \ \ \ \ ---(1)
要想使得上式取得最小值ww^*,对其求导
wJ(w;X,y)=wLemp(w;X,y)+αsign(w)     (2)\nabla_w J(w; X, y) = \nabla_w L_{emp}(w; X, y) + \alpha \cdot sign(w) \ \ \ \ \ ---(2)
α=0\alpha=0时,假设我们已得到目标解ww^*,泰勒展示展开,其J(w)=0\triangledown J(w^*)=0
J(w;X,y)=J(w;X,y)+12(ww)H(ww)     (3)J(w; X, y) = J(w^*; X, y) + \frac{1}{2}(w - w^*)H(w-w^*) \ \ \ \ \ ---(3)

其中H是关于w的Hessian矩阵,为了得到更直观的解,我们简化H,假设H为对角矩阵H=diag([H1,1,H2,2...Hn,n])H = diag([H_{1,1},H_{2,2}...H_{n,n}]),将其代入到公式(1)中,有:
J(w;X,y)=J(w;X,y)+i[12Hi,i(wiwi)2+αiwi]     (4)J(w;X,y)=J(w^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(w_i-w_i^*)^2 + \alpha_i|w_i| \right] \ \ \ \ \ ---(4)
上式看出,w 各个方向的导数是不相关的,所以可以分别独立求导并使之为0,可得:
Hi,i(wiwi)+αsign(wi)=0wi=wiαHi,isign(wi)=sign(wi)wiαHi,isign(wi)=sign(wi)(wiαHi,i) \begin{aligned} H_{i,i}(w_i-w_i^*)+& \alpha \cdot sign(w_i)=0 \\ \Rightarrow w_i = & w_i^* - \frac{\alpha}{H_{i,i}}sign(w_i^*) \\ = & sign(w_i^*)|w_i^*| - \frac{\alpha}{H_{i,i}}sign(w_i^*)\\ = & sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{i,i}}) \\ \end{aligned}
对于上式,其实我们最终得到的求解:

  • 必定有wi<w|w_i| < |w^*|,因为只有这样,才能是αwi\alpha |w_i|更小。
  • 而且sign(wi)=sign(wi)wi=0sign(w_i) = sign(w^*_i)或w_i=0,只有这样,在αwi\alpha|w_i|不变时,才能使得式(4)最小。

因此,我们得到最终的解
wi=sign(wi)max{wiαHi,i,0} w_i = sign(w^*_i) \max\left\{ |w_i^*| - \frac{\alpha}{H_{i,i}},0 \right\}

由此解可知:

  • wiαHi,i|w_i^*| \leq \frac{\alpha}{H_{i,i}},那么正则化后的最优解wi=0w_i=0,说明这个方向Lemp(w;X,y)L_{emp}(w; X, y)被正则话抵消了,即引入了稀疏性。
  • wi>αHi,i|w_i^*| > \frac{\alpha}{H_{i,i}},正则化不会最优解推向wi=0w_i=0,而是在这方向向原点移动了αHi,i\frac{\alpha}{H_{i,i}}的距离

dropout

dropout主要是解决在深度学习中过拟合的问题,一般的神经网络很容易出现过拟合,有一种方法即通过模型组合,训练多个模型,但这样会非常耗时,Hinton提出的Dropout很好地解决了这个问题。
基本步骤是在每一次的迭代中,随机删除一部分节点,只训练剩下的节点。每次迭代都会随机删除,每次迭代删除的节点也都不一样,相当于每次迭代训练的都是不一样的网络,通过这样的方式降低节点之间的关联性以及模型的复杂度,从而达到正则化的效果。预测上这点上有点类似 bagging,但比 bagging 来的简单。

即:

使用dropout需要设置一个超参数 keep_prob, 作用是每层节点随机保留的比例

  • 经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。
  • dropout也可以被用作一种添加噪声的方法,直接对input进行操作。输入层设为更接近1的数。使得输入变化不会太大(0.8)

训练过程注意:

  • 只有训练时dropout,预测时所有节点使用
  • 数据量小的时候,dropout效果不好,数据量大了,dropout效果好
  • 对参数w的训练进行球形限制(max-normalization),对dropout的训练非常有用。
  • 球形半径c是一个需要调整的参数。可以使用验证集进行参数调优
  • dropout自己虽然也很牛,但是dropout、max-normalization、large decaying learning rates and high momentum组合起来效果更好,比如max-norm regularization就可以防止大的learning rate导致的参数blow up。
  • 使用pretraining方法也可以帮助dropout训练参数,在使用dropout时,要将所有参数都乘以1/p。

缺点:
dropout的缺点就在于训练时间是没有dropout网络的2-3倍。

earlystopping

提前终止可能是最简单的正则化方式,他适用于模型的表达能力很强的时候。这种情况下,一般训练误差会随着训练次数的增多逐渐下降,而测试误差则会先下降而后再次上升。为了避免过拟合训练集,一个很好的解决方案是 提前停止,当它在验证集上的性能开始下降时就中断训练。

batch normalization

可以让大型的卷积神经网络训练速度加快很多倍,同时收敛后分类的准确率也可以大幅度提高。BN在训练某层时,会对每一个mini-batch数据进行标准化处理,减少了内部神经元分布的改变。

数据增强

复制现有数据并加随机噪声,重采样等,在图像领域我们可以进行不同角度旋转,平移变换,随机裁剪,中心裁剪,模糊等。

常用的数据增强方法有:

  • 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
  • 翻转变换(flip): 沿着水平或者垂直方向翻转图像;
  • 缩放变换(zoom): 按照一定的比例放大或者缩小图像;
  • 平移变换(shift): 在图像平面上对图像以一定方式进行平移;
  • 可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置;
  • 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, > - 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
  • 对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
  • 噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
  • 颜色变化:在图像通道上添加随机扰动。
  • 输入图像随机选择一块区域涂黑,参考《Random Erasing Data Augmentation》。

权值共享

权值共享最常见的就是在卷积神经网络中,权值共享的目的旨在减小模型中的参数,同时还能较少计算量。在循环神经网络中也用到了权值共享。
 具体来说,就是整个图片使用同一个卷积核内的参数,比较一个331的卷积核,这个核中9个参数被整张图共享,并不会因图像位置不同而改变核内的参数。

增加噪声

添加噪声的途径有很多,可以在输入数据上添加,增大数据的多样性,可以在权值上添加噪声,这种方法类似于L2正则

对抗学习

通过对输入增加扰动,来增加模型的抗攻击型和泛化能力。参见NLP — >对抗学习:从FGM, PGD到FreeLB

模型组合

训练多个模型,然后将各个模型融合

ref:

L1正则化及其推导
机器学习中的正则化(Regularization)
深度学习中Dropout的作用和原理
深度学习100问之神经网络中解决过拟合的几种方法

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!