概述
先附上两张李宏毅的ppt(对L2正则化的推导)
看了这两张图:所以weight decay就是正则化。正则化怎么来的?源头就在于LOSS的改变!!!
其中参数λ是控制L2正则化强度的超参数,λ 设置得越大,对大的权重施加的惩罚就越重。
(1)正则化分L1正则化和L2正则化和L∞正则化
L1正则化会使一些特征的权重变为0,比如你有100个特征,它可能会让40个特征的权重为0,换句话说,抛弃了一些无用的特征。这听上去就很有用,100个特征估计有60个都是无用的特征或噪音,这时候L1正则化就可以帮你消除一些没有用的特征,留下重要的特征【这很好从直觉上理解理解,因为L1正则化是让所有权重的绝对值之和变为1,那原来很大的权重自然要变小,原来小的权重直接变小到不要了】
L2正则化对所有特征一视同仁,都一起变小。比如你现在处于一种过拟合的状态,训练集100%准确,测试集却60%准确。对于训练好的权重矩阵,每个特征对应的权值都很大(意思是每个特征都很重要),但事实上可能并没有这么重要,原本0.8的重要程度,你可能现在训练成0.99(为什么会训练出0.99,有一种可能是你的迭代次数太多了,训练的过于细腻了,细腻过头了)所以你要适当的降低权值,但是你会想,由于你训练过头了,所以所有特征的权值都偏大了,你希望使所有特征的权值都变小一些。这时候就可以用L2正则化。【为什么L2能让所有权值变小?这个看上面那两张图秒懂好吧!】
L∞正则化:李宏毅的课有说,这里不提。只说一点:L∞范数也称为 Max范数,相当于各个元素的绝对值中最大的那一个。
(2)出现过拟合的原因
1.训练集的数据太少
2.训练集和新数据的特征分布不一致
3.训练集中存在噪音。噪音大到模型过分记住了噪音的特征,反而忽略了真实的输入输出间的关系。
4.权值学习迭代次数足够多,拟合了训练数据中的噪音和训练样例中没有代表性的特征。
#我觉得上述4点中最后两点可以很好的解释为什么正则化能抑制过拟合。
针对第三点:
注意字眼“过分记住”了噪音的特征,这和第四点不一样,第四点也是记住了噪音的特征,但是没有“过分记住”。所谓过分记住,就是重要的特征权重大(比如0.9),不重要的特征(例如噪音)权重也大(本来该是0.001的,结果学成了0.5)这时候L2正则化就很有用,L2正则化是降低所有权值的大小,管你什么权重,统统一视同仁,一起变小。为什么不用L1正则化?因为这种情况下真正的特征和噪声的权值都很大,L1正则化只能把那些权值很小的特征去除,对于权值大的特征只能尽量降低。也就是说,这种情况下你不知道要去除哪个特征,因为看上去它们都很重要(因为权值都很大),那你就用L2正则化,惩罚所有的权值(但是这并不代表对那些重要的特征这样的惩罚是不好的,反而有时候会有帮助,因为重要的特征对应的权值很可能是0.9这种,太大也不好!也得降一降!(为什么太大不好我倒不是很理解,只是在书上看到说:很多过拟合原本就是 因为权重参数取值过大才发生的)这样来看,L2惩罚所有权值做到了一石二鸟,即惩罚了过大的权值,又惩罚了那些过分拟合的噪声的权值)
针对第四点:
可能有些噪声本来权重为0的,但是你迭代次数太多了,导致它反而重要起来,权重变为0.01,这时候我们就想要去掉这个权重,让它滚回0。当我们想要去除一些噪声时,可以采用L1正则化,使一些小的权重直接变为0(即抛弃一些特征),大的权重变小(抑制一些特征的权值)【这很好理解,因为L1正则化是让所有权重的绝对值之和变为1,那原来很大的权重自然要变小,原来小的权重直接变小到不要了】
以上只是博主我自己的一些理解,多偏向直觉上的理解。如有不对多多包涵,也欢迎指出不对的地方!互相学习!
最后
以上就是健壮豌豆为你收集整理的weight decay(权重衰减)【即“正则化”】的全部内容,希望文章能够帮你解决weight decay(权重衰减)【即“正则化”】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复