神经网络笔记 | 6 – 机器学习诊断

当一个模型没有很理想地跑的时候,大体有以下方法

但是选择这些优化方法需要有一定的理论支撑,以下来介绍所有优化模型的选择理论。

评估假设

如何评估过拟合?之前我们说过对于特征少的,画图就完事了

但是如果是很难处理的情况的话(特征非常多,维度非常深),我们可以把我们的训练样本进行区分,即一部分拿来训练,一部分拿来检测。

值得注意的是,测试集和选择集应该是被随机划分的,否则就会缺乏特征性。

在我们使用训练集得到参数θ之后,我们应该代入训练集计算产生的误差,用代价函数来衡量误差。这里以逻辑回归为例

模型选择

对于一个既定的问题,我们可以采用不同的计算模型来解决,比如我们或许可能选出以下10个模型

这些模型可能对训练数据集都表现出较好的拟合性,但是如果给予一个新的实际数据集,不同的训练模型表现出来的泛化能力(Generalize)可能就不大一样。一般来说,在训练中表现的好的,并且能够拟合实际数据的,才是我们需要的模型。

对此,我们需要一个一个地计算不同模型的对于新样本拟合度

值得注意的是,我们可能使用测试集来选出契合的最好的模型,但是最后我们仍然用测试集来测试该模型的误差评价该模型的好坏吗?业界一般不认可这样的情况,这样有一种“用了测试集确定了阶数,如果又用测试集评价模型,就有点像即参加比赛又当裁判的感觉”,因此我们可能要再选出一批数据进行假设评估。

一般的解决办法,是再把训练数据划分出一个“交叉验证集”(Cross Validation Set,CV),一般的比例是:6:2:2

然后,我们使用“交叉验证集”来确定参数的阶数,最后用训练数据集来评估假设。

偏差与方差

一般来说,模型拟合得不要,要么是偏差过大,要么是方差过大(即过拟合与欠拟合)

下图展示了训练误差与交叉测试误差随着训练模型阶数变化的趋势,其实就是为了展示以下原理:一般来说阶数越大的模型越复杂,拟合训练模型也容易越好,但是过拟合风险越高。而阶数越小模型越简单,训练误差则越大。注意下图的红线,红线表示了两者的交叉验证误差的误差值变化的情况,而最低点就是我们的理想选择位点。

合适的正则化

之前也提到过,我们用正则化来处理过拟合的情况,但是正则化的参数也需要设定非常合适,才能使正则化的效用恰到好处

其实操作步骤也差不多,选择一系列参数λ,然后通过交叉测试训练集来测试它们,选择一个最好的参数。值得一提的是,这个和上一步的原理是一样的,但是调参就是需要这样一步步慢慢来,先确定阶数,再确定lambda,然后确定那个“just right”的点就行

学习曲线

学习曲线对于优化算法很有用,实际上它是一条训练样本数量关于误差的曲线。值得注意的是,这里的Jtrain(θ)是和m相关联的,使用3个训练样本训练出来的模型,就令m为3

接下来,分别展示高偏差与高方差学习曲线的变化情况,首先是高偏差(欠拟合)的情况

交叉训练误差会逐渐变小,但是会逐渐停留在某个较大的值不再变化。

而训练误差会逐渐增大(毕竟是没法拟合好),最后会和交叉训练误差差不多大

而高方差的情况大概是下图所述的

最显著的就是两个误差之间的gap,因为比较容易理解,这里就不再解释了。

总的来说,神经网络的诊断总结如下:

发表评论