[DeeplearningAI笔记]第三章2.9-2.10端到端学习
觉得有用的话,欢迎一起讨论相互学习~
吴恩达老师课程原地址
2.9 什么是端到端学习-What is End-to-end deeplearning
- 以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理. 端到端学习就是忽略中间的过程用单个神经网络代替它.
Speech recognition example
- 你的目标是输入X,比如说一段音频,目标是将其映射到Y,就是这段音频的听写文本.
- 传统阶段上,语音识别需要很多阶段的处理,首先你要提取一些特征,一些手工设计的音频特征.
- 例如使用MFCC-用来从音频提取一组特定的人工设计的特征.
- 在提取一些低层次的特征之后,你可以使用 机器学习算法 在音频片段中找到音位,音位是声音的基本单元.例如Cat这个词由三个音位构成,算法将Cu-Ah-Tu三个音位提取出来,然后将音位串在一起构成独立的词.然后你将词串起来构成音频片段的听写文本.
- 相比于传统的流水线形式的算法,端到端的深度学习即是你训练一个巨大的神经网络, 输入就是一段音频,输出直接是听写文本 .其直接绕过了传统流水线机器学习系统的很多步骤.
- 但是需要注意的是,你可能需要大量数据才能让系统表现得更好. 例如当你只有3000h的语音数据时,原先的机器学习系统会表现得更好,但是当你有10000h的语音数据或者是1000000h的语音数据时,端到端方法就开始体现出优势了. 即小规模数据时流水线方式表现更好,但是当大数据集时,端到端的学习效果会更好.
- 倘若是中等数量级别的数据,我们也可以取中间的方法,绕过特征提取的环节直接输出特征提取得到的音位.
Face recognition example
- 当仔细观察人脸识别系统中的相机所得相片会发现, 人可以从各种角度靠近门禁系统,所以相机得到的照片人所在的位置不固定,而且面部出现的位置和大小也各有差别 ,例如当人比较靠近相机时,脸会比较大,人脸比较远离相机时,脸会比较小.
- 所以系统识别时,不是直接将相机所得图片喂到神经网络中,而是 一个多部方法,先检测出相片中的人脸,找到人脸位置.然后放大图片并裁剪图片使人脸居中显示,将此图片放到网络中,让网络去学习或者估计人脸的身份
- 研究人员发现,这个问题还可以分解为两个更简单的步骤:
- 弄清人脸在哪里.
- 看着脸,弄清楚这是谁.
- 对于辨认人脸的步骤,系统已经储存了公司每个员工的照片信息, 我们要做的是将检测到的人脸与数据库中的人脸进行比较 .
- 这个例子告诉我们,即使你没有足够的数据来进行端到端学习,但是有足够的数据来进行子任务1和子任务2.将其拆分为两个步骤更好~.
More example
Machine translation
- 传统上,机器翻译系统也有一个很复杂的流水线:英文--得到文本--文本分析--提取特征-...-中文
- 现在英文到中文的翻译已经有很多数据对,所以目前端到端的深度学习在机器翻译领域非常好用.
Estimating child's age
- 通过观察一个孩子手部的x光照片,估计一个孩子的年龄.
- 传统上,拍摄x光--分割出每一块骨头--分辨出骨头所在部位--查表看儿童对应段骨头的平均长度--估计儿童的年龄.
- 但是这个例子还不能使用端到端的方式去训练这个任务,因为我们没法获得足够多的数据去训练这个任务.
2.10 Whether to use end-to-end learning是否要使用端到端学习
pros and cons 优点和缺点
Pros
- 让数据自己说话.
- 如果你有足够多的(x,y)数据,不管从x到y最合适的函数映射是什么,如果你训练一个足够大的神经网络,希望这个神经网络能够自己搞清楚.相比于传统的机器学习方法,更能够捕获数据中的任何统计信息,而不是引入人类的成见.
- 例如举个例子:在语音识别领域,早期的识别系统有音位的概念--就是基本的声音识别单元.NG认为音位是人类语言学家生造出来的,NG认为音位实际是语音学家的幻想.用音位描述也许可行,但是 不要强迫你的学习算法以音位为单位进行思考,如果你让你的学习算法学习它想学习的任意的表示方式而不是使用你的学习算法使用音位作为表示方式,那么整体表现可能会更好.
- 所需手工设计的组件更少
- 能简化你的设计工作流程,你不需要花太多时间去手工设计功能,手工设计这些中间表示方式.
Cons
- 需要大量的数据
- 它排除了可能有用的手工设计组件
- 机器学习研究人员一般都比较鄙视手工设计的东西,但是如果你的数据量不够的话.你的学习算法没办法从很小的训练集数据中获得洞察力,所以手工设计的组件在这种情况下是把人类知识直接注入算法的途径.这有时候并不是一件坏事,有时候非常有效.
- NG认为机器学习系统有两个重要的知识获取来源,一个是数据另一个是人工设计的东西,可能是组件,功能或者其他的东西.
- 当你有成吨的数据时,手工设计的东西就不太重要了,但是你没有太多的数据时,构造一个精心设计的系统实际上可以将人类对这个问题的很多认识直接注入到问题里.
Key question
- 是否使用端到端的算法取决于问题:你是否有大量的的数据能够使系统直接学到从x到y足够复杂的函数.
posted @
2017-11-07 17:15
WUST许志伟
阅读(
1567)
评论()
编辑
收藏
举报