分享

吴恩达《Machine_Learning_Yearning》中文版:第47-49章端到端学习

本帖最后由 howtodown 于 2018-7-4 17:42 编辑

问题导读

1.构建情感分类需要哪两个组件?
2.端到端有哪些应用例子?
3.端到端学习有哪些优缺点?






上一篇:
吴恩达《Machine_Learning_Yearning》中文版:第44-46章优化验证
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24731



47.端到端学习的兴起


假设你想要构建一个系统来对产品的线上评论进行检查,并且要能够自动地告诉你给出评论的人是否喜欢这个产品。比如说,你希望系统将下面的句子识别为十分正面的评论:
这个拖把非常好用!

而下面的评论应当是十分负面的:
拖把的质量好差,我后悔买它了。

这种识别正面与负面评论的问题被称为 “情感分类”(sentiment classification) 。想要构建一个这样的系统,你的流水线模块需要有以下两个组件:
  • 解析器(parser):一种通过识别关键词汇来对文本进行注释的系统。例如,你可以使用解析器对所有的形容词和名词做标记,因此你可能会得到类似下面的句子:
    ​ 这个拖把(名词)非常好用(形容词)!
    注:实际上解析器提供了比这更丰富的文本注释,但上面这个简化的描述足以用来解释端到端深度学习。
  • 情感分类器(sentiment classifier):一种学习算法,它可以输入带注释的文本,并预测整体的情感。解析器的注释将对这个算法起到极大的帮助:通过给形容词一个较高的权重,你的算法将能很快地找到像 “非常” 这样的重要词汇,并忽视像 “这个” 这样的非关键词。

我们可以将 “流水线” 的两个组件可视化为下面的图片:
ch47_01.png
最近的趋势更倾向于用一种单一的学习算法取代此类流水线。该任务的端到端学习算法只需输入一个原始的文本 “这个拖把非常好用!” ,接着尝试直接识别其中的情感:
ch47_02.png
神经网络通常用于端到端学习系统,“端到端” 这个术语指的是我们要求学习算法直接从输入得到期望的输出,即学习算法将系统的 “输入端” 连接到 “输出端” 。
在数据量十分丰富的问题上,端到端系统往往很奏效,但它并不总是一个很好的选择。接下来的几个章节将给出更多的端到端系统的例子,并提供一些关于何时使用它们的建议。



48.端到端学习的更多例子

假设你正在构建一个语音识别系统,你的系统可能需要三个组件:
ch48_01.png
它们的工作形式如下:
  • 计算特征(compute features):提取人工设计的特征,如 MFCC (Mel-frequency cepstrum coefficients,频谱系数)特征,以此来试图捕捉对话的内容,而忽略不太相关的属性,比如说话者的音高。
  • 音素识别器(phoneme recognizer):一些语言学家人为,有一些基本的声音单元叫做 “音素” 。 例如, “keep” 中的 “k” 和 “cake” 中的 “c” 是相同的音素,而这个系统试图识别音频片段中的音素。
  • 最终识别器(final recognizer):以已识别音素的序列为序,并试着将它们串在一起,形成转录输出。
与此相反,端到端系统可能会输入一个音频片段,并尝试直接输出文字记录:
ch48_02.png
到目前为止,我们只描述了纯线性的机器学习 “流水线”:输出顺序地从一个阶段传递到下一个阶段。实际上流水线可能会更复杂。例如,这是一个自动驾驶汽车的简单流水线架构:
ch48_03.png
它拥有三个组件:一个使用相机图片检测车辆,一个检测行人,最后一个组件则为我们自己的车规划路径,从而避让车辆和行人。
并不是流水线中的每一个组件都需要进行学习。例如在文献 “robot motion planning” 中对汽车的最终路径规划提出了许多算法,而其中的一些算法并不涉及到学习。
相反,端到端的方法可能会尝试从传感器获取输入并直接输出转向方向:
ch48_04.png
尽管端到端学习已经在许多领域取得了成功,但它并不总是最佳方案。端到端的语音识别功能很不错,但我对自动驾驶的端到端学习持怀疑态度。在接下来的几章将会解释原因。


49.端到端学习的优缺点



考虑先前提到的语音识别系统的流水线:
1.png
该流水线中的许多部分都是 “人工设计” 的:
  • 频谱系数即是一套经过人工设计的特征。尽管它们提供了对音频输入的一种合理归纳,但也通过抛出一些信息简化了输入信号。
  • 音素是语言学家的发明,作为说话声音的一种不完备的表示。在某种意义上,音素是对现实语音很差的近似,因此迫使算法使用音素进行表示将限制语音系统的性能。
这些人工设计的成分限制了语音系统的潜在性能,然而这样做也有一些优点:
  • 频谱系数的特性对于处理一些不影响内容的音频属性是很有效的,比如说话者的音高。因此它们有助于讲话学习算法面临的问题。
  • 在一定程度上,音素是一种合理的语音表示方法,它们也可以帮助学习算法理解基本的声音成分,从而提高其性能。
拥有更多的人工设计成分通常可以让语音系统学习更少的数据,由频谱系数和音素所捕获的人工设计的知识对算法从数据中获取的知识进行了补充。当我们的数据量不是很多时,这些知识是非常有用的。
现在,考虑端到端系统:
2.png
这个系统缺乏人工设计知识,因此当训练集很小的时候,它的表现可能比人工设计的流水线更加糟糕。
然而当训练集很大时,它不会收到频谱系数或者语音表示方法的限制。如果学习算法是一个足够大的神经网络,且喂进去许多的训练数据,就有可能做得更好,甚至达到最优错误率。
端到端学习系统在 “两端” —— 输入端和输出端拥有大量标记数据时,往往做得更好。在这个例子中,我们需要一个大数据集(包含<音频,文本>对)。当这种类型的数据不可用时,使用端到端学习则需非常谨慎。
如果你正在研究一个训练集非常小的机器学习问题,那么算法的大部分知识都将来自于你的人类洞察力,即你的 “人工设计” 成分。
如果不使用端到端系统,你将不得不决定在流水线中需要有哪些组件,以及它们应该如何连接在一起。在接下来的几章中,我们将对这类流水线的设计提出一些建议。


原文链接

本帖被以下淘专辑推荐:

已有(1)人评论

跳转到指定楼层
jiangzi 发表于 2018-7-7 13:39:48
中文版:第47-49章端到端~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条