首先,我们可以做这样简单的归纳:流水线适合传统机器学习算法,端到端适合深度学习算法; 【不绝对,但大多数情况下适用】
模型1-情感分类
假如我们正在构建一个情感分类的系统, 输入一句话,输出正面还是负面评论,如
这个拖把非常好用----正面,
这个产品非常不好用----负面,
对于流水线系统
可能包含多个组件,如下图
解析器:一种通过关键词识别技术对文本进行注释的系统,如词性标注,获得如下句子:这个拖把(名词)非常好用(形容词)
普遍情况下可以理解为特征工程
情感分类器:一种学习算法,输入带标注的文本,输出句子情感
解析器的标注对这个算法帮助很大:通过给形容词一个较高的权重,使得算法能很快找到“非常”这样的重要词汇,而忽略“这个”不重要的词汇
对于端到端系统
模型直接连接了输入和输出
神经网络常用于端到端系统, 但是端到端系统不适用于所有情况,不严谨的总结一句:端到端系统需要大量的数据和大规模的模型
模型2-自动驾驶系统
流水线不只是串行的系统,也可以是并行的系统,如自动驾驶模型
它包含了 3 个组件
检测车辆:
检测行人:
路径规划:
流水线中的系统并不一定都需要学习,如路径规划
自动驾驶端到端系统如下
显然自动驾驶端到端不如流水线好实现
流水线 vs 端到端
设计模型时如何选择流水线或者端到端呢,有如下依据
1. 数据量大小
流水线加入了认为设计的特征描述,使得算法更容易学到有用的知识,对于数据量不太大的模型,流水线能加速收敛,而端到端可能还没学到有用的知识就已经用完了样本
2. 数据获取难度
以自动驾驶为例,
对于流水线系统,检测车辆、检测行人都很容易获取大量的数据,这方面的研究已经很成熟;
对于端到端系统,直接获取<图像,操作方向>这样的数据是非常困难的;
3. 任务的简单化
详情参看下面参考资料 P96
我简单总结如下:如果一个任务分解成流水线后变得简单,那就选择流水线
4. 输出更为丰富的 label
通常输出 label 为 0-1,假设我们需要更加丰富的输出,如
输入一种图片,输出对图片的文字描述,一句话,
此时选择端到端系统
参考资料:
吴恩达:完整翻译版《机器学习要领》