面试机器学习或者深度学习的岗位有很大几率会问到这个问题,现在来总结一下如何避免过拟合问题:
1、L1&L2 regularization
1.1 L1 regularization
正则化项:
原始函数加上一个正则化项:
计算导数:
更新权重w:
对L1正则化的直观理解是当w为正时,更新后的w变小;当w为负时,更新后的w变大,使得w能够接近0,相当于对w惩罚,降低w对结果的影响。当w=0的时候,规定sgn(0)=0。
1.2 L2 regularization
正则化项:
原函数加上正则化项:
计算导数:
更新权重w:
非常直观,由于η、λ、n均大于等于0,L2正则化就是减小权重w,使得系统的复杂程度降低,来防止过拟合的。
L1与L2正则化都是以衰减权重w,以降低网络复杂程度,使得网络的拟合能力下降,达到防止过拟合。
1.3 L1与L2区别
L1优点是能够获得稀疏模型,对于large-scale的问题来说这一点很重要,因为可以减少存储空间。
L2优点是实现简单,能够起到正则化的作用。缺点是无法获得稀疏模型。
2、Data Augmentation
这是解决过拟合最根本也是最有效的方法。
实现手段:
1、从数据源头获得更多数据。
2、使用镜像、平移、添加噪声、变换尺度、裁剪、调整曝光度、调整饱和度等手段对图像数据进行修改扩充
3、Dropout
Dropout的原理很简单,就是随机删除网络内部隐藏单元。例如设定每个隐藏单元有50%的几率被删除,最后得到的网络将会因为隐藏单元的减少而大大简化。防止过拟合不就是要简化模型,弱化模型的表达能力么?
4、Early Stoping
这个更好理解了。提前终止就是在模型发生过拟合之前停止训练。通常训练的误差会随着训练的轮次增加先减少再增加,训练时间过长会将一些本不应该学习到的东西也学习进去。
5、选择合适的模型
过拟合本质就是数据太少,而模型的表达能力太强,也就是模型太复杂。合理选择模型有助于减少过拟合。