一、判断偏差和方差
以多项式回归为例,红点为训练集数据,绿点为交叉验证数据。
下图的模型,训练集误差大,交叉验证集误差大,这代表偏差很大
下图的模型,训练集误差小,交叉验证集误差小,这代表模型合适
下图的模型,训练集误差小,交叉验证集误差大,这代表方差很大。
下图是随着多项式的次数增加,训练集误差和交叉验证集误差的走势。如果没有正则项,随着多项式的次数增加,训练集误差变小,交叉验证集误差先降低后升高。
二、正则项的偏差和方差
在已经选择了多项式次数的前提下,正则化参数的选择对训练集和交叉验证集误差的影响如下:
如果正则化参数很大,训练集误差很大,偏差很大
如果正则化参数合适,训练集和交叉验证集误差会很小
如果正则化参数很小,相当于没有使用正则化,容易过拟合,,训练集误差小,交叉验证集误差大,方差会很大
三、建立性能基准
以语音识别为例,如果使用模型进行语音转文字,错误率有10.7%。单看这个数字,似乎错误率很高。但是如果很多语音有嘈音,导致人类也无法听清这些语音的文字,人类进行语音转文字时的错误率有10.3%。以人类水平作为基准,10.7%的错误率并不高,这个模型很合适。
建立性能基准的方法:
- 根据人类能做到的水平
- 根据竞争算法能做到的水平
- 根据以往经验推测
四、学习曲线
学习曲线:随着训练集规模的增大,训练集和交叉验证集的误差曲线
学习曲线的趋势:随着训练集规模越来越大,训练集误差增加,交叉验证集误差减小
例子:给定一个二次回归模型,当有一个、两个、三个数据点,训练集误差为0或者非常非常小,但是当数据点增加,模型很难匹配上所有的训练集数据点,因此训练集误差增加。
4.1 高偏差场景
在高偏差的情况下,随着训练集规模提高,训练集误差增加,交叉验证集误差减小,越到后面,训练集误差和交叉验证集误差曲线趋于平缓。即使继续增加训练集数据,训练集误差和交叉验证集误差变化不大,且高于性能基准线。
以线性回归模型为例,不管训练集数据点有多少,线性回归模型都无法匹配上训练集,因此继续增加训练集数据点,也无法减小交叉验证集误差。
4.2 高方差场景
在高方差的情况下,随着训练集规模提高,训练集误差增加,交叉验证集误差减小,如果继续增加训练集数据,交叉验证集误差继续减小,可以到达性能基准线。
以四次多项式回归模型为例,当训练集的数据点少时,容易发生过拟合,当增加训练集数据点,可以减少过拟合。
五、解决高偏差和高方差问题
以下手段,分别可以解决高偏差和高方差问题
- 获取更多的训练数据——解决高方差问题
- 尝试减少特征——解决高方差问题
- 尝试其他的特征——解决高偏差问题
- 尝试增加多项式——解决高偏差问题
- 尝试减小正则化参数——解决高偏差问题
- 尝试增大正则化参数——解决高方差问题
六、神经网络的偏差和方差
在神经网络中,如何处理高偏差和高方差问题:
1、当训练集误差大,说明偏差大,需要建立更庞大的神经网络(建立更多的隐藏层、神经元),来减小偏差
2、当训练到训练集误差小,但交叉验证集误差大,说明方差大,需要获取更多的数据,然后重新训练模型,直至满足偏差和方差很小。
建立庞大的神经网络消耗性能,需要更强的计算机能力。
与此同时,庞大的神经网络需要引入正则项,避免过拟合。
TensorFlow的代码实现:
蓝框中的0.01指的是值
学习来源:吴恩达机器学习,12.1-12.6节