L1,L2正则化

正则化引入的思想其实和奥卡姆剃刀原理很相像,奥卡姆剃刀原理:切勿浪费较多东西,去做,用较少的东西,同样可以做好的事情。

正则化的目的:避免出现过拟合(over-fitting)
经验风险最小化 + 正则化项 = 结构风险最小化
经验风险最小化(ERM),是为了让拟合的误差足够小,即:对训练数据的预测误差很小。
但是,我们学习得到的模型,当然是希望对未知数据有很好的预测能力(泛化能力),这样才更有意义。
当拟合的误差足够小的时候,可能是模型参数较多,模型比较复杂,此时模型的泛化能力一般。于是,我们增加一个正则化项,它是一个正的常数乘以模型复杂度的函数,aJ(f),a>=0 用于调整ERM与模型复杂度的关系。
结构风险最小化(SRM),相当于是要求拟合的误差足够小,同时模型不要太复杂(正则化项的极小化),这样得到的模型具有较强的泛化能力。
L1正则化表示各个参数绝对值之和。它会让各个参数的值趋向于0,从而达到减少参数个数的目的。

L2正则化标识各个参数的平方的和的开方值。它不会让参数的值趋向于0,但会改变参数的权重,减小参数的大小,从而简化模型。

关于参数的大小稀疏问题****
1)实现参数的稀疏有什么好处吗?

一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就只能呵呵了。另一个好处是参数变少可以使整个模型获得更好的可解释性。

2)参数值越小代表模型越简单吗?

是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。

L1范数正则化****
在上面提到过了的正则化是为了防止过拟合,同时奥卡姆剃刀原理和上面关于两个参数的问题同样给了我们启示,是否能在保证模型误差很小的情况下又能解决模型的过拟合问题呢?L1范数正则化的思想就是给我们的模型误差函数加上一个关于参数的惩罚项,我们现在的目标就是找到参数,使得这个和最小,这样很完美的平衡了两者的关系,模型拟合得好,又不会发生过拟合,推广能力也强,这不正是我们想要的模型吗?

L1 regularization
在原始的代价函数后面加上一个L1正则化项。即全部权重w的绝对值的和。乘以λ/n(这里不像L2正则化项那样,须要再乘以1/2。详细原因上面已经说过。)

相同先计算导数:

上式中sgn(w)表示w的符号。那么权重w的更新规则为:

比原始的更新规则多出了η * λ * sgn(w)/n这一项。

当w为正时,更新后的w变小。

当w为负时。更新后的w变大——因此它的效果就是让w往0靠。使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。

另外,上面没有提到一个问题,当w为0时怎么办?当w等于0时,|W|是不可导的。所以我们仅仅能依照原始的未经正则化的方法去更新w,这就相当于去掉ηλsgn(w)/n这一项,所以我们能够规定sgn(0)=0,这样就把w=0的情况也统一进来了。

(在编程的时候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)

L2正则化***********

L2 regularization(权重衰减)
L2正则化就是在代价函数后面再加上一个正则化项:

C0代表原始的代价函数,后面那一项就是L2正则化项。它是这样来的:全部參数w的平方的和,除以训练集的样本大小n。

λ就是正则项系数,权衡正则项与C0项的比重。另外另一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2。与1/2相乘刚好凑整。

L2正则化项是怎么避免overfitting的呢?我们推导一下看看,先求导:

能够发现L2正则化项对b的更新没有影响,可是对于w的更新有影响:

在不使用L2正则化时。求导结果中w前系数为1,如今w前面系数为 1−ηλ/n ,由于η、λ、n都是正的。所以 1−ηλ/n小于1,它的效果是减小w。这也就是权重衰减(weight decay)的由来。

猜你喜欢

转载自blog.csdn.net/a_2435542821/article/details/83589908