觉得有用的话,欢迎一起讨论相互学习~
2.1 误差分析
- 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差分析.
实例剖析
- 例如此时你正在训练一个猫分类器,其中正确率为90%,这离目标有一定的距离. 结果发现在错误图片中发现了狗的图片.
- 我们思考现在是否为了避免在猫图中混入狗而开始做一个项目专门处理狗.而做一个这样的项目会花费宝贵的时间并且不知道是否会取得很好的效果,此时我们利用误差分析流程权衡利弊,是否需要针对这个问题进行改进.
- 误差分析
- 首先,收集100个错误标记的开发集例子,手动检查,查看开发集中有多少错误标记的例子是狗.
- 假设,100个错误标记中只有5%是狗,这意味着即使你修改了所有狗的问题,你也只能修改着100个错误中的5个.你的误差也只能从10%下降到9.5%.
- 假设,100个错误标记中有50%是狗,这意味着只要你修改了所有狗的问题,你只就修改了100个错误中的50个.你的误差也只能从10%下降到5%.这种情况下,单独考虑狗的问题是十分有意义的
误差分析的重要意义
- 尽管在实际操作中,手动对系统结果进行检查被认为是十分繁琐的工作,但是其实花费时间并不多,而且产生的效果非常好~!检查100个错误的训练集合也许只要花费5~10分钟时间,但是可以立马估计你改进的方有多少价值.
how-to
- 对于误差分析,你可以一次列举出好几种错误的情况,分别对错误进行分类,这样不仅效果好,还可以节省更多的时间.
- 可以把错误原因做成电子表格的形式,分析误差的原因.
2.2 清除标注错误的数据
- 监督学习问题的数据有输入X和输出标签Y构成,如果发现有些标签是错的,那是否值得花时间去修正这些标签呢?
- 例如在猫分类器中有将狗分类成猫的错误标注的例子.
- 对于训练集,深度学习算法对于 随机的错误标注例子 的鲁棒性很强,一般对训练集的影响不大. 但是对于系统性的错误就不鲁棒了,例如将一类别的事物都标记错误.在猫分类器中将所有的白色的狗都分类为猫
- 对于开发集和测试集中 错误标注的例子 我们可以在 误差分析 中加一列表示由于标记错误产生的误差, 并且 计算修改这些误差所能带来的识别率的提升 .如果这些错误标记的例子对于开发集评价系统不会产生很大的影响,不进行修改也是可行的.牢牢把握训练集的目的是:选择和评价A和B两种分类器
Tips
- 无论使用何种修正方法,都要同时作用到开发集和测试集上.因为要保证它们来自相同的分布.
2.3 快速搭建你的第一个系统并开始迭代
- 如果你正在开发全新的机器学习应用,你应该尽快建立你的第一个系统原型,然后快速迭代.
- 举语音识别的例子来说,如果你正在考虑一个新的语音识别系统,你有很多需要考虑的方面.你有很多需要做的事来改进语音识别系统.
- 一般对于新建一个机器学习系统而言,一般会有50个考虑的方向.所以如果你想新建一个机器学习的应用,很重要的一点是快速搭好你的第一个系统,然后开始迭代.
- 快速设立开发集和测试集还有指标.
- 马上建立一个原型机器学习系统,然后找到训练集训练一下,看看效果.训练集上的准确率,开发集测试集评估指标表现如何.
- 分析偏差和方差,误差分析确定下一步.
Why
- 初始系统的全部意义在于,有一个学习过的系统能够让你确定偏差和方差的范围,知道下一步该做什么,能够通过误差分析想出在所有能走的方向中,哪些是实际上最有希望的方向.