正则化的一点理解

过拟合

在网络训练过程当中,常常会遇到过拟合的问题,根据方差+误差的分解,说明“方差”较大。直观的理解就是网络对于已有训练数据的偏差很小,而对未知的测试数据预测不好的现象网络

咱们会称这个模型“过于复杂”,这里的复杂能够理解为模型为了拟合全部的样本,会把不重要的特征放大(部分参数为了适应这些特征的变化也会很大),而相对的,一些通用的特征容易拟合(部分参数会很小),这样获得的模型会偏向一些微小的,不重要的特征,所以输入数据一有波动,预测效果就会较差。函数

我以为用这个例子来解释模型的简单和复杂可能比较好。能够把一个模型比做一我的,模型的输入是外界环境,模型的输出是他对于外界环境所作出的反应。生活中有的人很复杂,他对于外界环境过于敏感,会注意到身边的各类变化,并努力的适应这种变化。他想要获得全部人的承认,知足身边的一切。但咱们都知道,这是不可能实现的,一旦他进入一个新的环境,那么他瞬间会变得无所适从。相反,有的人就很简单,对于身边的各类小事,看的很轻,绝不在意。学习

正则化(Regularization)

一般为了不过拟合,能够增长训练数据,或者下降模型的复杂度。但现实中,数据获取并不容易,并且减小网络规模也就下降了模型的表达能力,这也不是咱们想要的结果。
那有没有既不须要更多的数据,也不减小网络规模的方法呢。正则化就是这样一种方法,它经过增长训练偏差来减小测试偏差(训练偏差太小有多是过拟合)测试

正则化的目的是为了限制网络的参数过大或过多,让模型尽量的简单。好比在进行曲线拟合时,通常3次多项式就能够实现很好的效果。而若是使用8次多项式,模型参数过多,就容易发生过拟合。这个时候,咱们但愿高阶的参数尽量的小,这样就至关于只保留了低阶的项,模型看上去变简单了。spa

实现这个目的最直观的方法是下降w的数目,即L0正则化(使用L0范数做为正则化项),让高阶的参数为0,能够很容易的实现正则化的目的。但由于L0正则化很难求解,是个NP难问题。.net

本文主要介绍L1和L2正则化,这也是正则化最经常使用的实现方式。3d

L2正则化(L2 Regularization)

L2正则化是在偏差函数以后加上模型参数的L2范数做为约束,下式为带L2正则化项的损失函数。第二项为正则化项,w为模型参数,$||w||^2$表示w的L2范数,w的L2范数为w中各个参数的平方和。$\lambda$表示权重参数,平衡正则化项和偏差项。blog

$$L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||^2 \tag{1}$$get

将上式简写为$L=L_0+R$, $L_0$为原始偏差项,R为L2正则化项。咱们能够把它看做是一个等式约束问题,即求解在约束条件R下$L_0$的最小值it

这里假设w只有两个参数,$w=\{w^1, w^2\}$,以下图所示,等值线表示$L_{0}$,黑色的圆表示函数R,既要知足$L_0$最小,并且须要知足约束条件R,所以R和$L_0$第一次相交的位置即为最优值。
20160904184646963.png

$\lambda$能够控制R图形的大小,$\lambda$越大,图形越小,越不容易过拟合(过大反而容易欠拟合);$\lambda$越小,图形越大,越容易过拟合

使用带L2正则化项的损失函数构建的模型称为岭回归,也称Ridge回归。

L1正则化(L1 Regularization)

L1正则化能够看作是L0的最优凸近似。L1正则化是在偏差函数以后加上模型参数的L1范数做为约束,下式为带L1正则化项的损失函数。和式(1)基本一致,只不过正则化项变成了L1正则化项,w的L1范数为w中各个参数的绝对值之和

$$L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\lambda||w||_1 \tag{2}$$

一样的,咱们将上式写成$L=L_0+R$, $L_0$为原始偏差项,R为L1正则化项。能够用下图来表示$L_0$和R,图中等值线表示$L_0$,黑色矩形表示R函数。
20160904184428459.png

和L2正则化相似,$L_0$在约束条件R下的最小值即为黑色矩形和等值线的第一个交点。图中最优势为菱形与$w^2$坐标轴的交点,该点对应的参数为$(0, w^2)$。能够想象,当模型具备不少参数和特征时,R将从二维平面上的菱形变为高维空间中的具备多个顶点的高维图形,$L_0$与R的第一个交点,大几率位于R图形的顶点上,而这些顶点对应的参数,其中不少都为0,这样通过L1正则化以后就能够获得一个稀疏模型

这里解释一下参数稀疏的做用:

  1. 参数稀疏能够实现特征选择。一般训练数据包含了大量的特征,而真正有用的可能只有一小部分。稀疏化算子能够经过学习自动的去掉哪些无用的特征,将这些特征对应的权重置0。
  2. 参数稀疏可让模型的解释性更强。好比一种疾病可能有成百上千个致病因素,咱们想分析哪些因素是致病的关键因素,稀疏化算子可让模型的大部分参数为0,只保留几个非零的参数,便可以认为保留的因素是致病的关键因素。

使用带L1正则化项的损失函数构建的模型称为Lasso回归。

为何正则化能够防止过拟合

上面已经已经结合图形比较直观的介绍了L1正则化和L2正则化,以及它们的特色。L1正则化是经过稀疏参数来实现的,即让部分模型参数为0。这里具体解释为何L2正则化能够防止过拟合。

下面以线性回归的梯度降低过程为例,参数为w,损失函数为L(w),N为样本数目,$x_i$表示第i个样本,$y_i$表示第i个样本对应的标签。下式表示未添加正则化项的损失函数,除以2是为了求导方便。

$$L(w)=\frac{1}{2N}(f(x,w)-y)^2\tag{3}$$

由式(3)能够获得第i个参数$w^i$的梯度计算公式:

$$\frac{\partial}{\partial w^i}L=\frac{1}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w) \tag{4}$$

则参数$w^i$的梯度$\theta _i$更新过程为:

$$\theta_i = \theta_i-\eta\frac{1}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w) \tag{5}$$

添加正则项以后的梯度更新过程为:

$$\theta_i = \theta_i(1-\frac{\lambda\eta}{N})-\frac{\eta}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w)\tag{6}$$

$\eta$表示学习率,从上式能够看出,相比与式(5), $\theta$每次更新过程都会乘以一个比1小的数,所以$\theta$是不断减小的。控制$\lambda$,L2正则化能够得到很小的参数,。

总结

L1正则化和L2正则化都能防止模型过拟合,但方式有所不一样。L1正则化倾向于将减小模型参数,让网络变得稀疏,L1正则化在特征选择颇有用而L2正则化倾向于让网络参数变得更小,主要用来防止模型过拟合

防止模型过拟合主要使用L2正则化,缘由是L2正则化计算更为方便
正则化就讲到这里了,至于如何从贝叶斯角度来理解正则化,以后在讲贝叶斯估计再讨论。

Reference

https://mp.weixin.qq.com/s/Ww...

https://blog.csdn.net/jinping...

https://www.zhihu.com/questio...

https://blog.csdn.net/zouxy09...