写在前面:
L1、L2都是对损失函数的优化,L范式都是为了防止模型过拟合,所谓范式就是加入参数的约束。
- L1的作用是为了矩阵稀疏化。假设的是模型的参数取值满足拉普拉斯分布。
- L2的作用是为了使模型更平滑,得到更好的泛化能力。假设的是参数是满足高斯分布。
L1、L2是怎么正则的:
- L1正则即将参数的绝对值之和加入到损失函数中
- L2正则即将参数的平方之和加入到损失函数中
假设只有一个参数为w,损失函数为L(w),分别加上L1正则项和L2正则项后有:
数学求导分析:
假设L(w)在0处的倒数为d0,即 { ∂L(w)/∂w∣(w=0) } = d0
下面分别推导使用L1正则和L2正则时的导数:
- 若L2正则项,在0处的导数为:
- 若L1正则项,在0处的导数为:
引入L2正则时,代价函数在0处的导数仍是d0,无变化。而引入L1正则后,代价函数在0处的导数有一个突变。从d0+λ到d0−λ,若d0+λ和d0−λ异号,则在0处会是一个极小值点。因此,优化时,很可能优化到该极小值点上,即w=0处。通常越大的λ 可以让代价函数在参数为0时取到最小值。
下面是一张经典的L2和L1的解空间:
L2正则化相当于为参数定义了一个圆形的解空间,而L1正则化相当于为参数定义了一个菱形的解空间。L1“棱角分明”的解空间显然更容易与目标函数等高线在角点碰撞。从而产生稀疏解。