L1与L2 regularization

好吧,这个其实是由某个题目引发的血案,也反映了自己基础的一些问题,看了好多讲解这两个对比的都是总结性的东西,解释不清楚“为什么”或者干脆就不解释了。有些人就是喜欢刷存在感,不懂也要瞎扯几句对解答没贡献的废话

L1有不少名字,又叫Manhattan Distance或者LASSO(Least absolute shrinkage and selection operator)

L_1=\sum_{i=0} |w_i|


L2又叫Euclidean Distance或者Ridge regularizer

L_2=\sum_{i=0} w_i^2


它们两个的特点就是L1常常被用来获取sparse模型,L2则使的参数选择的更平均些,但不能产生sparse的模型

原因是为什么呢?看梯度更新公式就一目了然了,假设原 C_0 是原来的cost function,那么加入L1的regular term后的cost function为

C=C_0+\frac{\lambda}{n}\sum_{i=0} |w_i|


C^'= \frac {\partial {C_0}}{\partial w}+sign(w)


w \rightarrow w^' = w - \alpha C^'


w^' = w -\alpha(\frac {\partial {C_0}}{\partial w}+sign(w))


w \ge 0 时,有 sign(w) \ge 0 ,所以 w 每次都会减去一个大于等于0的数,趋向0
w \lt 0 时,有 sign(w) \lt 0 ,所有每次都会减去一个小于0的数,趋向0
最后都是使得 w 趋向0,使得模型sparse
加入L2 regular term后的cost function为

C=C_0+\frac{\lambda}{2n}\sum_{i=0} w_i^2


C^'=\frac{\partial {C_0}}{\partial w}+\frac{\lambda}{n}w


w \rightarrow w^' = w - \alpha C^'


w^' = w -\alpha(\frac{\partial {C_0}}{\partial w}+\frac{\lambda}{n}w)


w^' = (1-\frac{\alpha \lambda}{n})w - \frac{\alpha \partial {C_0}}{\partial w}


忽略后面那项目,可以看到 w^' 是不断惩罚过大的 w 来达到了减小 w ,将模型复杂度降低,达到避免overfitting的目的,所以L2在对过大的参数 w 进行regularize的时候能做的更好
另外多说一句,L1和L2的先验假设也是不一样的,前者服从拉普拉斯分布,后者服从高斯分布
references:
[1]正则化方法:L1和L2 regularization、数据集扩增、dropout
[2]为什么L1稀疏,L2平滑?