为什么L1 正则化会导致稀疏性?
基本概念:
-
稀疏矩阵:
稀疏矩阵指有很多元素为0,少数参数为非零值的矩阵。 -
稀疏参数:
-
泛化:
在先前未观测到的输入上表现良好的能力被称为泛化。
更简单的函数更容易泛化(训练误差和测试误差的差距小),但是仍然需要选择一个充分复杂的假设以达到低的训练误差,通常,当模型容量上升时,训练误差会下降,直到其渐近最小可能误差,通常泛化误差是一个关于模型容量的 U U U型曲线函数。
-
泛化能力:
泛化能力是指机器学习算法对新鲜样本的适应能力,简而言之是在原有的数据集上添加新的数据集,通过训练输出一个合理的结果。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力 -
泛化误差:(测试误差)
新输入的误期望。如果学到的模型是 f ^ \hat{f} f^,那么用这个模型对未知数据预测的误差即为泛化误差:
R e x p ( f ^ ) = E P [ L ( Y , f ^ ( X ) ) ] = ∫ x × y L ( y , f ^ ( x ) ) P ( x , y ) d x d y R_{exp}(\hat{f})=E_P[L(Y,\hat{f}(X))]=\int_{x\times y}L(y, \hat{f}(x))P(x,y)dxdy Rexp(f^)=EP[L(Y,f^(X))]=∫x×yL(y,f^(x))P(x,y)dxdy
由上述定义可以看出:泛化误差就是所学习到的模型的风险函数或者期望损失。如果方法A学习的模型比方法B学习的模型拥有更小的泛化误差,那么方法A更有效。 -
训练误差:
当训练机器学习模型时,在训练集上计算一些被称为训练误差的度量误差,目标是降低训练误差。 -
测试集:
度量模型在训练集中分出来的测试集样本上的性能,来评估机器学习模型的泛化误差。 -
过拟合:
训练误差和测试误差之间的差距太大。 -
欠拟合:
欠拟合是指模型拟合程度不高,数据距离拟合曲线较远,或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。 -
容量:
模型的容量是指其拟合各种函数的能力。容量低的模型衡很难拟合训练集,容量高的模型可能会过拟合(因为记住了不适用于测试机的训练集性质) -
正则化:
修改学习算法,使其降低泛化误差而非训练误差。
一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,包括引入一些约束规则,增加先验、提前停止等。
问题讨论:
一般而言,只有少数部分也特征对模型有贡献,大部分特征对模型没有贡献或着贡献很小,稀疏参数的引入,是的一些特征对应的参数是0,所以就可以剔除没有用的特征,从而实现特征选择,提高模型的泛化能力,降低过拟合的可能。
L1 正则使得参数稀疏可以从函数的角度来看。
1维情形:
如下图:
棕色:原始目标函数
L
(
w
)
L(w)
L(w)的曲线图;最小值点在蓝点处,且对应的
w
∗
w^*
w∗值非零。
黄色:加上
L
2
L2
L2正则化项,目标函数变为
L
(
w
)
+
C
w
2
L(w)+Cw2
L(w)+Cw2;最小值点在黄点处,对应的
W
∗
W^*
W∗的绝对值减小了,但仍然非零。
绿色:加上
L
1
L1
L1正则化项,目标函数变为
L
(
w
)
+
C
∣
w
∣
L(w)+C| w|
L(w)+C∣w∣;最小值点在红点处,对应的
W
∗
=
0
W^*=0
W∗=0,产生了稀疏性。
分析产生上述现象的原因:
加入
L
1
L 1
L1正则项后,对待正则项的目标函数求导,正则项部分产生的导数在原点左边部分是
−
C
-C
−C,在原点右边部分是
C
C
C,因此,只要原目标函数的导数绝对值小于
C
C
C,那么带正则项的木笔哦啊函数在原点左边部分始终是递减的,在原点右边部分始终是递增的,最小值点在原点处。
相反加入
L
2
L2
L2正则项后,
L
2
L2
L2正则项在原点处的导数为0,只要原目标函数在原点处的导数不为0,那么最小值点就不会在原点,所以
L
2
L2
L2只有减小
w
w
w绝对值的作用,对解空间的稀疏性没有贡献。