参考: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或者圆形L2的切点。
L1 更容易得到稀疏权重
- 令
L
(
x
)
=
f
(
x
)
+
C
∣
x
∣
L(x) = f(x) + C|x|
L(x)=f(x)+C∣x∣。其中
f
(
x
)
f(x)
f(x)为正则化前的损失函数。由于L1正则项的存在无法直接令
L
′
(
x
)
=
0
L^{'}(x)=0
L′(x)=0,但只要使
L
−
′
(
0
)
L_{-}^{'}(0)
L−′(0)与
L
0
′
(
x
)
L_{0}^{'}(x)
L0′(x)异号即满足以下公式,那么x=0就可能成为可能的极值点。
L + ′ ( 0 ) × L − ′ ( 0 ) = ( f ′ ( 0 ) + C ) × ( f ′ ( 0 ) − C ) < 0 L_{+}^{'}(0) \times L_{-}^{'}(0) = (f^{'}(0) + C) \times (f^{'}(0) - C) < 0 L+′(0)×L−′(0)=(f′(0)+C)×(f′(0)−C)<0
由于后一项一定小于另一项,要满足异号,必须满足 f ′ ( 0 ) < C f^{'}(0) < C f′(0)<C - 因此L1更加容易得到稀疏权重
- 分别对L1和L2求导,当 w < 0 w<0 w<0的时候,L2产生的导数相比L1的会小很多(L2比L1多乘了个 w w w)
L2不容易得到稀疏权重
- 加入L2正则项以后,
L
(
x
)
=
f
(
x
1
,
x
2
)
+
C
x
1
2
+
x
2
2
L(x) = f(x_1,x_2) + C\sqrt{x_1^2+x_2^2}
L(x)=f(x1,x2)+Cx12+x22。求导得
L ′ ( x ) = f ′ ( x ) + C x 1 x 1 2 + x 2 2 L^{'}(x)=f^{'}(x)+\frac{Cx_1}{\sqrt{x_1^2+x_2^2}} L′(x)=f′(x)+x12+x22Cx1
要令 x 1 = 0 x_1=0 x1=0称为极值点(假设 x 2 ! = 0 x_2!=0 x2!=0,多维权重下总有权重不为0,要不然就成了一个模型输出就成了常量),显然要 f ′ ( 0 ) = 0 f^{'}(0)=0 f′(0)=0,比L1更加严格!
(2) 贝叶斯先验概率角度
- 假设
Y
∣
X
;
w
Y|X;w
Y∣X;w服从
N
(
w
T
X
,
σ
)
N(w^TX, \sigma)
N(wTX,σ)的高斯分布,其中
w
w
w为未知的参数(w是固定的只是未知的)。则用极大似然估计求解参数
w
w
w
max log ∏ i m p ( y i ∣ x i ; w ) = min − log ∏ i m p ( y i ∣ x i ; w ) ( 1 ) \max\log\prod_i^mp(y_i|x_i;w) = \min-\log\prod_i^mp(y_i|x_i;w) \ \ \ \ \ \ \ \ (1) maxlogi∏mp(yi∣xi;w)=min−logi∏mp(yi∣xi;w) (1) - 从贝叶斯学派观点看来,我们先假设参数
w
w
w(随机变量)已经服从一种先验分布
P
(
w
)
P(w)
P(w),那么根据贝叶斯公式,最大化后验概率估计
P ( w ∣ ( X , Y ) ) = P ( ( X , Y ) ∣ w ) P ( w ) P ( X , Y ) ∝ P ( Y ∣ X , w ) P ( X ) P ( w ) ∝ P ( Y ∣ X , w ) P ( w ) P(w|(X,Y)) = \frac{P((X,Y)|w)P(w)}{P(X,Y)} \propto P(Y|X,w)P(X)P(w) \propto P(Y|X,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 w w时,似然函数就变成了:
max log ∏ i = 1 m P ( y i ∣ x i ; w ) P ( w ) = min − ( log ∏ i m p ( y i ∣ x i ; w ) + log ∏ i = 1 m p ( w ) ) ( 2 ) \max \log\prod_{i=1}^m{P(y_i|x_i;w)P(w)} = \min-(\log\prod_i^mp(y_i|x_i;w) + \log\prod_{i=1}^mp(w)) \ \ \ \ \ \ \ \ (2) maxlogi=1∏mP(yi∣xi;w)P(w)=min−(logi∏mp(yi∣xi;w)+logi=1∏mp(w)) (2)
公式(2)相比公式(1)多了一项,就是正则项(参数 w w w先验分布带来的) - L1:假设
w
w
w服从标准拉普拉斯分布,即概率密度函数为
1
2
∗
e
−
∣
w
∣
\frac{1}{2}*e^{-|w|}
21∗e−∣w∣,那么公式(2)就会变为
min − ( log ∏ i m p ( y i ∣ x i ; w ) + log ∏ i = 1 m p ( w ) ) = min − ( log ∏ i m p ( y i ∣ x i ; w ) + C ∣ ∣ w ∣ ∣ 1 ) \min-(\log\prod_i^mp(y_i|x_i;w) + \log\prod_{i=1}^mp(w)) = \min-(\log\prod_i^mp(y_i|x_i;w)+C||w||_1) min−(logi∏mp(yi∣xi;w)+logi=1∏mp(w))=min−(logi∏mp(yi∣xi;w)+C∣∣w∣∣1)
也就是说假设 w w w服从标准拉普拉斯分布时,极大似然估计就比原来多出一个L1范数项。 - L2:假设 w w w服从标准高斯分布,推理过程与3. 一样,可以得出极大似然估计比原来多出来一个L2范数项。