首先,我们可以做这样简单的归纳:流水线适合传统机器学习算法,端到端适合深度学习算法;    【不绝对,但大多数情况下适用】

 

模型1-情感分类

假如我们正在构建一个情感分类的系统, 输入一句话,输出正面还是负面评论,如

这个拖把非常好用----正面,

这个产品非常不好用----负面,

 

对于流水线系统

可能包含多个组件,如下图

解析器:一种通过关键词识别技术对文本进行注释的系统,如词性标注,获得如下句子:这个拖把(名词)非常好用(形容词)

普遍情况下可以理解为特征工程

情感分类器:一种学习算法,输入带标注的文本,输出句子情感

解析器的标注对这个算法帮助很大:通过给形容词一个较高的权重,使得算法能很快找到“非常”这样的重要词汇,而忽略“这个”不重要的词汇

 

对于端到端系统

模型直接连接了输入和输出

 

神经网络常用于端到端系统, 但是端到端系统不适用于所有情况,不严谨的总结一句:端到端系统需要大量的数据和大规模的模型

 

模型2-自动驾驶系统

流水线不只是串行的系统,也可以是并行的系统,如自动驾驶模型

它包含了 3 个组件

检测车辆:

检测行人:

路径规划:

流水线中的系统并不一定都需要学习,如路径规划

 

自动驾驶端到端系统如下

显然自动驾驶端到端不如流水线好实现

 

流水线 vs 端到端

设计模型时如何选择流水线或者端到端呢,有如下依据

1. 数据量大小

流水线加入了认为设计的特征描述,使得算法更容易学到有用的知识,对于数据量不太大的模型,流水线能加速收敛,而端到端可能还没学到有用的知识就已经用完了样本

2. 数据获取难度

以自动驾驶为例,

对于流水线系统,检测车辆、检测行人都很容易获取大量的数据,这方面的研究已经很成熟;

对于端到端系统,直接获取<图像,操作方向>这样的数据是非常困难的;

3. 任务的简单化

详情参看下面参考资料 P96

我简单总结如下:如果一个任务分解成流水线后变得简单,那就选择流水线

4. 输出更为丰富的 label

通常输出 label 为 0-1,假设我们需要更加丰富的输出,如

输入一种图片,输出对图片的文字描述,一句话,

此时选择端到端系统

 

 

 

参考资料:

吴恩达:完整翻译版《机器学习要领》