全文摘要
端到端模型因其一次性完成任务的能力而备受青睐,它简化了模型结构,减少了误差累积,从而提高了效率。然而,这种模型也存在一定的挑战,尤其是其作为“黑盒”系统的可解释性较低。尽管如此,端到端模型在自动语音识别、图像分类等领域得到了广泛应用。为了进一步提升其性能和可接受度,有时需要与传统分步处理方法相结合。未来研究的重点之一是增强端到端模型的可解释性和性能。
端到端的模型的话,其实很多的东西对我们来讲是一个黑盒子,所以它的可解释性会差一些。最近有些网友想了解什么是端到端的模型,我用一个视频来给大家讲清楚。一般对于一个复杂的任务来讲,我们通常习惯把这个任务把它分解成若干个模块。比如像这里面我们给定一个输入,我们在经过若干个模块之后,我才得到一个输出。也就是先解决第一个问题,在它的基础上再解决第二个问题,然后再解决第三个,最后我们得到了一个输出。这种解题思路是我们平时很容易想到的一种方式。相反我们还有一种方式就是给定一个输入,我通过一步就可以得到一个输出。然后在这里我们可以联想一下,这里每一个方框它都是一个模型。我们只需要通过一个模型就可以把一个输入转换成一个输出。但在这里面我们经历了若干个模型的这种线性的串联。在这两种方式下,第二种方式我们把它叫做端到端的解决方法。
下面我来举一个具体的例子,我们来联想一下同声传译的场景。首先我们实际上它的输入是一个用户的speech,就是他说了一句话。接下来我们需要把这个speech转换成一个文本的形式,这个过程我们也把它叫做语音识别,然后这个文本可能是中文,然后现在的目标需要把这个中文转换成英文。接下来的流程就是把这个中文转换成英文的文本,这个过程我们也把它叫做机器的翻译。下面再把文本把它转换成一种语音的方式,然后再传递给对方。这个过程我们把它也叫做TTS,叫text to speech。这个就是一个比较经典的流程,所以这个流程里面我们包含了若干个步骤,而且这个过程里面涉及到了很多不同的模型。如果接下来想把它转换成端到端的解决思路,实际上我们需要做的事情就是我们要构造一个模型,把中文的speech把它转换成英文的speech。所以这里面我们只需要一个模型就可以解决当前的问题。下面我们再考虑一个多模态的场景。比如给定一个文本和图片,希望模型可以给我们返回对这个图片的一种解释。所以我们返回的是一个文本,这个有点像GPT for o它所支持的那种功能。这里的文本我们可以把它联想为是一个prompt。所以打个比方,我们通过prompt希望大模型可以帮我们解释这个图片里面到底包含哪些人或者哪些物体。它能够返回图片里的一些相应的物体。
按照我们上面的这个逻辑,我们实际上可以很容易打造一套AI的系统。比如输入我们有图片以及文本,然后接下来要把这个图片和文本我们放到大模型里面。对于这一块来讲,我们知道大模型本身它就是对于文本是很友好的。所以像文本这种类型的数据,它可以直接进到大模型,作为一个prompt的一部分。但是对于图片来讲,它跟大模型的文本属性是不太一样的。所以我们一个比较常见的做法就是先把图片做一个encoding,再设计一个小型的,比如说adapter,把图片的表示把它转换成文本的表示,再一起把它放到大模型里面。然后最终,我们希望它可以输出我们想要的答案。那相反,如果我们想打造一个端到端的解决方案,那我们实际上需要设计一套模型,然后它能接受图片以及文本,然后这两个信号,它直接可以作为我们模型的输入,然后接下来再输出相应的文本,这种模型我们把它叫做端到端的模型。
还有像其他的场景,比如说我们想设计一个机器人,让机器人去捡垃圾。按照我们传统的流程,我们实际上可以通过视觉的算法,然后先识别垃圾所在的位置。比如说它的3D的坐标,然后再通过机械臂的控制去把垃圾捡起来。所以这个本身也是分成了若干个步骤。如果我们把它设计为端到端的模式,实际上我通过视觉直接去驱动我的机械臂来去寻找垃圾,去捡起来。下面来简单的探讨一下端到端的方法有哪些好处和不太好的点。首先是好处,第一个好处我们把它叫做latency,也就是延迟性。所以端到端的模型,因为我们只需要通过一步就可以完成我们的任务,所以通常情况下它的延迟是比较小的。所以很多时候我们的AI系统如果要求实时性的话,那其实端到端的方法是我我们的首选。这也是为什么像GPT fo它所生成的一些图片也好,文本也好,就会效率上很高。相反如果我们采用这种标准化的流程的话,它的延迟会稍微大一点。
然后第二个好处就是关于模型的performance,就是它的效果。从一个准确率的角度来讲,端到端的模型通常情况下要优于这种标准化的流程。当然前提条件是我们要把它训练好。我们下面来看一下这种标准化的流程。对于这个流程来讲,我们把一个复杂的问题拆解成了若干个阶段。然后每个阶段是由模型来驱动,而且模型本身它是有一定的错误率的。所以当我把一个复杂的问题把它拆解为这种流程的时候,我们可以认为最终的错误率是累加的。所以这就导致当我把一个复杂的问题把它拆解成越长的阶段的时候,我们的错误率会不断的累加,最后可能我们得不到一个满意的结果。然后第三个就是灵活性。假如我们未来可能有一个新的任务类型,那对于这种标准化流程来讲,我们可能甚至去彻底的改变流程本身,所以它的代价会比较大。但对于端到端的模型来讲,我们可能只需要去收集一个新的领域的数据,我们就可以接着进行一个训练。
然后下面我们来看一下端到端模型的一些缺点。第一个缺点就是训练的难度。因为我们需要把所有的信号把它合在一起来训练同一个模型。所以这里的训练难度相对于大一些,而且我们所需要的训练数据也相对于更多一点。然后第二个也是我觉得比较大的挑战,就是解释性。对于这种标准化流程,我们实际上可以很清楚的看到每一步到底在做什么。但相反如果我们有端到端的模型的话,其实很多的东西对我们来讲是一个黑盒子,所以它的可解释性会差一些。这就导致当我们训练好了端到端的模型,然后这个模型效果可能不太好,或者我把这个模型上线了,然后它出现了一些问题。那这个时候就比较难去发现潜在的问题在哪里。以上是对于端到端模型的简单的解释。那遇到一个新的问题,我们到底采用端到端,还是使用这种标准化的流程呢?其实没有一个正确的答案。但是从一个发展的角度来讲,我们还是更倾向于打造一个端到端的解决方案。