L1正则化 vs L2正则化
L1,L2
常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归。
L1和L2正则化的作用:
- L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合。
- L2正则化可以防止模型过拟合(overfitting)。
\[L_2 = \Vert\omega\Vert_2=\sqrt{\sum_i\omega_i^2}\]L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。由于输入和权重之间的乘法操作,这样就有了一个优良的特性:使网络更倾向于使用所有输入特征,而不是严重依赖输入特征中某些小部分特征。 L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。这样做可以提高模型的泛化能力,降低过拟合的风险。
该式最小化可以让数值不集中在某些特定维度上,类比$1^2+1^2+1^2<3^2$。这样子也是其能够分散权重向量的原因,从而鼓励分类器将所有维度上的特征都用起来。
\[L_1= \Vert\omega\Vert_1 = \sum_i \vert \omega_i\vert\]L1正则化有一个有趣的性质,它会让权重向量在最优化的过程中变得稀疏(即非常接近0)。也就是说,使用L1正则化的神经元最后使用的是它们最重要的输入数据的稀疏子集,同时对于噪音输入则几乎是不变的了。相较L1正则化,L2正则化中的权重向量大多是分散的小数字。
该式最小当且仅当所有值往0靠近。通过优化过程,噪声项对应的权重因其对效果没有显著影响所以被归置为零,这使得其可以把重要的神经元筛选出来,起到了一个特征选取的作用。
正则化参数
我们一般会为正则项参数添加一个超参数λ或者α,用来平衡经验风险和结构风险(正则项表示结构风险)。
如下L2正则化表达式:
\[\Vert X\omega-y\Vert_2^2+\alpha\Vert\omega\Vert^2_2\]其中,经验风险为 $\Vert X\omega-y\Vert_2^2$ ,结构风险为 $\alpha\Vert\omega\Vert^2_2$ 。
正则化参数 $\lambda$ 或 $\alpha$ 的选择:
- 正则化参数比较大,说明约束条件更加严格;但过大的超参数设置容易造成欠拟合;
- 正则化参数比较小,说明我们考虑经验损失更多一些,约束条件较宽松;但过小的超参数设置容易造成过拟合。
小结
- L1正则化以及L2正则化都可以防止模型过拟合,若非有特征选择的目的,一般使用效果通常更好的L2正则化模型;
- L1范数倾向于让权重向量在最优化过程中变得稀疏,可以作为特征选择;
- L2范数倾向于利用所有维度上的特征;
- 正则化参数 $\lambda$ 越大,约束越严格,太大容易产生欠拟合。正则化参数 $\lambda$ 越小,约束宽松,太小起不到约束作用,容易产生过拟合。
为什么不选择L0范数
从这个角度看问题非常有意思:最直接的衡量模型复杂度的东西却不被选择?
角度一
对于过拟合的模型,特征项一定是过多的,那么相对应的权重 $\omega$ 的数量一定和特征项数量一样的,也就是说权重 $\omega_i$ 的数量是过多的。那么我们若要让 $\omega$ 向量中维度最小化,那么不就是L0范数的概念么?(L0范数即为向量中非零元素的个数。)
那为什么不选择零范数作为我们的结构风险函数呢?因为求解零范数是一个NP-C问题 (世界七大数学难题之一。这类现象的一个典型例子是生成问题的一个解通常比验证一个特定的解时间花费要多得多)。因为L0范数难求,我们转向了L1范数,因为两者在一定条件下,以概率1条件下相等。
\[\begin{matrix} \min\Vert x\Vert_0 & p. & \min\Vert x\Vert_1\\ \text{s.t. } Ax=b&\Leftrightarrow&\text{s.t. } Ax=b \end{matrix}\]角度二
有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种 函数称为 “L0 范数”,但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数,因为对向量缩放 $\alpha$ 倍不会改变该向量非零元素的数目。因此,L1范数经常作为表示非零元素数目的替代函数。