2026/2/25 8:03:36
网站建设
项目流程
树状菜单网站,济南网站技术,企业网站规划书,长沙开福区专业制作网站目录
1.错误分析#xff08;error analysis#xff09;
#xff08;1#xff09;定义
#xff08;2#xff09;错误分析流程
#xff08;3#xff09;一般建议在错误分析时#xff0c;增加一列#xff0c;统计标签错误的样本数#xff08;下面#xff09;
2.清…目录1.错误分析error analysis1定义2错误分析流程3一般建议在错误分析时增加一列统计标签错误的样本数下面2.清除标注错误的数据1解释2注意事项3.快速搭建系统并进行迭代4.使用来自不同分布的数据进行训练和测试5.数据分布不同时的偏差与方差的分析6.处理数据不匹配问题数据分布不同问题1.错误分析error analysis1定义当模型算法还没有达到人类的表现那么人工检查一下错误可以让我们了解接下来应该做什么这个过程称为错误分析error analysis。例子猫分类器取得了90%准确率相当于10%错误率。算法将一些狗分类成猫可能有建议针对狗的图片进行优化例如收集更多的狗图问题是我们是不是应该专门花很多时间去处理狗的问题花费这么多时间值得吗这时有个错误分析流程能让我们很快知道某个方向是否值得尝试人工收集一下开发集有多少错误标记的样本是狗如果100个错误样本中只有5个是狗那如果你在这个问题上花费很多时间最多只能将错误率从10%下降到9.5%。在机器学习中称这种能够改善算法性能的上限为性能上限the ceiling on performance意思就是完全解决狗的问题对你最多有多少帮助。但如果50%都是狗的照片那么花时间解决狗的问题可能效果更好错误率可能会更低一些。2错误分析流程在开发集或测试集中找一组错误样本mislabeled examples统计属于不同错误类型的错误数量根据错误类型占比可以找到改进的方向。例子对于一个猫分类器有4个可能的错误类型1是狗图2是狮子豹猎豹等大猫3图像模糊被分类成猫可以建立一个表格或者普通文本文件人工地一张一张检查每张图片每一列是可能的错误类型最后一列可以备注最后统计这些算法错误的百分比。在这个例子中8%是狗43%是大猫61%属于模糊12%是Instagram滤镜。所以我们得出改善大猫和模糊图片的识别对性能提高的上限空间会大得多。3一般建议在错误分析时增加一列统计标签错误的样本数下面2.清除标注错误的数据1解释在监督学习中数据由输入x和输出标签y构成如果发现一些y标注错误是否值得花时间去修正这些标签呢事实证明深度学习算法对于训练集中的随机错误是相当健壮的如果错误足够随机总数据集总足够大实际错误率可能不会太高。例子一般建议在错误分析时增加一列统计标签错误的样本数。一个例子上图左下方如果整体开发集有10%错误率同时6%的错误来自错误标记那么关注错误标记引起的错误的数量或者百分比在这里6%×10%0.6%意味着开发集的错误中0.6%是标记出错剩下9.4%是其他原因导致的所以在这种情况下应该集中精力修正9.4%的错误。一个例子上图右下方上图表不是这个例子的如果整体开发集有2%错误率但总体错误中的0.6%还是标记出错导致的。则0.6%/2%30%占比较高。较大一部分的错误都是开发集标记出错导致的那似乎修正开发集里的错误标签似乎更有价值worthwhile。因此现在你就有很好的理由去修正开发集里的错误标签。2注意事项1 开发集和测试集必须来自相同的分布。如果要修正开发集上的部分数据那么最好也对测试集做同样的修正以确保它们继续来自相同的分布。2 同时检验算法判断正确和判断错误的样本因为算法有可能因为运气好把某个东西判断对了。3 修正训练集中的标签其实相对没那么重要可以只修正开发集和测试集中的标签因为它们比训练集小得多。3.快速搭建系统并进行迭代如果要开发全新的机器学习应用通常建议尽快建立你的第一个系统原型然后快速迭代。快速设立开发集和测试集还有指标然后找到训练集训练一下看看效果在开发集测试集、评估指标上表现如何。然后用它做偏差/方差分析用它做错误分析然后用分析结果确定下一步优先要做的方向。4.使用来自不同分布的数据进行训练和测试深度学习在训练集数据足够多时算法效果最好这导致很多算法团队想尽一切办法去收集数据导致大部分数据都来自与开发集、测试集不同的分布。下面介绍一些最佳做法best practices来处理训练集和测试集存在差异的情况。开发一个识别猫的手机应用有两个数据来源一个是你真正关心的数据分布来自应用上传的数据右边一般且业余甚至很模糊有1万张另一个数据来源是爬取网页取景专业、高分辨率、拍摄专业有20万张。而你真正关心的算法表现是你的最终系统处理来自应用程序的这个图片分布时效果好不好现在有20万张图片并不完全来自你想要的分布那么你可以怎么做呢有两种选择第一种划分方式是将两组数据合并在一起这样就有21万张照片把这21万张照片随机分配到训练、开发和测试集中。假设你已经确定开发集和测试集各包含2500个样本所以训练集有205000个样本。这样会导致开发集中大部分都不是我们关心的数据所以不推荐这种方式。还有第二种划分方式设置开发集和测试集都是手机图而训练集包含了来自网页的20万张图片和5000张来自应用的图片开发集和测试集都是2500张来自应用的图片。虽然训练集和开发集、测试集的分布不一样。但事实证明这样划分长期能带来更好的性能。总之开发集和测试集的数据设置为我们真正要处理的数据是关键而训练集的数据设置相对不那么重要。5.数据分布不同时的偏差与方差的分析之前我们通过观察贝叶斯错误率(人的表现)、训练集误差和开发集误差来分析偏差与方差。但当训练集和开发集、测试集不同分布时分析偏差和方差的方式可能不一样解决方法就是从训练集中分出一部分数据作为训练-开发集这个数据不用于训练。我们现在有了训练集误差、训练-开发集误差、开发集误差。eg1贝叶斯错误率是0%训练集误差是1%训练-开发集误差是9%开发集误差是10%比较1%和9%得出存在高方差。而不是比较1%和10%因为这两个数据来自不同分布eg2训练集误差为1%训练-开发集误差变为1.5%开发集误差10%。现在算法的方差问题就很小了因为从训练数据转到训练-开发集数据错误率只上升了一点点。但开发集的错误率就大大上升了这是数据分布不同导致的问题。eg3训练误差、训练-开发误差、开发误差分别为10%11%12%要记住人类水平对贝叶斯错误率的估计大概是0%这样的情况存在高偏差问题存在可避免偏差问题。6.处理数据不匹配问题数据分布不同问题上面说了训练-开发集误差与开发集误差过大是因为数据不匹配的原因那如何处理呢亲自做错误分析尝试了解训练集和开发集的具体差异然后做一些处理让训练集更接近开发集。技术上为了避免对测试集过拟合要做错误分析应该人工去看开发集而不是测试集eg假如开发一个语音激活的后视镜应用如果你发现车辆背景噪音是主要的错误来源那么你可以模拟车辆噪声数据加入到你的训练集中。其中一种技术是人工合成数据artificial data synthesis。实际上没有那么多在汽车噪音下录制的音频训练样本很可能没有背景噪声可以人工添加背景噪声通过人工数据合成处理后的数据再喂给机器学习算法这样会让模型训练的效果更准确。但人工合成有一个潜在问题如果你只录了一个小时车辆背景噪音然后反复播放给每段语音都增加同一段背景噪声这样可能对这个汽车噪音过拟合。