机器学习中的偏差、方差、过拟合

一、机器学习的偏差与方差的理解

1. 方差大:训练集的误差小,验证集误差大,对应模型过拟合

2. 偏差大:如果训练集和验证集的误差接近,且都偏大,说明模型效果差,欠拟合

3. 偏差小、方差小:训练集和验证集误差差不多,都比较小,说明模型效果好

 

偏差与方差对应的解决方法:

1. 高偏差(无法拟合训练数据):换一个更大的模型或网络,模型训练久一点

2. 高方差(过拟合):增大数据集,正则化

 

理解模型的偏差和方差,可以判断模型的表现,进而采取相应的措施,达到更好的效果。

 

二、过拟合与解决办法

 

1. 过拟合

过拟合的直观表现是算法在训练集上表现好,但在测试集上表现不好,泛化性能差。过拟合是在模型参数拟合过程中由于训练数据包含抽样误差,在训练时复杂的模型将抽样误差也进行了拟合导致的。所谓抽样误差,是指抽样得到的样本集和整体数据集之间的偏差。直观来看,引起过拟合的可能原因有:

(1)模型本身过于复杂,以至于拟合了训练样本集中的噪声。此时需要选用更简单的模型,或者对模型进行裁剪。

(2)训练样本太少或者缺乏代表性。此时需要增加样本数,或者增加样本的多样性。

(3)训练样本噪声的干扰,导致模型拟合了这些噪声,这时需要剔除噪声数据或者改用对噪声不敏感的模型。

 

2. 过拟合的解决方法

2.1 正则化

J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\widehat{y}^{i}, y^{i})+\frac{\lambda }{2m}\left \| w \right \|_{2}

这里要讲的是,为什么正则化可以防止过拟合。\lambda很大时,要使loss很小的话,w^{L}就要变小,那么网络输出y^{L}=w^{L}x^{L-1}+b^{L}就趋于线性,降低隐层的非线性程度,简化了,进而避免过拟合。

2.2 dropout

(1)dropout是使网络的神经元随机失活,实施:

设置一个d矩阵,元素为0和1,有keep-prop概率讲d设为1。如keep-prop=80%,则d矩阵,80%元素为1,20%元素为0,。然后每一层网络的激活函数输出乘上d矩阵,这样随机失活神经元。

(2)dropout的缺点:loss函数很难定义,不好计算。所以先把keep-prop设为1,关闭dropout确保loss函数单调递减,再把dropout打开。

(3)在测试阶段,如果使用dropout,测试结果会受到干扰,所以测试阶段不使用dropout.

2.3 其他方法

(1)增加数据样本,如数据增强

(2)提前停止训练,在中间停止迭代过程,缺点是,模型没有训练足够长时间。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章