《Machine Learning Yearning》

《》
建立控制在一周以内
数据集
1、传统机器学习中一般采用train/test set按照70%/30%划分 , 但是在大规模数据集的深度学习中 , 不需要按照这个比例 , test比例可以更低一些 。
2、确保train和test数据集是属于同分布的 , 如果实在找不到与test数据集相同分布的train set , 可以采用分布不同的train , 但是这很有可能导致在test上泛化不好 , 通常的做法可以是把test中一部分拿出来 , 在train set训练后做fine tune 。
3、一般1000到10000 用来做dev set (val set)比较常见 , 对于100到10000 的数据集 , 一般30%用来做test set比较常见 , 对于规模很大的数据集 , 比例一般在减少 。
评估
1、建立一个-的 , 例如准确度 , 或者将和计算为F1-score ,  公式如下:
2、 and:有时候有一些没法合并为一个有实际物理意义的  , 例如准确度和运行时间 , 这个时候需要把其它定义为 (例如 , 运行时间) , 定义为要优化的 。例如我们必须要规定在200 ms内 , 那就需要在200 ms选择方法 , 比较或者优化 。
错误分析
1、将错分的图片人工检查 , 并定义一些错误类 。在识别猫任务中 , 比如图片模糊 , 误将狗识别为猫 , 误将大猫(狮子 , 豹子等)识别为猫、猫有物体遮挡等 , 看一下哪些问题占比重较大 , 从而确定解决问题的优先级 。
2、错标注是否修改?当中错误标注比例较大 , 比如20% , 需要修改 , 而比例较小的时候 , 比如5%可能就不需要修改 , 一些研究也表明 , 当标签有适度的噪声通常不会过于影响模型性能 , 且有助于增加模型泛化能力 。

《Machine Learning Yearning》

文章插图
3、当dev set很大时 , 可以均分为两个 , 因为一般情况下对dev set做错误分析并提高效果 , 本质上可能是对dev set的 , 这时可以用另一半来调整参数 。可以用人眼看并进行错误分析的称为 dev set , 剩下的sev set的部分称为 dev set 。一般我们需要有100个才能感受到一些sense , 所以 dev set的大小一般为100/ error rate , 对于一些人在经过一定训练前很难感受的任务 , 比如推荐、医学图像等 , 可能不需要 dev set 。对于dev set比较小的情况 , 且error rate也比较小 , 可能没有剩余sev set用来做 dev set , 这个时候就不用 dev set 。
Bias &
这里的bias和不是统计学上的概念 , 而是针对train set和dev set error rate的定义
1、定义:bias的定义为train set的error rate, 定义为dev error rate - train error rate 。low bias + high 定义为 ,  high bias + low 定义为 。high bias + high 既有又有 , 这个目前不太理解 , 之前觉得要么要么 。
2、bias又分为和两种 , 这个时候需要和human 做一些比较 。例如 , 对于一个train set , 让一个正常人来做分类的是90% , 也就是10%的error rate 。如果一个模型train error rate为15% , 那么 bias = 5%,bias = 10% 。仍为dev error rate - train error rate 。
3、降低bias或方法:一般bias和是有一个 , 也就是“此消彼长”(除去大刀阔斧的改变网络结构可以同时降低) 。降低bias方法:增加模型大小 , 根据错误分析增加特征 , 减少正则或者直接去掉 , 一般这些方法都会增加 , 可以通过加正则来适当缓解 。增加训练数据可能既不能降低bias , 一般能够降低 。降低方法:增加训练数据 , early stop ,  特征选择(small train set , DL一般不用) , 减少模型大小 , 这些方法一般都会增加bias 。