Deep Learning (8) - Error Analysis

Edit

这里我觉得应当翻作错误分析,而非误差分析。重点阐述两个问题:

  • 数据集本身有错误怎么办
  • 有些情况因为样本数据本身的局限,导致training set和dev/test set分布不同怎么办?是否出现data mismatch?如果出现了,怎么办?

错误分析方法

这里Andrew抛出一个方法论。就是在需要错误分析的时候,例如现在的模型结果不满意,或者你发现样本数据可能有问题,再或者后面提到的可能会有data mismatch的情况的时候,都可以采用下面提到的方法,来发掘问题或者错误可能存在的地方:

  • 取大约100个样本
  • 在这100个样本中,数出错误的样本数,并标记到表格里
  • 推断正确的样本也要查看,有可能存在样本标记错误,而模型缺陷导致其负负得正,从而恰好得出正确的结果。这样的样本也要挑出来。

样本错误怎么办?

In training set

通常如果只是随机错误,因为机器学习本身很善于消除随机错误带来的影响,所以不必特别的去处理这些随机的样本错误。如果是系统错误(systematic),例如将所有的白色小狗认作猫咪,那就需要去纠正了。通常这不太可能,如果发生了,而且数据量很大,只能说明我们使用了不可信的数据。

In dev/test set

dev/test set中如果发现了错误标记的数据,还是需要纠正出来的,因为dev/test set中的数据并不会用来迭代,而是用来判断模型之间的优劣。如果数据中有错误的存在,会影响评判,进而影响模型修改的方向。所以dev/test set中的数据错误是有害的,必要时还是需要纠正。判断是否有必要修正的方法仍然是采用前一节提到的错误分析方法,再加上一列Incorrectly labeled。如果此列数据显示因为错标数据导致的判断错误达到足够的百分比,我们就要花点时间来修正这些dev/test集中的样本数据了。
Some guide lines:

  • Apply same process to your dev and test sets to make sure they continue to come from the same distribution. 保证dev和test集样本分布相同,否则会出现矛盾的模型评估。
  • Consider examining examples your algorithm got right as well as ones it got wrong. 考虑负负得正的情况。
  • Train and dev/test data may now come from slightly different distribtuion. 因为训练集样本太多,而且对随机错误不敏感,所以通常不去调整训练集。如果调整了开发和测试集就可能引入data mismatch的情况。如果怀疑data mismatch发生了,就要用前面的方法来get some insight。

Build your first system quickly, then iterate.

训练集与开发/测试集分布不同

为什么会有这种情况

Andrew举了两个例子:cat detector和rear view mirror。很生动。摘取cat detector来作为笔记:

如何判断data mismatch

方法是从训练集中再分割出一个数据集叫:training-dev set (训练-开发集)

Human Level 4%
avoidable bias
Training set error 7%
variance
Training-dev set error 10%
data mismatch
Dev error 12%
degree of overfitting to dev set
Test error 12%

当dev error与training-dev error相差过大的时候,就可以认为发生了data mismatch问题。

Test error与dev error通常应该一致,如果相差过远,说明模型在开发集上也出现了overfitting。考虑要扩大开发集

出现data mismatch怎么办?

当发生data mismatch的时候:

  • Carry out manual error analysis to try to understand difference between training and dev/test sets
  • Make training data more similar; or collect more data similar to dev/test sets.

针对第二点,可以采用数据合成(data synthesis),也就是以前提到过的data augment。数据合成是有效的。但是要小心的是,数据合成通常只能模拟真实世界的很小一部分,你的模型是有可能对这很小一部分over tune。所以要注意运用variance tactics来定位和解决此时的overfitting。

