当前位置: 首页 > news >正文

网站建设维护工作总结域名交易网站哪个好

网站建设维护工作总结,域名交易网站哪个好,登录中国沈阳网站,上海中高风险地区有哪些进行误差分析 (Carrying out error analysis) 如果你希望让学习算法能够胜任人类能做的任务#xff0c;但你的学习算法还没有达到人类的表现#xff0c;那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么。这个过程称为错误分析。 假设你正在调试猫分类器…进行误差分析 (Carrying out error analysis) 如果你希望让学习算法能够胜任人类能做的任务但你的学习算法还没有达到人类的表现那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么。这个过程称为错误分析。 假设你正在调试猫分类器然后你取得了90%准确率相当于10%错误在你的开发集上做到这样这离你希望的目标还有很远。你的队员看了一下算法分类出错的例子注意到算法将一些狗分类为猫。你的队友给你一个建议如何针对狗的图片优化算法。为了让你的猫分类器在狗图上做的更好让算法不再将狗分类成猫你可以针对狗收集更多的狗图设计一些只处理狗的算法功能。但是问题在于你是不是应该去开始做一个项目专门处理狗这项目可能需要花费几个月的时间才能让算法在狗图片上犯更少的错误这样做值得吗或者与其花几个月做这个项目有可能最后发现这样一点用都没有。这里有个错误分析流程可以让你很快知道这个方向是否值得努力。 首先收集一下比如说100个错误标记的开发集样本然后手动检查一次只看一个看看你的开发集里有多少错误标记的样本是狗。现在假设事实上你的100个错误标记样本中只有5%是狗就是说在100个错误标记的开发集样本中有5个是狗。这意味着100个样本在典型的100个出错样本中即使你完全解决了狗的问题你也只能修正这100个错误中的5个。或者换句话说如果只有5%的错误是狗图片那么如果你在狗的问题上花了很多时间那么你的错误率只能从10%下降到9.5%。你就可以确定这样花时间不好或者也许应该花时间但至少这个分析给出了一个上限。如果你继续处理狗的问题能够改善算法性能的上限。在机器学习中有时我们称之为性能上限就意味着最好能到哪里完全解决狗的问题可以对你有多少帮助。 但现在假设发生了另一件事假设我们观察一下这100个错误标记的开发集样本你发现实际有50张图都是狗所以有50%都是狗的照片现在花时间去解决狗的问题可能效果就很好。这种情况下如果你真的解决了狗的问题那么你的错误率可能就从10%下降到5%了。然后你可能觉得让错误率减半的方向值得一试可以集中精力减少错误标记的狗图的问题。 在机器学习中有时候我们很鄙视手工操作或者使用了太多人为数值。但如果你要搭建应用系统那这个简单的人工统计步骤错误分析可以节省大量时间可以迅速决定什么是最重要的或者最有希望的方向。 在做错误分析时也可以同时并行评估几个想法。进行错误分析你应该找一组错误样本可能在你的开发集里或者测试集里观察错误标记的样本看看假阳性false positives和假阴性false negatives统计属于不同错误类型的错误数量。在这个过程中你可能会得到启发归纳出新的错误类型。如果你过了一遍错误样本然后发现一些其他因素干扰了分类器你就可以在途中新建一个错误类型。总之通过统计不同错误标记类型占总数的百分比可以帮你发现哪些问题需要优先解决或者给你构思新优化方向的灵感。 清除标注错误的数据 (Cleaning Up Incorrectly Labeled Data) 你的监督学习问题的数据由输入 x 和输出标签 y 构成如果你观察一下你的数据并发现有些输出标签是错的。你的数据有些标签是错的是否值得花时间去修正这些标签呢 首先我们来考虑训练集事实证明深度学习算法对于训练集中的随机错误是相当健壮的robust。只要你的标记出错的样本离随机错误不太远有时可能做标记的人没有注意或者不小心按错键了如果错误足够随机那么放着这些错误不管可能也没问题而不要花太多时间修复它们。 当然你浏览一下训练集检查一下这些标签并修正它们也没什么害处。有时候修正这些错误是有价值的有时候放着不管也可以只要总数据集总足够大实际错误率可能不会太高。 深度学习算法对随机误差很健壮但对系统性的错误就没那么健壮了。比如说如果做标记的人一直把白色的狗标记成猫那就成问题了。因为你的分类器学习之后会把所有白色的狗都分类为猫。但随机错误或近似随机错误对于大多数深度学习算法来说不成问题。 如果是开发集和测试集中有这些标记出错的样本呢如果你担心开发集或测试集上标记出错的样本带来的影响一般建议你在错误分析时添加一个额外的列这样你也可以统计标签错误的样本数。比如说你统计对100个标记出错的样本的影响在这100个样本中你的分类器的输出和开发集的标签不一致有时对于其中的少数样本你的分类器输出和标签不同是因为标签错了而不是你的分类器出错这时你可以在额外的列进行标注然后统计因为标签错误所占的百分比。 假设最后统计结果为开发集中标签错误占比为6%那么是否值得修正这些标记出错的样本如果这些标记错误严重影响了你在开发集上评估算法的能力那么就应该去花时间修正错误的标签。但是如果它们没有严重影响到你用开发集评估成本偏差的能力那么可能就不应该花宝贵的时间去处理。 举个具体的例子来确定是否值得去人工修正标记出错的数据。首先看看整体的开发集错误率假设系统达到了90%整体准确度所以有10%错误率然后统计错误标记引起的错误百分比。假设6的错误来自标记出错所以10%的6%就是0.6%这时也许你应该看看其他原因导致的错误如果你的开发集上有10%错误其中0.6%是因为标记出错剩下的占9.4%是其他原因导致的比如把狗误认为猫。所以在这种情况下我说有9.4%错误率需要集中精力修正而标记出错导致的错误是总体错误的一小部分而已所以如果你一定要这么做你也可以手工修正各种错误标签但也许这不是当下最重要的任务。 使用来自不同分布的数据进行训练和测试 (Training and Testing on Different Distributions) 当你收集到足够多带标签的数据构成训练集时算法效果最好这导致很多团队用尽一切办法收集数据然后把它们堆到训练集里让训练的数据量更大即使有些数据甚至是大部分数据都来自和开发集、测试集不同的分布。 假设你在开发一个手机应用用户会上传他们用手机拍摄的照片你想识别用户从应用中上传的图片是不是猫。现在你有两个数据来源一个是你真正关心的数据分布来自应用上传的数据比如右边的应用这些照片一般更业余取景不太好有些甚至很模糊。另一个数据来源就是你可以用爬虫程序挖掘网页直接下载就这个样本而言可以下载很多取景专业、高分辨率、拍摄专业的猫图片。如果你的应用用户数还不多你只收集到10,000张用户上传的照片但通过爬虫挖掘网页你可以下载到海量猫图下载了超过20万张猫图。而你真正关心的算法表现是你的最终系统处理来自应用程序的这个图片分布时效果好不好因为最后你的用户会上传类似右边这些图片你的分类器必须在这个任务中表现良好。现在你就陷入困境了因为你有一个相对小的数据集只有10,000个样本来自那个分布而你还有一个大得多的数据集来自另一个分布图片的外观和你真正想要处理的并不一样。但你又不想直接用这10,000张图片因为这样你的训练集就太小了使用这20万张图片似乎有帮助。但是困境在于这20万张图片并不完全来自你想要的分布那么你可以怎么做呢 这里有一种选择你可以做的一件事是将两组数据合并在一起这样你就有21万张照片你可以把这21万张照片随机分配到训练、开发和测试集中。现在这么设立你的数据集有一些好处也有坏处。好处在于你的训练集、开发集和测试集都来自同一分布这样更好管理。但坏处在于这坏处还不小就是如果你观察开发集会发现其中很多图片都来自网页下载的图片那并不是你真正关心的数据分布你真正要处理的是来自手机的图片。要记住设立开发集的目的是告诉你的团队去瞄准的目标而你瞄准目标的方式你的大部分精力都用在优化来自网页下载的图片这其实不是你想要的。所以这种方法是不可取的。 建议使用下面的方法。比如说还是205,000张图片训练集包含了来自网页的20万张图片还有5000张来自手机应用的图片开发集就是2500张来自应用的图片测试集也是2500张来自应用的图片。这样将数据分成训练集、开发集和测试集的好处在于现在你瞄准的目标就是你想要处理的目标你告诉你的团队我的开发集包含的数据全部来自手机上传这是你真正关心的图片分布。我们试试搭建一个学习系统让系统在处理手机上传图片分布时效果良好。缺点在于现在你的训练集分布和你的开发集、测试集分布并不一样。但事实证明这样把数据分成训练、开发和测试集在长期能给你带来更好的系统性能。 数据不匹配时偏差和方差的分析 (Bias and Variance with Mismatched Data Distribution) 估计学习算法的偏差和方差真的可以帮你确定接下来应该优先做的方向但是当你的训练集来自和开发集、测试集不同分布时分析偏差和方差的方式可能不一样。 如果你的开发集来自和训练集一样的分布你的训练集误差是1%你的开发集误差是10%你可能会说这里存在很大的方差问题你的算法不能很好的从训练集出发泛化它处理训练集很好但处理开发集就突然间效果很差了。 但如果你的训练数据和开发数据来自不同的分布你就不能再放心下这个结论了。也许算法在训练集上做得不错可能因为训练集很容易识别因为训练集都是高分辨率图片很清晰的图像但开发集要难以识别得多。所以也许软件没有方差问题这只不过反映了开发集包含更难准确分类的图片。所以这个分析的问题在于首先算法只见过训练集数据没见过开发集数据。第二开发集数据来自不同的分布。 为了分辨清楚两个因素的影响我们定义一组新的数据称之为训练-开发集所以这是一个新的数据子集。我们应该从训练集的分布里挖出来但不会用来训练你的网络。 我们已经设立过这样的训练集、开发集和测试集开发集和测试集来自相同的分布但训练集来自不同的分布。我们要做的是随机打散训练集然后分出一部分训练集作为训练-开发集training-dev就像开发集和测试集来自同一分布训练集、训练-开发集也来自同一分布。 但不同的地方是现在你只在训练集训练你的神经网络你不会让神经网络在训练-开发集上跑后向传播。为了进行误差分析你应该做的是看看分类器在训练集上的误差训练-开发集上的误差还有开发集上的误差。 例如在某个样本中训练误差是1%训练-开发集上的误差是9%然后开发集误差是10%。你就可以从这里得到结论当你从训练数据变到训练-开发集数据时错误率真的上升了很多。而训练数据和训练-开发数据的差异在于你的神经网络能看到第一部分数据并直接在上面做了训练但没有在训练-开发集上直接训练这就告诉你算法存在方差问题因为训练-开发集的错误率是在和训练集来自同一分布的数据中测得的。所以尽管你的神经网络在训练集中表现良好但无法泛化到来自相同分布的训练-开发集里它无法很好地泛化推广到来自同一分布。 我们来看一个不同的样本假设训练误差为1%训练-开发误差为1.5%但当你开始处理开发集时错误率上升到10%。现在你的方差问题就很小了因为当你从见过的训练数据转到训练-开发集数据神经网络还没有看到的数据错误率只上升了一点点。但当你转到开发集时错误率就大大上升了所以这是数据不匹配的问题。因为你的学习算法没有直接在训练-开发集或者开发集训练过但是这两个数据集来自不同的分布。但不管算法在学习什么它在训练-开发集上做的很好但开发集上做的不好所以总之你的算法擅长处理和你关心的数据不同的分布我们称之为数据不匹配的问题。 处理数据不匹配问题 (Addressing Data Mismatch) 如果发现有严重的数据不匹配问题通常先做错误分析尝试了解训练集和开发测试集的具体差异。技术上为了避免对测试集过拟合要做错误分析然后看看是否有办法收集更多看起来像开发集的数据作训练。 其中一种办法是人工数据合成artificial data synthesis人工数据合成确实有效。但当你使用人工数据合成时一定要谨慎要记住你有可能从所有可能性的空间只选了很小一部分去模拟数据。
http://www.w-s-a.com/news/996109/

