1. 正则化与偏差-方差分解
-
Regularization:减小方差的策略(防止过拟合)
-
误差可分解为:偏差,方差与噪声之和。即误差 = 偏差 + 方差 + 噪声
-
偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
-
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响(验证集与训练集之间的差异)
-
噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界
- Regularization
- L1正则项: ∑ i N ∣ w i ∣ \sum^{N}_{i} |w_i| ∑iN∣wi∣
- L2正则项: ∑ i N w i 2 \sum^{N}_{i} w_i^2 ∑iNwi2
2. pytorch中的L2正则项——weight decay
- L2 Regularization = weight decay(权值衰减)
加入L2正则项之后,相当于 w i w_i wi与一个大于0小于1的数相乘,相当于权值衰减
3. Dropout
- Dropout:随机失活
- 随机:dropout probability
- 失活:weight = 0
让神经元有一定的概率失去活性,具有了鲁棒的特性,减轻过度的依赖,缓解过拟合。
需要注意的地方:
-
数据尺度变化:测试时,所有权重乘以1-drop_prob(因为在训练过程中通过dropout随机舍弃了部分数据,为了保证测试时尺度相同,因此在测试时所有的权重乘以一个系数)
-
nn.Dropout
- 功能:Dropout层
- 参数:P:被舍弃概率,失活概率,默认为0.5
- 实现细节:训练时权重除以1-p