在机器学习中,当模型过于复杂时,为了防止产生过拟合的现象,最常用的方法时采用正则化,如L1正则和L2正则.
L2正则就是在原来的损失函数的基础上加上权重参数的平方和. L=L0+λ∑jwj2L = L_0 + \lambda\sum_j w_j^2L=L0+λj∑wj2 其中L0L_0L0是训练样本误差,λ\lambdaλ是正则化参数. 正则化的目的是防止参数过多或者过大,从而避免模型过于复杂. 为了达到这一目的最直接的方法是限制参数的个数,但是这属于NP-hard问题,求解很困难,所以我们通常采取的限定条件是 ∑jwj2≤C\sum_j w_j^2\leq Cj∑wj2≤C
所谓的添加正则项的损失函数,本质上是原始训练误差在给定上述约束条件下的最小化,这样我们通过拉格朗日乘数法即可将其转化为无约束问题,也就是我们添加了正则项的损失函数LLL,拉格朗日乘子即是正则化参数.
假设损失函数是在二维上求解,即参数的个数为2,我们可以绘制出如下图象,其中彩色实线是L0L_0L0的等值线,黑色的是L2L2L2的等值线,从二维空间上看,L2L2L2和L0L_0L0等值线相交时参数w1、w2w_1、w_2w1、w2等于零的概率很小,所以使用L2L2L2正则的解不具有稀疏性.
L2正则倾向于构造一个所有参数都比较小的模型,当数据产生较大的偏移时,由于参数足够小,对于结果也不会产生太大的影响,所以说抗扰动能力强.
根据 L=L0+λ∑jwj2L = L_0 + \lambda\sum_j w_j^2L=L0+λj∑wj2 为了LLL的最小值,我们通常对其求梯度并令其为0. ▽L=▽L0+2λ∑jwj\bigtriangledown L = \bigtriangledown L_0 + 2 \lambda \sum_j w_j▽L=▽L0+2λj∑wj 在参数wj=0w_j=0wj=0时, ▽L=▽L0\bigtriangledown L = \bigtriangledown L_0▽L=▽L0 这意味着代价函数的梯度在wj=0w_j=0wj=0处不等于零,所以对损失函数LLL求极小值时,不会wj=0w_j=0wj=0处取到,因此L2L_2L2正则不会产生稀疏解.
L=L0+∑j∣wj∣L = L_0 + \sum_j|w_j|L=L0+j∑∣wj∣
L1L1L1的等值线是方形,L0L_0L0与L1L1L1等值线相交时很大概率上出现在顶点处,而顶点都在坐标轴上,因此必有其他参数为0,所以用L1L1L1正则的解具有稀疏性.
同样我们对损失函数求梯度. ▽L=▽L0+λsign(wj)={▽L0−λ,wj→0−▽L0+λ,wj→0+ \begin{aligned} \bigtriangledown L = \bigtriangledown L_0 + \lambda sign(w_j)= \begin{cases} \bigtriangledown L_0 - \lambda , & w_j \rightarrow 0^-\\ \bigtriangledown L_0 + \lambda , & w_j \rightarrow 0^+ \end{cases} \end{aligned} ▽L=▽L0+λsign(wj)={▽L0−λ,▽L0+λ,wj→0−wj→0+ 当▽L0−λ\bigtriangledown L_0 - \lambda▽L0−λ与▽L0+λ\bigtriangledown L_0 + \lambda▽L0+λ异号时,则损失函数LLL会在wjw_jwj处产生一个极小值,因此L1L1L1正则会产生稀疏解