Datawhale_Task5 PyTorch实现L1,L2正则化以及Dropout
- 了解知道Dropout原理
- 用代码实现正则化(L1、L2、Dropout)
- Dropout的numpy实现
- PyTorch中实现dropout
- 参考资料:PyTorch 中文文档
1.Dropout原理
(1)Dropout
实际是在前向传播的时候,让某个神经元的激活值以一定的概率P停止工作,这样可以使模型泛化性更强,一定程度上起到正则化的作用,可以防止网络拟合。P一般取0.5。
对于某层的每个神经元,
在训练阶段,每个神经元以概率P,随机将该神经元权重置0;
在测试阶段,所有神经元均呈现激活状态,但所有权重要乘以(1-P);
以保证训练和测试阶段各自权重有相同的期望。
(2)Dropout为什么能防止过拟合?
- 具有取平均的作用
- 减少神经元之间复杂的共适关系
- Dropout类似于性别在生物进化中的角色:性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝
2.用代码实现正则化(L1、L2、Dropout)
正则化:在原来的loss function的基础上,加上了一些正则化项或者称为模型复杂度惩罚项
(1&