端到端模型就是将可以多步骤/模块解决的任务使用单个模型来建模解决,一般在深度学习中比较常见。使用多步骤、多模型解决一个复杂任务的时候,一个明显的弊端是各个模块训练目标不一致,某个模块的目标函数可能与系统的宏观目标有偏差,这样训练出来的系统最终很难达到最优的性能;另一个问题是误差的累积,前一模块产生的偏差可能影响后一个模块。
端到端模型仅使用一个模型、一个目标函数,就规避了前面的多模块固有的缺陷,这是它的优点之一;另一个优势是减少了工程的复杂度,一个网络解决所有步骤,也就是「炼丹」。 成也萧何败也萧何。
端到端模型的一个劣势,就是贡献分配问题,这也是深度学习的一个弊病。在多模块解决方案中,我们可以比较清晰地看到/检测每一个模块的性能,也就是贡献;而在端到端模型中,我们很难确定模型中「组件」对最终目标的贡献是什么样的。换一句话说,模型变得更加「黑盒」了,也就降低了网络的可解释性。另外,端到端模型的灵活性也更低,比如原本的多个模块中数据的获取难度不一样的时候,可能不得不依靠额外的模型来协助训练。
一个神经网络起到信息过滤的作用,数据中包含的大量信息,经过层层过滤,对任务有用的部分被留下,无关的部分都滤掉,最终只留下标签信息。过滤哪些、留下哪些,就全靠训练了,只要模型结构能适应任务,那这个过程是可以进行的。需要多少数据又由模型的复杂度决定(请参考PAC学习理论),数据不足的时候可以考虑增强等技巧。