序列模型与Transformer
序列到序列(sequence-to-sequence)
/ SEE-kwens too SEE-kwens /
序列到序列,是给一整族任务定下的一种框架:进来一个序列,产出另一个不同的序列,而两者不必等长。翻译是教科书般的例子——五个英文词或许变成三个法文词。把一篇文章缩成一段、把语音转写成文字、把一个问题变成一个答案,也都是。核心思想是:模型把变长的输入映到变长的输出,而非产出一个固定的标签。
经典的配方有两部分接力工作。编码器读完整段输入,把它的意义压进内部向量;解码器随后一次生成一个词元的输出,每一步都同时以编码器的理解、以及它自己迄今所产出的内容为条件。早期的序列到序列模型把整段输入挤进单独一个摘要向量,这在长输入上憋得喘不过气——而正是为了缓解这个瓶颈,注意力机制才被发明出来,让解码器可以按需回望输入的任何部分。
序列到序列是一个统合性的洞见:惊人地多的问题,其实不过是「把这个序列改写成那个序列」,而一旦你这样看它们,一套架构便能通吃。这一框架如此通用,以至于连那些看着不像序列的任务——答冷知识、解数学应用题——都能被铸成「文字进、文字出」。这份通用很有力,却也可能恭维人:把一个任务表述成序列到序列,能让模型处理得了它,却丝毫没说模型那流畅的输出究竟对不对。
语音转文字:输入是一串音频帧,输出是一串字母或词,二者长度天差地别。同一套序列到序列框架也能应付翻译、摘要与代码生成——变的只是数据。
进来一个序列,出去一个不同长度的序列——一个框架,多种任务。
最初的序列到序列瓶颈——把整段输入塞进一个固定向量——正是催生注意力的那个败笔。明白这点便能串起历史:注意力并非 Transformer 的发明;它最早是为了拯救序列到序列翻译而出现,后来才成了整套架构本身。
又称
另见