相关文章:

  • 福田欧曼服务站网站前台设计
  • 网站做系统叫什么软件吗注册域名需要实名认证吗
  • jsp网站开发教学视频ui设计风格
  • 注册网站建设开发怎么自己做导航网站
  • 设计做网站品牌咖啡主题网页界面设计
  • 个人网站制作总体设计宿迁房价2023年最新房价
  • 服装网站建设进度及实施过程马鞍山网站设计制作
  • 郑州网站优化顾问济宁网站制作
  • 网站开发简单吗网站引导页分为三个板块设计风格
  • 湖南做网站 在线磐石网络百度一下百度搜索
  • 现在建网站多少钱推广营销费
  • 联想企业网站建设的思路西安网站建设阳建
  • 网站内容 内链网站建设电话销售工作总结
  • 系统网站开发知名的摄影网站有哪些
  • 网站拍照的幕布扬中网站建设价位
  • 网站ie兼容性差西安小程序开发的公司
  • 上海网站建设培训app网站开发成本
  • 个人网站icp外贸网站开发 河南
  • 遵义建设网站无锡市规划建设局网站
  • 海外留学网站建设方案门户网站的发布特点
  • 网站建设不赚钱net112企业建站系统
  • 网站建设团队管理模板贵州省住房和城乡建设部网站
  • 曲沃网站建设网上学编程的有哪些比较好的网站
  • 厦门网站建设慕枫学做网站需要多久
  • 爱奇艺做任务领vip网站设计广告图片
  • 中科汇联网站建设手册上海公司名称注册查询网
  • 网站建设电子商务课总结和体会关于做网站书籍
  • 仪征网站建设公司哪家好简单网页制作素材图片
  • 甘肃第九建设集团公司网站潍坊个人做网站
  • 如何做后台网站的教程网站建设 关于我们