参考:https://www.zhihu.com/question/26485586
范数定义:
因此L1范数:
L2范数:
应用一:作为损失函数。
L1-norm 损失函数,又被称为 least absolute deviation (LAD,最小绝对偏差),最小化损失函数,其实就是在最小化预测值 和目标值 的绝对值。
L2-norm 损失函数,又有大名最小二乘误差 (least squares error, LSE):
由于L1-norm损失函数有绝对值,通过求导、置零、解方程获取函数极值不方便,所有通常不用L1-norm作为损失函数。
应用二:作为正则项,防止过拟合。
因为机器学习中众所周知的过拟合问题,所以用正则化防止过拟合,成了机器学习中一个非常重要的技巧。但数学上来讲,其实就是在损失函数中加个正则项(Regularization Term),来防止参数拟合得过好。L1-regularization 和 L2-regularization 便都是我们常用的正则项,两者公式的例子分别如下
这两个正则项最主要的不同,包括两点:
- 如上面提到的,L2 计算起来更方便,而 L1 在特别是非稀疏向量上的计算效率就很低;
- 还有就是 L1 最重要的一个特点,输出稀疏,会把不重要的特征直接置零,而 L2 则不会;
- 最后,如之前多次提过,L2 有唯一解,而 L1 不是。
因为 L1 天然的输出稀疏性,把不重要的特征都置为 0,所以它也是一个天然的特征选择器。
可是为什么 L1 会有这样的性质呢,而 L2 没有呢?这里用个直观的例子来讲解。
来一步一步看吧,首先获知用梯度下降法来优化时,需要求导获得梯度,然后用以更新参数。
于是分别先对 L1 正则项和 L2 正则项来进行求导,可得。
之后将 L1 和 L2 和它们的导数画在图上
于是会发现,在梯度更新时,不管 L1 的大小是多少(只要不是0)梯度都是1或者-1,所以每次更新时,它都是稳步向0前进。
而看 L2 的话,就会发现它的梯度会越靠近0,就变得越小。
也就是说加了 L1 正则的话基本上经过一定步数后很可能变为0,而 L2 几乎不可能,因为在值小的时候其梯度也会变小。于是也就造成了 L1 输出稀疏的特性。