参考:https://zhuanlan.zhihu.com/p/35356992
正则化
- 正则化是结构风险最小化的一种策略。给损失函数加上正则化项,能使得在优化模型的时候要对经验风险与模型复杂度做一个trade-off,同时符合偏差和方差(若模型非常复杂,那么加入噪声以后的输入可能输出就会跟目标差距很大,鲁棒性降低,方差变大)分析。通过降低模型复杂度,得到更好的泛化能力,降低模型对训练数据的拟合程度。
- L1正则化就是在损失函数加上L1范数,加上L1范数容易得到稀疏解
- L2正则化是在损失函数后加上L2范数,使得得出的解比较平滑(不是稀疏),但是能保证比较多的参数更接近于0,降低模型的复杂度,一般在深度学习用得比较多。pytorch中只要在optim加上weight_decay参数就可以。
(1) 结构风险最小化角度
-
假设优化目标为
-
L1正则(lasso公式)
-
L2正则(岭回归)
-
假如不加正则项的话,对于凸的目标函数来说,最终目标就是梯度为0的区域即中心紫色区域。
-
当假如正则项以后,我们不仅需要使权重接近中心紫色区域,还需要使L1菱形或者L2圆形更加小
-
对于同一条梯度等高线而言,与菱形相切L1正则项最小,与圆形相切时L2正则项最小。因此,假如正则项以后,损失函数的最低点一定是某条等高线与菱形L1或者圆形L2的切点。
L1 更容易得到稀疏权重
- 令
L(x)=f(x)+C∣x∣。其中
f(x)为正则化前的损失函数。由于L1正则项的存在无法直接令
L′(x)=0,但只要使
L−′(0)与
L0′(x)异号即满足以下公式,那么x=0就可能成为可能的极值点。
L+′(0)×L−′(0)=(f′(0)+C)×(f′(0)−C)<0
由于后一项一定小于另一项,要满足异号,必须满足
f′(0)<C
- 因此L1更加容易得到稀疏权重
- 分别对L1和L2求导,当
w<0的时候,L2产生的导数相比L1的会小很多(L2比L1多乘了个
w)
(2) 贝叶斯先验概率角度
- 假设
Y∣X;w服从
N(wTX,σ)的高斯分布,其中
w为未知的参数(w是固定的只是未知的)。则用极大似然估计求解参数
w
maxlogi∏mp(yi∣xi;w)=min−logi∏mp(yi∣xi;w) (1)
- 从贝叶斯学派观点看来,我们先假设参数
w(随机变量)已经服从一种先验分布
P(w),那么根据贝叶斯公式,最大化后验概率估计
P(w∣(X,Y))=P(X,Y)P((X,Y)∣w)P(w)∝P(Y∣X,w)P(X)P(w)∝P(Y∣X,w)P(w)
这时候我们再用极大似然估计再去估计参数
w时,似然函数就变成了:
maxlogi=1∏mP(yi∣xi;w)P(w)=min−(logi∏mp(yi∣xi;w)+logi=1∏mp(w)) (2)
公式(2)相比公式(1)多了一项,就是正则项(参数
w先验分布带来的)
- L1:假设
w服从标准拉普拉斯分布,即概率密度函数为
21∗e−∣w∣,那么公式(2)就会变为
min−(logi∏mp(yi∣xi;w)+logi=1∏mp(w))=min−(logi∏mp(yi∣xi;w)+C∣∣w∣∣1)
也就是说假设
w服从标准拉普拉斯分布时,极大似然估计就比原来多出一个L1范数项。
- L2:假设
w服从标准高斯分布,推理过程与3. 一样,可以得出极大似然估计比原来多出来一个L2范数项。