%23%20Deep%20Learning%20%288%29%20-%20Error%20Analysis%0A@%28myblog%29%5Bmachine%20learning%2C%20deep%20learning%5D%0A%0A%u8FD9%u91CC%u6211%u89C9%u5F97%u5E94%u5F53%u7FFB%u4F5C%u9519%u8BEF%u5206%u6790%uFF0C%u800C%u975E%u8BEF%u5DEE%u5206%u6790%u3002%u91CD%u70B9%u9610%u8FF0%u4E24%u4E2A%u95EE%u9898%uFF1A%0A-%20%u6570%u636E%u96C6%u672C%u8EAB%u6709%u9519%u8BEF%u600E%u4E48%u529E%0A-%20%u6709%u4E9B%u60C5%u51B5%u56E0%u4E3A%u6837%u672C%u6570%u636E%u672C%u8EAB%u7684%u5C40%u9650%uFF0C%u5BFC%u81F4training%20set%u548Cdev/test%20set%u5206%u5E03%u4E0D%u540C%u600E%u4E48%u529E%uFF1F%u662F%u5426%u51FA%u73B0data%20mismatch%uFF1F%u5982%u679C%u51FA%u73B0%u4E86%uFF0C%u600E%u4E48%u529E%uFF1F%0A%0A%23%23%20%u9519%u8BEF%u5206%u6790%u65B9%u6CD5%0A%u8FD9%u91CCAndrew%u629B%u51FA%u4E00%u4E2A%u65B9%u6CD5%u8BBA%u3002%u5C31%u662F%u5728%u9700%u8981%u9519%u8BEF%u5206%u6790%u7684%u65F6%u5019%uFF0C%u4F8B%u5982%u73B0%u5728%u7684%u6A21%u578B%u7ED3%u679C%u4E0D%u6EE1%u610F%uFF0C%u6216%u8005%u4F60%u53D1%u73B0%u6837%u672C%u6570%u636E%u53EF%u80FD%u6709%u95EE%u9898%uFF0C%u518D%u6216%u8005%u540E%u9762%u63D0%u5230%u7684%u53EF%u80FD%u4F1A%u6709data%20mismatch%u7684%u60C5%u51B5%u7684%u65F6%u5019%uFF0C%u90FD%u53EF%u4EE5%u91C7%u7528%u4E0B%u9762%u63D0%u5230%u7684%u65B9%u6CD5%uFF0C%u6765%u53D1%u6398%u95EE%u9898%u6216%u8005%u9519%u8BEF%u53EF%u80FD%u5B58%u5728%u7684%u5730%u65B9%uFF1A%0A%21%5BAlt%20text%7C550x0%5D%28./1536007558086.png%29%0A-%20%u53D6%u5927%u7EA6100%u4E2A%u6837%u672C%0A-%20%u5728%u8FD9100%u4E2A%u6837%u672C%u4E2D%uFF0C%u6570%u51FA%u9519%u8BEF%u7684%u6837%u672C%u6570%uFF0C%u5E76%u6807%u8BB0%u5230%u8868%u683C%u91CC%0A-%20%u63A8%u65AD%u6B63%u786E%u7684%u6837%u672C%u4E5F%u8981%u67E5%u770B%uFF0C%u6709%u53EF%u80FD%u5B58%u5728%u6837%u672C%u6807%u8BB0%u9519%u8BEF%uFF0C%u800C%u6A21%u578B%u7F3A%u9677%u5BFC%u81F4%u5176%u8D1F%u8D1F%u5F97%u6B63%uFF0C%u4ECE%u800C%u6070%u597D%u5F97%u51FA%u6B63%u786E%u7684%u7ED3%u679C%u3002%u8FD9%u6837%u7684%u6837%u672C%u4E5F%u8981%u6311%u51FA%u6765%u3002%0A%0A%23%23%20%u6837%u672C%u9519%u8BEF%u600E%u4E48%u529E%uFF1F%0A%23%23%23%20In%20training%20set%0A%u901A%u5E38%u5982%u679C%u53EA%u662F%u968F%u673A%u9519%u8BEF%uFF0C%u56E0%u4E3A%u673A%u5668%u5B66%u4E60%u672C%u8EAB%u5F88%u5584%u4E8E%u6D88%u9664%u968F%u673A%u9519%u8BEF%u5E26%u6765%u7684%u5F71%u54CD%uFF0C%u6240%u4EE5%u4E0D%u5FC5%u7279%u522B%u7684%u53BB%u5904%u7406%u8FD9%u4E9B%u968F%u673A%u7684%u6837%u672C%u9519%u8BEF%u3002%u5982%u679C%u662F%u7CFB%u7EDF%u9519%u8BEF%28systematic%29%uFF0C%u4F8B%u5982%u5C06%u6240%u6709%u7684%u767D%u8272%u5C0F%u72D7%u8BA4%u4F5C%u732B%u54AA%uFF0C%u90A3%u5C31%u9700%u8981%u53BB%u7EA0%u6B63%u4E86%u3002%u901A%u5E38%u8FD9%u4E0D%u592A%u53EF%u80FD%uFF0C%u5982%u679C%u53D1%u751F%u4E86%uFF0C%u800C%u4E14%u6570%u636E%u91CF%u5F88%u5927%uFF0C%u53EA%u80FD%u8BF4%u660E%u6211%u4EEC%u4F7F%u7528%u4E86%u4E0D%u53EF%u4FE1%u7684%u6570%u636E%u3002%0A%0A%23%23%23%20In%20dev/test%20set%0Adev/test%20set%u4E2D%u5982%u679C%u53D1%u73B0%u4E86%u9519%u8BEF%u6807%u8BB0%u7684%u6570%u636E%uFF0C%u8FD8%u662F%u9700%u8981%u7EA0%u6B63%u51FA%u6765%u7684%uFF0C%u56E0%u4E3Adev/test%20set%u4E2D%u7684%u6570%u636E%u5E76%u4E0D%u4F1A%u7528%u6765%u8FED%u4EE3%uFF0C%u800C%u662F%u7528%u6765%u5224%u65AD%u6A21%u578B%u4E4B%u95F4%u7684%u4F18%u52A3%u3002%u5982%u679C%u6570%u636E%u4E2D%u6709%u9519%u8BEF%u7684%u5B58%u5728%uFF0C%u4F1A%u5F71%u54CD%u8BC4%u5224%uFF0C%u8FDB%u800C%u5F71%u54CD%u6A21%u578B%u4FEE%u6539%u7684%u65B9%u5411%u3002%u6240%u4EE5dev/test%20set%u4E2D%u7684%u6570%u636E%u9519%u8BEF%u662F%u6709%u5BB3%u7684%uFF0C%u5FC5%u8981%u65F6%u8FD8%u662F%u9700%u8981%u7EA0%u6B63%u3002%u5224%u65AD%u662F%u5426%u6709%u5FC5%u8981%u4FEE%u6B63%u7684%u65B9%u6CD5%u4ECD%u7136%u662F%u91C7%u7528%u524D%u4E00%u8282%u63D0%u5230%u7684%u9519%u8BEF%u5206%u6790%u65B9%u6CD5%uFF0C%u518D%u52A0%u4E0A%u4E00%u5217Incorrectly%20labeled%u3002%u5982%u679C%u6B64%u5217%u6570%u636E%u663E%u793A%u56E0%u4E3A%u9519%u6807%u6570%u636E%u5BFC%u81F4%u7684%u5224%u65AD%u9519%u8BEF%u8FBE%u5230%u8DB3%u591F%u7684%u767E%u5206%u6BD4%uFF0C%u6211%u4EEC%u5C31%u8981%u82B1%u70B9%u65F6%u95F4%u6765%u4FEE%u6B63%u8FD9%u4E9Bdev/test%u96C6%u4E2D%u7684%u6837%u672C%u6570%u636E%u4E86%u3002%0ASome%20guide%20lines%3A%0A-%20Apply%20same%20process%20to%20your%20dev%20and%20test%20sets%20to%20make%20sure%20they%20continue%20to%20come%20from%20the%20same%20distribution.%20%u4FDD%u8BC1dev%u548Ctest%u96C6%u6837%u672C%u5206%u5E03%u76F8%u540C%uFF0C%u5426%u5219%u4F1A%u51FA%u73B0%u77DB%u76FE%u7684%u6A21%u578B%u8BC4%u4F30%u3002%0A-%20Consider%20examining%20examples%20your%20algorithm%20got%20right%20as%20well%20as%20ones%20it%20got%20wrong.%20%u8003%u8651%u8D1F%u8D1F%u5F97%u6B63%u7684%u60C5%u51B5%u3002%0A-%20Train%20and%20dev/test%20data%20may%20now%20come%20from%20slightly%20different%20distribtuion.%20%u56E0%u4E3A%u8BAD%u7EC3%u96C6%u6837%u672C%u592A%u591A%uFF0C%u800C%u4E14%u5BF9%u968F%u673A%u9519%u8BEF%u4E0D%u654F%u611F%uFF0C%u6240%u4EE5%u901A%u5E38%u4E0D%u53BB%u8C03%u6574%u8BAD%u7EC3%u96C6%u3002%u5982%u679C%u8C03%u6574%u4E86%u5F00%u53D1%u548C%u6D4B%u8BD5%u96C6%u5C31%u53EF%u80FD%u5F15%u5165data%20mismatch%u7684%u60C5%u51B5%u3002%u5982%u679C%u6000%u7591data%20mismatch%u53D1%u751F%u4E86%uFF0C%u5C31%u8981%u7528%u524D%u9762%u7684%u65B9%u6CD5%u6765get%20some%20insight%u3002%0A%0A%3E%20**Build%20your%20first%20system%20quickly%2C%20then%20iterate.**%0A%0A%23%23%20%u8BAD%u7EC3%u96C6%u4E0E%u5F00%u53D1/%u6D4B%u8BD5%u96C6%u5206%u5E03%u4E0D%u540C%0A%23%23%23%20%u4E3A%u4EC0%u4E48%u4F1A%u6709%u8FD9%u79CD%u60C5%u51B5%0AAndrew%u4E3E%u4E86%u4E24%u4E2A%u4F8B%u5B50%uFF1Acat%20detector%u548Crear%20view%20mirror%u3002%u5F88%u751F%u52A8%u3002%u6458%u53D6cat%20detector%u6765%u4F5C%u4E3A%u7B14%u8BB0%uFF1A%0A%21%5BAlt%20text%5D%28./1536010240549.png%29%0A%u6211%u4EEC%u8BAD%u7EC3%u7684%u65F6%u5019%u7528%u7684%u662F%u5DE6%u8FB9%u7684%u6570%u636E%u96C6%uFF0C%u6765%u81EA%u4E8E%u7F51%u7EDC%uFF0C%u6E05%u6670%u5EA6%u5F88%u9AD8%uFF0C%u732B%u54AA%u5F62%u6001%u4E5F%u5F88%u5B8C%u6574%u3002%u800Capp%u4E0A%u7EBF%u540E%uFF0C%u9700%u8981%u9884%u6D4B%u7684%u662F%u53F3%u8FB9%u7684%u6570%u636E%uFF0C%u6A21%u7CCA%u4E0D%u6E05%uFF0C%u732B%u54AA%u8868%u60C5%u5404%u5F02%uFF0C%u6548%u679C%u5F88%u5DEE%u3002%u5DE6%u8FB9%u7684%u6570%u636E%u96C6%u6570%u636E%u53EF%u89C2%uFF0C%u6709200%2C000%uFF0C%u53F3%u8FB9%u6570%u636E%u6709%u9650%uFF0C%u53EA%u670910%2C000%u3002%u90A3%u73B0%u5728%u8BE5%u600E%u4E48%u529E%uFF1F%0A%u6309%u7167%u4E4B%u524D%u7406%u60F3%u7684%u72B6%u51B5%uFF0C%u6211%u4EEC%u5E94%u8BE5%u628A%u8FD910k%u7684%u7528%u6237%u6570%u636E%u548C20k%u7684%u8BAD%u7EC3%u6837%u672C%u6570%u636E%u6DF7%u7F16%uFF0C%u518D%u968F%u673A%u5207%u5272%u6210%u8BAD%u7EC3%uFF0C%u5F00%u53D1/%u6D4B%u8BD5%u96C6%u3002%u5982%u4E0B%uFF1A%0A%21%5BAlt%20text%7C550x0%5D%28./1536010459428.png%29%0A%u8FD9%u6837%u663E%u7136%u4E0D%u5408%u9002%uFF0C%u56E0%u4E3A%u5F00%u53D1/%u6D4B%u8BD5%u96C6%u9700%u8981%u53CD%u6620%u6211%u4EEC%u7684%u771F%u5B9E%u9700%u6C42%u3002%u6211%u4EEC%u771F%u6B63%u5728%u4E4E%u7684%u662F%u90A3%u4E9B%u6A21%u7CCA%u7684%uFF0C%u8868%u60C5%u5404%u5F02%u7684%u7528%u6237%u732B%u54AA%u56FE%u7247%uFF0C%u800C%u6309%u8FD9%u79CD%u89C4%u5219%u5207%u5272%u51FA%u6765%u7684%u5F00%u53D1/%u6D4B%u8BD5%u96C6%u4E2D%u53EA%u67095%25%u4E0D%u5230%u7684%u6211%u4EEC%u5728%u4E4E%u7684%u6570%u636E%u3002%u663E%u7136%u8FD9%u4E2A%u9879%u76EE%u7684%u76EE%u6807%u8BBE%u504F%u4E86%u3002%0A%u6BD4%u8F83%u597D%u7684%u505A%u6CD5%u662F%uFF0C%u5C06%u7528%u6237%u4E0A%u4F20%u6570%u636E%u4E00%u5206%u4E3A%u4E8C%uFF0C%u5F00%u53D1/%u6D4B%u8BD5%u96C6%u5168%u90E8%u91C7%u7528%u4E00%u534A%uFF0C%u53E6%u4E00%u534A%u5F52%u5165%u8BAD%u7EC3%u96C6%u505A%u8BAD%u7EC3%u3002%u5982%u4E0B%uFF1A%0A%21%5BAlt%20text%7C550x0%5D%28./1536010736876.png%29%0A%u8FD9%u6837%u505A%u7684%u597D%u5904%u662F%uFF0C%u76EE%u6807%u51C6%u786E%uFF0C%u574F%u5904%u662F%u53EF%u80FD%u5F15%u5165data%20mismatch%u95EE%u9898%u3002%0A%0A%23%23%23%20%u5982%u4F55%u5224%u65ADdata%20mismatch%0A%u65B9%u6CD5%u662F%u4ECE%u8BAD%u7EC3%u96C6%u4E2D%u518D%u5206%u5272%u51FA%u4E00%u4E2A%u6570%u636E%u96C6%u53EB%uFF1Atraining-dev%20set%20%28%u8BAD%u7EC3-%u5F00%u53D1%u96C6%29%0A%7C%20Human%20Level%20%20%20%20%20%20%20%20%20%20%20%7C%204%25%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%3A--------------------%20%7C%20%3A-%3A%20%7C%20%3A-------------------------------%20%7C%0A%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%20%20%20%20%7C%20avoidable%20bias%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20Training%20set%20error%20%20%20%20%7C%207%25%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%20%20%20%20%7C%20variance%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20Training-dev%20set%20error%7C%2010%25%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%20%20%20%20%7C%20**data%20mismatch**%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20Dev%20error%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%2012%25%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%20%20%20%20%7C%20degree%20of%20overfitting%20to%20dev%20set%20%7C%0A%7C%20Test%20error%20%20%20%20%20%20%20%20%20%20%20%20%7C%2012%25%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%u5F53dev%20error%u4E0Etraining-dev%20error%u76F8%u5DEE%u8FC7%u5927%u7684%u65F6%u5019%uFF0C%u5C31%u53EF%u4EE5%u8BA4%u4E3A%u53D1%u751F%u4E86data%20mismatch%u95EE%u9898%u3002%0A%3E*Test%20error%u4E0Edev%20error%u901A%u5E38%u5E94%u8BE5%u4E00%u81F4%uFF0C%u5982%u679C%u76F8%u5DEE%u8FC7%u8FDC%uFF0C%u8BF4%u660E%u6A21%u578B%u5728%u5F00%u53D1%u96C6%u4E0A%u4E5F%u51FA%u73B0%u4E86overfitting%u3002%u8003%u8651%u8981%u6269%u5927%u5F00%u53D1%u96C6*%0A%0A%23%23%23%20%u51FA%u73B0data%20mismatch%u600E%u4E48%u529E%uFF1F%0A%0A%u5F53%u53D1%u751Fdata%20mismatch%u7684%u65F6%u5019%uFF1A%0A-%20Carry%20out%20manual%20error%20analysis%20to%20try%20to%20understand%20difference%20between%20training%20and%20dev/test%20sets%0A-%20Make%20training%20data%20more%20similar%3B%20or%20collect%20more%20data%20similar%20to%20dev/test%20sets.%0A%0A%u9488%u5BF9%u7B2C%u4E8C%u70B9%uFF0C%u53EF%u4EE5%u91C7%u7528%u6570%u636E%u5408%u6210%28data%20synthesis%29%uFF0C%u4E5F%u5C31%u662F%u4EE5%u524D%u63D0%u5230%u8FC7%u7684data%20augment%u3002%u6570%u636E%u5408%u6210%u662F%u6709%u6548%u7684%u3002%u4F46%u662F%u8981%u5C0F%u5FC3%u7684%u662F%uFF0C%u6570%u636E%u5408%u6210%u901A%u5E38%u53EA%u80FD%u6A21%u62DF%u771F%u5B9E%u4E16%u754C%u7684%u5F88%u5C0F%u4E00%u90E8%u5206%uFF0C%u4F60%u7684%u6A21%u578B%u662F%u6709%u53EF%u80FD%u5BF9%u8FD9%u5F88%u5C0F%u4E00%u90E8%u5206over%20tune%u3002%u6240%u4EE5%u8981%u6CE8%u610F%u8FD0%u7528variance%20tactics%u6765%u5B9A%u4F4D%u548C%u89E3%u51B3%u6B64%u65F6%u7684overfitting%u3002%0A