欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dropout

程序员文章站 2024-03-15 11:39:23
...

有效防止过拟合的方法:

  1. dropout
  2. L1,L2正则化
  3. earlystop 提早结束
  4. 使用BatchNormalization

一、dropout

1、定义
在每个训练批次中,随机丢弃一些神经元(注意是暂时丢弃),使其在前向传播的时候不起作用,在反向传播时不更新参数。再下一个训练批次中,恢复这些神经元,重复此过程。
2、使用位置
一般用在全连接层,卷积层是稀疏连接,一般参数比较少一些,但是也有人用在卷积层,一般取0.3~0.5
3、为什么可以防止过拟合
(1)减弱了神经元之间的依赖性
(2)相当于每次训练了一个新的模型,有bagging集成的思想,相当于将训练的几个模型取平均。

注意:
dropout会使模型的训练时间变长,因为相当于训练多个模型
详细解读

二、L1,L2正则

正则化在机器学习中用来减小模型复杂度,防止过拟合
最基本的正则化方式是在损失函数中加入惩罚项,对复杂度高的。模型进行惩罚。
(一)L1,L2解决过拟合的思路:
(1)实现参数的稀疏性(L1)
一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就很差。另一个好处是参数变少可以使整个模型获得更好的可解释性
(2)减少参数的大小(L2)
参数越小说明模型越简单。因为:越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大
dropout
(2)L1正则化
L1又叫稀疏算子,L1正则化是在损失函数后加上所有参数绝对值的和,之所以可以防止过拟合。模型复杂,参数过多,参数比较大,导致过拟合。
参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。loss比较低,就意味着模型比较简单。
(3)L2正则化
L2又叫权重衰减,L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。
(4) 区别
L1正则化是实现网络的稀疏,简化网络模型,提高可解释性,使参数绝对值之和最小。
L2 正则化是权重衰减,简化模型,防止过拟合,使参数平和和最小。
总结一下L1与L2范数:
L1范数:L1范数在正则化的过程中会趋向于产生少量的特征,而其他的特征都是0(L1会使得参数矩阵变得稀疏)。因此L1不仅可以起到正则化的作用,还可以起到特征选择的作用。
L2范数:L2范数是通过使权重衰减,进而使得特征对于总体的影响减小而起到防止过拟合的作用的。L2的优点在于(1)求解快速,下降比较快;(2)对大的异常值比较敏感,比较稳定
L2的优点在于(1)求解快速,下降比较快;(2)对大的异常值比较敏

三、earlystop

比如在keras中,通过监测val_loss不再下降,通过回调函数callback提前结束训练

keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')

参数
monitor:需要监视的量

patience:当early stop被**(如发现loss相比上一个epoch训练没有下降),则经过patience个epoch后停止训练。

verbose:信息展示模式

mode:‘auto’,‘min’,‘max’之一,在min模式下,如果检测值停止下降则中止训练。在max模式下,当检测值不再上升则停止训练。

相关标签: 深度学习