独家 | 如何改善你的训练数据集?(附案例)

640?wx_fmt=png

作者:Pete Warden

翻译:申利彬

校对:丁楠雅

本文约6800字,建议阅读10分钟。

本文作者基于自身项目经验阐述训练数据的重要性并分享了一些改进的实用技巧。

640?wx_fmt=png

Lisha Li 摄


这张幻灯片是Andrej Karpathy 在Train AI 演讲的一部分,我很赞同它表达的观点。它充分体现了深度学习在研究和应用上的差异。学术论文几乎全部集中在新的和改进的模型上,使用的数据集是从公共数据集中选出的一小部分。相反,我认识的将深度学习作为实际应用的一部分人,他们大部分时间都在思考如何改善训练数据。


关于研究人员专注于模型架构有很多好的理由,但它确实意味着很少有资源可以引导那些专注于在生产中部署机器学习的人。我在会上的发言是“那些有效到不合常理的训练数据”。在这里我想稍微扩展一下,解释训练数据为什么如此重要,以及一些改进它的实用技巧。


因为工作的原因,我需要与许多研究人员和产品团队紧密合作。我对于改善数据可以带来效果提升的信念来源于我看到它们在构建模型时取得了巨大的成果。现实世界的大部分应用中,运用深度学习的最大障碍就是没有足够高的精度,而我看到提高精度的最快的方法就是改善训练数据集。即使你被困在延迟或存储大小等其他约束上,你可以通过更小的架构来换取一些性能特征,这样可以提高特定模型的准确性。


语音指令


我不能分享我对生产系统的大部分观察,但是我有一个开源例子可以证明同样的道理。去年,我用Tensorflow创建了一个简单的语音识别的例子,但是事实证明,没有现有的数据集可以很容易地用于训练模型。不过在很多志愿者慷慨的帮助下,我收集了60000个由他们说的短语音频片段。在此感谢“开放式语音录制网站”(Open Speech Recording site)的AIY团队帮我发起这个项目。最后得到的模型是可以使用的,但并没有达到我所希望的精度。


640?wx_fmt=jpeg


为了看看模型设计者的身份对我产生的局限性有多大,我使用相同的数据集发起了一个Kaggle比赛。参赛者的结果要比我最初的模型好很多,但即使有很多团队提出很多不同的方法,最后达到91%精度的只有很少的一部分人。对我来说,这意味着数据有一些根本上的错误,而且参赛者也确实发现了很多错误,比如不正确的标签或者截断的音频。更多的样本开始促使我关注数据集新版本中他们发现的固定的问题。


我查看了错误评价指标,来了解模型中哪些词的问题最多。结果发现“其它”类别(当语音被识别,但单词表不在模型的有限词汇表内)特别容易出错。为了解决这个问题,我增加了我们正在捕获的不同单词的数量,以提供更多样化的训练数据。


因为Kaggle参赛者提出的标签错误,我“众包”了一个额外的验证通道,要求人们听每个剪辑,并确保它可以匹配到期望的标签。另外,他们也发现了一些几乎无声或者被截断的文件,因此我编写了一个实用工具来做一些音频分析,并自动剔除糟糕的样本。尽管删除了一些糟糕的文件,最后我还是将总的说话数量增加到了100000。这要感谢更多志愿者和收费“众包”者的帮助。


为了帮助别人使用这个数据集(并从我的错误中学习),我将所有相关的事情和最新的精度结果写进了一篇论文(https://arxiv.org/abs/1804.03209)。最重要的结论是,在不改变模型或测试数据的前提下,第一名的精度提高了4%,从85.4%提高到了89.7%。这个提高让人很激动,并且当人们在Android 或 Raspberry Pi 演示应用中使用该模型时,反映了更高的满意度。我相信如果我花时间在模型架构的调整上,尽管我知道我的模型不如最好的模型,最终我得到的精度的提高肯定没有现在的多。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值