在机器学习和深度学习中,正则化的最大作用就是防止过拟合,提高模型的泛化性能,具体的方式就是在原来的损失函数中加入惩罚因子。
具体的一些实现方式
L2 正则化就是在损失函数后面加上L2 正则化项:
λ 2 n ∑ i = 1 n w i 2 \frac{\lambda}{2n}\sum_{i=1}^nw^2_i 2nλi=1∑nwi2
L2的正则化公式:
L = L 0 + λ 2 n ∑ i = 1 n w i 2 L = L_0 + \frac{\lambda}{2n}\sum_{i=1}^nw^2_i L=L0+2nλi=1∑nwi2
其中 L 0 L_0 L0是原始损失函数, λ \lambda λ是正则项系数,其中加入 1 2 \frac 12 21是为了便于求导简化。
最终得到权值的更新公式:
w = ( 1 − η λ n ) w − η ∂ L 0 ∂ w w = (1 - \eta \frac\lambda n)w-\eta\frac{\partial L_0}{\partial w} w=(1−ηnλ)w−η∂w∂L0
其中 η , λ , n \eta,\lambda ,n η,λ,n分别为学习率,正则系数,样本大小,均为正数,所以 w w w的系数是恒小于1的,
可以看出,L2正则化就是用来惩罚特征权值 w w w的,也就是所谓的 权值衰减。
更小的 w w w 作用在原来的模型函数上,相当于降低了模型的复杂度,所以可以防止过拟合。
L1正则化公式:
L = L 0 + λ n ∑ i = 1 n ∣ w i ∣ L = L_0 + \frac{\lambda}{n}\sum_{i=1}^n \left|w_i \right| L=L0+nλi=1∑n∣wi∣
L1正则化的目的也是为了让权值趋于0,减少模型复杂度。
在实际应用中一般使用L2正则化,L1范式会产生稀疏解,具有一定特征选择能力,对求解高维特征空间比较有用
L1范式会产生稀疏解的理解:L1范式会产生稀疏解的理解
本质 就是约束权值,对每个神经元的权重绝对值给予限制。实际操作就是先正常更新,然后进行限制公式如下:
∣ ∣ w ‾ ∣ ∣ 2 < c \left|\left|\overline w\right|\right|_2
c一般取值为3或者4.这样即使学习率很大,也不会因为网络参数发生膨胀导致过拟合。