dropout
有效防止过拟合的方法:
- dropout
- L1,L2正则化
- earlystop 提早结束
- 使用BatchNormalization
一、dropout
1、定义
在每个训练批次中,随机丢弃一些神经元(注意是暂时丢弃),使其在前向传播的时候不起作用,在反向传播时不更新参数。再下一个训练批次中,恢复这些神经元,重复此过程。
2、使用位置
一般用在全连接层,卷积层是稀疏连接,一般参数比较少一些,但是也有人用在卷积层,一般取0.3~0.5
3、为什么可以防止过拟合
(1)减弱了神经元之间的依赖性
(2)相当于每次训练了一个新的模型,有bagging集成的思想,相当于将训练的几个模型取平均。
注意:
dropout会使模型的训练时间变长,因为相当于训练多个模型
详细解读
二、L1,L2正则
正则化在机器学习中用来减小模型复杂度,防止过拟合
最基本的正则化方式是在损失函数中加入惩罚项,对复杂度高的。模型进行惩罚。
(一)L1,L2解决过拟合的思路:
(1)实现参数的稀疏性(L1)
一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就很差。另一个好处是参数变少可以使整个模型获得更好的可解释性。
(2)减少参数的大小(L2)
参数越小说明模型越简单。因为:越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大
(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模式下,当检测值不再上升则停止训练。
上一篇: Faster R-CNN文章详细解读
下一篇: Dropout原理解析