陈曦,朱小栋
第九部分 端到端深度学习
第四十七章 端到端学习的出现
一般来说,解决情感分析问题,分成以下两步:
对一句话进行语法分析(例如什么词性),再是放入情感分类器中进行分类。而端到端学习则如下图所示:
第四十八章 更多端到端学习的例子
语音识别系统,常规解决方案分成下图中的三个步骤(pipeline):
而相反的,端到端学习(pipeline):
自动驾驶车的常规解决方案(pipeline):
同样的,端到端方法(pipeline):
第四十九章 端到端学习的优点和缺点
传统方法的坏处:特征是手工设计(hand-designed)的,丢失了信息。例如,语音识别,利用音位(phonemes)代表现实的语音是一个不理想的估计,这会限制语音识别系统的表现。
好处:在语音识别这个例子中,抓取的MFCC(可见上面的图)特征可以稳健保留一些语音的属性且不影响到内容(说话者地高音)。除此之外,某种程度上说,音位是可以代表基本的声音组成的。
那么端到端学习呢?
由于系统缺少手工设计的特征,当训练集很少的时候,端到端学习比手工设计的管道(pipeline)效果要差。如果训练数据很大则无妨,并且很大的神经网络搭配足够多的训练数据则有可能会得到很好的结果(最优的错误率)。
端到端学习需要大量的labeled data(否则要小心使用)。
如果你的训练集非常小,那么此时就要hand engineering了。
如果你不用端到端学习,那么就要决定你管道中的步骤了。
第五十章 选择管道的组成:数据的可利用性
对于传统的系统设计,一个很重要的考虑因素是你是否可以轻易的收集到pipeline上每个成分components的数据。例如,自动驾驶,你需要大量标记的车和行人,而这样的数据你是可以在网上找到大量的数据集的(相对容易)。
相反,此时用端到端则需要巨大的驾驶量来涵盖各种可能的场景。
因此,如果有大量的可用的数据适用于中间模块(intermediate modules),那么此时更适合用非端到端的方法了。
第五十一章 选择管道的组件:简化任务
另一个需要考虑的因素是每一个组件解决的难度,举个例子,检测暹罗猫。
纯的end-to-end方法:
此时,你同样可以用以下两步(更简单学习的)去做分类:
总而言之,当决定流水线组件的内容组成时,试着构建这样的流水线,其中每个组件都是一个相对 “简单” 的功能,因此只需要从少量的数据中学习。
第五十二章 直接学习丰富的输出(rich outputs)
传统的输出:
而加速发展的深度学习,有了如下新的趋势:
例子: