2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
2.5 不匹配数据划分的偏差和误差 | 回到目录 | 2.7 迁移学习 |
处理数据不匹配问题 (Addressing Data Mismatch)
如果您的训练集来自和开发测试集不同的分布,如果错误分析显示你有一个数据不匹配的问题该怎么办?这个问题没有完全系统的解决方案,但我们可以看看一些可以尝试的事情。如果我发现有严重的数据不匹配问题,我通常会亲自做错误分析,尝试了解训练集和开发测试集的具体差异。技术上,为了避免对测试集过拟合,要做错误分析,你应该人工去看开发集而不是测试集。
但作为一个具体的例子,如果你正在开发一个语音激活的后视镜应用,你可能要看看……我想如果是语音的话,你可能要听一下来自开发集的样本,尝试弄清楚开发集和训练集到底有什么不同。所以,比如说你可能会发现很多开发集样本噪音很多,有很多汽车噪音,这是你的开发集和训练集差异之一。也许你还会发现其他错误,比如在你的车子里的语言激活后视镜,你发现它可能经常识别错误街道号码,因为那里有很多导航请求都有街道地址,所以得到正确的街道号码真的很重要。当你了解开发集误差的性质时,你就知道,开发集有可能跟训练集不同或者更难识别,那么你可以尝试把训练数据变得更像开发集一点,或者,你也可以收集更多类似你的开发集和测试集的数据。所以,比如说,如果你发现车辆背景噪音是主要的错误来源,那么你可以模拟车辆噪声数据,我会在下一张幻灯片里详细讨论这个问题。或者你发现很难识别街道号码,也许你可以有意识地收集更多人们说数字的音频数据,加到你的训练集里。
现在我知道这张幻灯片只给出了粗略的指南,列出一些你可以做的尝试,这不是一个系统化的过程,我想,这不能保证你一定能取得进展。但我发现这种人工见解,我们可以一起尝试收集更多和真正重要的场合相似的数据,这通常有助于解决很多问题。所以,如果你的目标是让训练数据更接近你的开发集,那么你可以怎么做呢?
你可以利用的其中一种技术是人工合成数据(artificial data synthesis),我们讨论一下。在解决汽车噪音问题的场合,所以要建立语音识别系统。也许实际上你没那么多实际在汽车背景噪音下录得的音频,或者在高速公路背景噪音下录得的音频。但我们发现,你可以合成。所以假设你录制了大量清晰的音频,不带车辆背景噪音的音频,“The quick brown fox jumps over the lazy dog”(音频播放),所以,这可能是你的训练集里的一段音频,顺便说一下,这个句子在AI测试中经常使用,因为这个短句包含了从a到z所有字母,所以你会经常见到这个句子。但是,有了这个“the quick brown fox jumps over the lazy dog”这段录音之后,你也可以收集一段这样的汽车噪音,(播放汽车噪音音频)这就是汽车内部的背景噪音,如果你一言不发开车的话,就是这种声音。如果你把两个音频片段放到一起,你就可以合成出"the quick brown fox jumps over the lazy dog"(带有汽车噪声),在汽车背景噪音中的效果,听起来像这样,所以这是一个相对简单的音频合成例子。在实践中,你可能会合成其他音频效果,比如混响,就是声音从汽车内壁上反弹叠加的效果。
但是通过人工数据合成,你可以快速制造更多的训练数据,就像真的在车里录的那样,那就不需要花时间实际出去收集数据,比如说在实际行驶中的车子,录下上万小时的音频。所以,如果错误分析显示你应该尝试让你的数据听起来更像在车里录的,那么人工合成那种音频,然后喂给你的机器学习算法,这样做是合理的。
现在我们要提醒一下,人工数据合成有一个潜在问题,比如说,你在安静的背景里录得10,000小时音频数据,然后,比如说,你只录了一小时车辆背景噪音,那么,你可以这么做,将这1小时汽车噪音回放10,000次,并叠加到在安静的背景下录得的10,000小时数据。如果你这么做了,人听起来这个音频没什么问题。但是有一个风险,有可能你的学习算法对这1小时汽车噪音过拟合。特别是,如果这组汽车里录的音频可能是你可以想象的所有汽车噪音背景的集合,如果你只录了一小时汽车噪音,那你可能只模拟了全部数据空间的一小部分,你可能只从汽车噪音的很小的子集来合成数据。
而对于人耳来说,这些音频听起来没什么问题,因为一小时的车辆噪音对人耳来说,听起来和其他任意一小时车辆噪音是一样的。但你有可能从这整个空间很小的一个子集出发合成数据,神经网络最后可能对你这一小时汽车噪音过拟合。我不知道以较低成本收集10,000小时的汽车噪音是否可行,这样你就不用一遍又一遍地回放那1小时汽车噪音,你就有10,000个小时永不重复的汽车噪音来叠加到10,000小时安静背景下录得的永不重复的语音录音。这是可以做的,但不保证能做。但是使用10,000小时永不重复的汽车噪音,而不是1小时重复学习,算法有可能取得更好的性能。人工数据合成的挑战在于,人耳的话,人耳是无法分辨这10,000个小时听起来和那1小时没什么区别,所以你最后可能会制造出这个原始数据很少的,在一个小得多的空间子集合成的训练数据,但你自己没意识到。
这里有人工合成数据的另一个例子,假设你在研发无人驾驶汽车,你可能希望检测出这样的车,然后用这样的框包住它。很多人都讨论过的一个思路是,为什么不用计算机合成图像来模拟成千上万的车辆呢?事实上,这里有几张车辆照片(下图后两张图片),其实是用计算机合成的,我想这个合成是相当逼真的,我想通过这样合成图片,你可以训练出一个相当不错的计算机视觉系统来检测车子。
不幸的是,上一张幻灯片介绍的情况也会在这里出现,比如这是所有车的集合,如果你只合成这些车中很小的子集,对于人眼来说也许这样合成图像没什么问题,但你的学习算法可能会对合成的这一个小子集过拟合。特别是很多人都独立提出了一个想法,一旦你找到一个电脑游戏,里面车辆渲染的画面很逼真,那么就可以截图,得到数量巨大的汽车图片数据集。事实证明,如果你仔细观察一个视频游戏,如果这个游戏只有20辆独立的车,那么这游戏看起来还行。因为你是在游戏里开车,你只看到这20辆车,这个模拟看起来相当逼真。但现实世界里车辆的设计可不只20种,如果你用着20量独特的车合成的照片去训练系统,那么你的神经网络很可能对这20辆车过拟合,但人类很难分辨出来。即使这些图像看起来很逼真,你可能真的只用了所有可能出现的车辆的很小的子集。
所以,总而言之,如果你认为存在数据不匹配问题,我建议你做错误分析,或者看看训练集,或者看看开发集,试图找出,试图了解这两个数据分布到底有什么不同,然后看看是否有办法收集更多看起来像开发集的数据作训练。
我们谈到其中一种办法是人工数据合成,人工数据合成确实有效。在语音识别中。我已经看到人工数据合成显著提升了已经非常好的语音识别系统的表现,所以这是可行的。但当你使用人工数据合成时,一定要谨慎,要记住你有可能从所有可能性的空间只选了很小一部分去模拟数据。
所以这就是如何处理数据不匹配问题,接下来,我想和你分享一些想法就是如何从多种类型的数据同时学习。
课程板书
←上一篇 | ↓↑ | 下一篇→ |
---|---|---|
2.5 不匹配数据划分的偏差和误差 | 回到目录 | 2.7 迁移学习 |
2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授相关推荐
- 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授
文章目录 目录 第五课 第四课 第三课 第二课 第一课 目录 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1. ...
- 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...
- 3.11 结论和致谢-深度学习第五课《序列模型》-Stanford吴恩达教授
结论和致谢 (Conclusion and thank you) 恭喜你能走到这一步,在最后这节视频中,只想做个总结,并给你一些最后的想法. 我们一起经历了一段很长的旅程,如果你已经学完了整个专业的课 ...
- 1.1 为什么选择序列模型-深度学习第五课《序列模型》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 4.12 总结(第四课) 回到目录 1.2 数学符号 为什么选择序列模型 (Why Sequence Models?) 在本课程中你将学会序列模型,它是深度学习中最令人激动的 ...
- 3.10 触发字检测-深度学习第五课《序列模型》-Stanford吴恩达教授
触发字检测 (Trigger Word Detection) 现在你已经学习了很多关于深度学习和序列模型的内容,于是我们可以真正去简便地描绘出一个触发字系统(a trigger word system ...
- 2.7 负采样-深度学习第五课《序列模型》-Stanford吴恩达教授
负采样 (Negative Sampling) 在上个视频中,你见到了Skip-Gram模型如何帮助你构造一个监督学习任务,把上下文映射到了目标词上,它如何让你学到一个实用的词嵌入.但是它的缺点就在于 ...
- 2.1 词汇表征-深度学习第五课《序列模型》-Stanford吴恩达教授
词汇表征 (Word Representation) 上周我们学习了RNN.GRU单元和LSTM单元.本周你会看到我们如何把这些知识用到NLP上,用于自然语言处理,深度学习已经给这一领域带来了革命性的 ...
- 2.11 计算机视觉现状-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.10 数据扩充 回到目录 2.12 总结 计算机视觉现状 (The State of Computer Vision) 深度学习已经成功地应用于计算机视觉.自然语言处理. ...
- 2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.8 使用开源的实现方案 回到目录 2.10 数据扩充 迁移学习 (Transfer Learning) 如果你要做一个计算机视觉的应用,相比于从头训练权重,或者说从随机初 ...
- 2.2 经典网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.1 为什么要进行实例探究? 回到目录 2.3 残差网络 经典网络 (Classic Networks) 这节课,我们来学习几个经典的神经网络结构,分别是LeNet-5.A ...
最新文章
- DataGrid鼠标事件处理
- mpls标签分配原理——Vecloud
- eclipse快速定位java对应的class
- 盲审不到4分的论文竟中了ICLR 2019??!!ICLR 2019官方这样回应
- 查看Linux下端口占用情况的命令
- 虚拟主机如何创建svn服务器,虚拟主机搭建svn
- python 移除列表中的值 list index out of range_重拾Python(二)之列表
- 页面编码和js文件不同导致的IE6下脚本错误
- sql语句学习之having用法
- qt html表格自动增加行,QT中的tablewidget如何插入一行数据
- 天地不仁,以万物为刍狗!
- 计算思维是利用计算机,计算机思维论文
- 针对Win10 Tensorflow-2.x 训练 线程冻结(假死、卡住、几个epoch后、中途停滞、CPU占用0%) 等问题的排查总结
- css3-pie,CSS3pie是什么?
- 计算机论文投tmc期刊,无线网络会议与期刊档次划分一览
- 全向轮平台的旋转中心位置计算
- 关于Render在不同情况的用法
- 无法直接安装Ubuntu16.04的Win10系统安装教程
- 关于一道你们眼中的水题 Windy数 的乱写(数位dp)
- Linux虚拟机遇到的一些问题
热门文章
- Ubuntu中清理Network下Connect to Server的入口
- 1.8 小飞的电梯调度算法
- 14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器...
- 用SQL语句添加删除修改字段
- vdsm的SSL证书验证过程
- 转:a标签中如果有button, 那么在IE下就不能跳转到herf的链接
- UA OPTI544 量子光学7 补充:Density Operator
- UA MATH571B 2K析因设计 SAS实践 分数2k析因设计
- Linux根文件系统学习总结
- C语言数组学习 - 使用窗口版程序演示