在11.2中,我们提到了一种数据划分的方法,那么怎么衡量这种数据划分方法中的误差呢?
来看一个例子:有20w条各种领域的语音识别数据,2w条汽车语音定位数据
train+dev+test,其中train是20w原始数据+1w汽车数据,dev和test各自都是5k条汽车数据
显然地,train和dev/test此时是不同分布的,如果出现以下情况
基准情况:
train error:1%
dev error:10%
我们不知道如何评估这种误差,因为train和dev是不同分布的,存在可能模型本来很好但是由于汽车数据的噪音等等所以错误上升了。但是也有可能模型本来就不好,所以很难判断真实问题是什么。
情况一:
所以引入train-dev集合,请看下面的划分:
train的20w原始数据+1w汽车数据打乱并random shuffle到train/train-dev中,比如此时train有20w打乱后的数据,train-dev有1w打乱后的数据,dev和test不变,请看以下情况:
train error:1%
train-dev:9%
dev error:10%
此时,train和train-dev是同分布的,所以可以看出这两者的方差variance较大,即使在train集上表现较好,依然无法将其泛化到同分布的train-dev集上,所以我们可以使用改进variance的方法对模型进行改进。
情况二:
train error:1%
train-dev:1.5%
dev error:10%
此时,可以看到variance的问题已经不存在了,但此时将其放入不同分布的dev集合上误差变大,所以我们说这就是数据不匹配的问题
情况三:
train error:10%
train-dev:11%
dev error:12%
注意:此时以human performance为代表的bayes optimal error为0
所以此时出现了可避免误差bias的情况,因为在train集上,误差相较于最优误差有很大差距。
情况四:
train error:10%
train-dev:11%
dev error:20%
注意:此时以human performance为代表的bayes optimal error为0
所以此时出现了两种问题:一.可避免误差bias高;二.数据不匹配
结论:
human performance(bayes error):a%
train error:b%
train-dev:c%
dev error:d%
test error:e%
1.通过衡量a与b的差距,可以看出偏差bias的高低
2.通过衡量b与c的差距,可以看出方差variance的高低
3.通过衡量c与d的差距,可以看出是否存在数据不匹配的问题
4.通过衡量d与e的差距,可以看出模型是否在dev上存在过拟合的问题,如果存在可能需要更大更全面的dev set
最后全新的问题出现了,数据不匹配怎么办?
不幸的是目前为止没有系统性的方案解决这一问题,但是我们仍旧有一些方式可以对这一问题有所帮助,请看11.4 定位数据不匹配