(五)Pytorch实现L1,L2正则化以及Dropout
1.了解知道Dropout原理
dropout,随机失活,是一种对深度神经网络的优化方法,可以防止过拟合、提升效率和在测试集上的效果。
- 动机:引用自百度百科
随机失活是为解决深度神经网络的过拟合(overfitting)和梯度消失(gradient vanishing)问题而被提出的优化方法,其一般设想是在神经网络的学习过程中,随机将部分隐含层节点的权重归零,由于每次迭代受归零影响的节点不同,因此各节点的“重要性”会被平衡 [3-4] 。引入随机失活后,神经网络的每个节点都会贡献内容,不会出现少数高权重节点完全控制输出结果的情况,因此降低了网络的结构风险 [1] 。
- 做法:参考博客
Dropout的具体实现中,要求某个神经元节点激活值以一定的概率p被“丢弃”,即该神经元暂时停止工作。对于任意神经元,每次训练中都与一组随机挑选的不同的神经元集合共同进行优化,这个过程会减弱全体神经元之间的联合适应性,减少过拟合的风险,增加泛化能力。
2.用代码实现正则化(L1、L2、Dropout)
- L2正则化是在原来的损失函数上加上模型权重参数的平方和。
- L1正则化则是在原来的损失函数上加上权重参数的绝对值之和。