深度学习-正则化
文章目录
- 为什么需要正则化
- 过拟合与欠拟合对比表
- 正则化---为了防止过拟合
- 逻辑回归的L1与L2正则化
- 梯度下降
为什么需要正则化
这里引入一些概念
- 偏差:预测与实际值差的大,训练集,测试集都不准。
- 方差:受数据的扰动大,训练集数据差别大(方差大),导致相同模型,不同训练集,预测的结果不同。(训练集准,测试集不准)
- 过拟合:训练参数过多,而训练样本过少导致学习了无用特征,使预测集准确率低。
- 欠拟合:训练集,测试集准确率都低。(偏差大)
过拟合与欠拟合对比表
特性 | 过拟合 (Overfitting) | 欠拟合 (Underfitting) |
---|---|---|
定义 | 模型在训练集上表现很好,但在测试集上表现差 | 模型在训练集和测试集上表现都差 |
训练误差 | 低 | 高 |
测试误差 | 高 | 高 |
模型复杂度 | 通常过于复杂(模型参数过多) | 通常过于简单(模型参数过少) |
学习能力 | 学习能力过强,甚至记住了噪声 | 学习能力不足,无法捕捉数据中的基本模式 |
数据量 | 通常发生在数据量较少时 | 可能发生在数据量不足或模型太简单时 |
偏差-方差分解 | 高方差 | 高偏差 |
解决方案 | 1. 增加数据量 2. 正则化(L1/L2) 3. 减少模型复杂度 4. Dropout 5. 早停(Early Stopping) | 1. 增加模型复杂度 2. 增加特征数量 3. 减少正则化 4. 延长训练时间 5. 使用更复杂的模型 |
典型表现图 | 训练误差曲线远低于测试误差曲线 | 训练误差和测试误差都较高且接近 |
决策边界 | 非常复杂,可能包含许多不必要的细节 | 过于简单,无法捕捉数据中的结构 |
正则化—为了防止过拟合
逻辑回归的L1与L2正则化
逻辑回归的参数W数量根据特征的数量而定(一个神经元*特征数),那么正则化如下
L2正则化 w2w^2w2
逻辑回归的损失函数中增加L2正则化
J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥2J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|^{2}J(w,b)=m1∑i=1mL(y^(i),y(i))+2mλ∥w∥2
其中的L2范数可以理解:λ2m∥w∥22=λ2m∑j=1nxjwj2=λ2mwTw\frac{\lambda}{2 m}\|w\|_{2}^{2}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{w_{j}^{2}} =\frac{\lambda}{2 m} w^{T} w2mλ∥w∥22=2mλ∑j=1nwj2xj=2mλwTw
解释:所有w参数的平方和的结果
- 1m∑i=1mL(y^(i),y(i))\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)m1∑i=1mL(y^(i),y(i))是当前批次,所有样本损失率的平均值
- L2范数=λ2m∥w∥2\frac{\lambda}{2 m}\|w\|^{2}2mλ∥w∥2=λ2mwTw\frac{\lambda}{2 m} w^{T} w2mλwTw,www是权重矩阵(由神经元与特征数目决定)
- λ\lambdaλ是超参数
L1正则化 www
逻辑回归的损失函数中增加L1正则化
J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥1J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|_{1}J(w,b)=m1∑i=1mL(y^(i),y(i))+2mλ∥w∥1
其中L2范数可以理解为:λ2m∥w∥1=λ2m∑j=1nxj∣wj∣\frac{\lambda}{2 m}\|w\|_{1}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{\left|w_{j}\right|}2mλ∥w∥1=2mλ∑j=1n∣wj∣xj
梯度下降
•接下来我们通过方向传播来理解这个其中的L2,对于损失函数我们要反向传播求参数梯度:
(1) dW=∂L∂w+λmWdW=\frac{\partial L}{\partial w}+\frac{\lambda}{m} WdW=∂w∂L+mλW
前面的默认损失函数的梯度计算结果默认为backprop,那么更新的参数就为
(2) W:=W−αdWW:=W-\alpha dWW:=W−αdW 那么我们将第一个公式带入第二个得到
W:=W−α(∂L∂w+λmW)W:=W-\alpha(\frac{\partial L}{\partial w}+\frac{\lambda}{m} W) W:=W−α(∂w∂L+mλW)
=W−αλmW−α∗∂L∂w=W-\frac{\alpha \lambda}{m} W-\alpha * \frac{\partial L}{\partial w} =W−mαλW−α∗∂w∂L
所以每次更新的时候都会让W(1−αλm)W(1-\frac{\alpha \lambda}{m})W(1−mαλ),使权重www随迭代次数逐渐减小,所以我们通常称L2范数为权重衰减。
- 正则化如何防止过拟合的
红线:合适的拟合。
绿线:过拟合
蓝线:欠拟合
如上图所示,我们发现,当模型发生过拟合时,模型相对于其他模型,曲线函数更加的弯曲,这说明在局部弯曲的部分,切线斜率特别大,(即模型导数的绝对值特别大,这是由于www从一个较大的值变化到另一个大的值,是www的系数过大导致的),对于整个模型来说,我们可以理解为所有的参数的绝对值之和特别大。因此,如果我们有办法使得这些参数的值,比较稠密均匀地集中在零附近,就能有效地抑制过拟合。于是,便引入了范数。从而使www的系数减小,从而减小拟合的波动,防止过拟合的发生。
参考:正则化如何防止过拟合的
注:其中,入为正则化因子,是超参数。由于L1正则化最后得到 w向量中将存在大量的 0,使模型变得稀疏化,因此 L2 正则化更加常用。