美文网首页机器学习
L1正则化和L2正则化

L1正则化和L2正则化

作者: 西北小生_ | 来源:发表于2019-08-28 16:42 被阅读0次

    正则化方法是机器学习中用于防止过拟合的方法,L1和L2则分别指L1-范数和L2-范数,下面先介绍一下范数:

    1. 范数

    向量的范数表征向量间的距离,如果两个常量之间比大小,我们可以用减法,但是两个向量如何比较大小或者二者间的距离呢?我们采用的方法就是将两个向量用同一种映射方法,将其映射为常量,然后两个常量再比较大小。这种映射方法就是求向量的范数,所以范数其实是一种函数,而且是泛函。
    l_p-范数的定义:
    ||x||_p=\sqrt[p]{\sum_i|x_i|^p}
    (1) l_0-范数:||x||_0=\sqrt[0]{\sum_i|x_i|^0}表示\vec{x}中非零元素的个数;
    (2) l_1-范数:||x||_1=\sqrt[1]{\sum_i|x_i|^1}表示\vec{x}中元素的绝对值的和;
    (3) l_2-范数:||x||_2=\sqrt[2]{\sum_i|x_i|^2}表示\vec{x}中元素的平方和再开根号,这就是我们常用的向量的模;

    2.权重衰减

    在初始化神经网络的权值时,我们用的都是非常小的值来初始化,比如均值为0,方差为0.01的截断高斯分布。这是为什么呢?因为我们希望得到的训练好的权值也是数值(绝对值)较小的数,这样拟合和泛化都会更好。如果权值过大,将很容易产生过拟合。

    那么如何防止权值过大来抑制过拟合呢?这就需要权值衰减了。

    先来看看权重衰减的两种方式:L1正则化和L2正则化。

    2.1 L1正则化:

    \begin{equation}\begin{split} C&=C_0+\frac {\lambda}{n} ||w||_1 \\ &=C_0+\frac {\lambda}{n} \sum_{i=1}^n |w_i|\\ \end{split}\end{equation}

    2.2 L2正则化:

    \begin{equation}\begin{split} C&=C_0+\frac {\lambda}{2n} ||w||_2^2\\ &=C_0+\frac {\lambda}{2n} \sum_{i=1}^n w_i^2\\ \end{split}\end{equation}

    其中C_0表示原有的损失函数,如交叉熵或均值平方误差损失函数;

    ||w||_1||w||_2分别表示L1和L2范数,即公式第二排表示的绝对值和&平方和。

    \lambda即权值衰减的衰减系数,它一方面协调损失函数中C_0||w||_1||w||_2的比重,一方面控制权值衰减的速度,这将在反向传播中很容易看出来。

    除以权重数量n表示单位样本的权重范数,这样可以避免样本数量对损失函数的影响,这是损失函数定义的一贯做法,如交叉熵和均值平方误差损失函数中都有除以样本的数量。

    L2正则化多除了个2是为了方便求导,在求导时会和后面||w||_2^2中的平方求导得到的2相抵消,使反向传播的形式和L1范数一致。

    权重衰减的思想就是将权重参数的大小,按一定的比重加入神经网络的损失函数中,在神经网络的训练过程中要想降低损失函数,就要降低权重参数的大小,如何表示权重的大小呢?即用上面介绍的范数来表示。

    \lambda是如何控制权重衰减的速度的呢?从反向传播中就能一目了然。

    反向传播:

    下面只取L2正则化为例推导反向传播。
    原式C=C_0+\frac {\lambda}{2n} (w_1^2+w_2^2+…+w_n^2)
    反向传播:
    \frac {\partial C}{\partial w_i}=\frac {\partial C}{\partial C_0}+\frac {\lambda}{n} w_i
    梯度下降:
    \begin{equation}\begin{split} w_i&=w_i-\alpha \frac {\partial C}{\partial w_i}\\ &=w_i-\alpha \frac {\partial C}{\partial C_0}-\alpha \frac {\lambda}{n} w_i\\ &=(1-\alpha \frac {\lambda}{n})w_i-\alpha \frac {\partial C}{\partial C_0}\\ \end{split}\end{equation}
    其中\alpha为学习率,\alpha,\lambda,n都是正数,所以1-\alpha \frac {\lambda}{n}是小于1的数,也就是说,在梯度下降是,权重在一定程度上衰减了,衰减的大小由\lambda控制,但是衰减后的权重再减去后面的梯度项之后,有可能表达也有可能减小,这与\frac {\partial C}{\partial C_0}的符号有关。

    权重衰减能够使权重参数变得小而稀疏,也就是会学习到很多值为0的权重。并且L1正则化比L2正则化更容易得到稀疏权重。

    相关文章

      网友评论

        本文标题:L1正则化和L2正则化

        本文链接:https://www.haomeiwen.com/subject/adudsctx.html