编码器-解码器(encoder-decoder)
/ en-KOH-dur dee-KOH-dur /
编码器-解码器,是一种两段式的设计,专为「输入和输出是两类不同东西」的任务而生——把英文译成法文、把一篇长文章变成一段短摘要、用文字描述一张照片。难处在于,输入与输出并非一一对应:五个英文词的句子,也许要七个法文词,且顺序还不一样。编码器-解码器把活儿拆成两半来解决:「编码器」读入并消化整个输入,化成一份紧凑的内部含义;「解码器」再从这份含义出发,一块一块地生成输出。
想想一位老练的人类口译员。你说话时,他不会逐字翻译;他先听完你整句话,领会你的本意——此刻那是一个停留在他脑中、已脱离原词的念头——再用另一种语言自然地把这个念头说出来。编码器就是「倾听与理解」那一半;它形成的含义,是一束数字,有时被称作「上下文」。解码器则是「说出口」那一半,一步步搭起输出,每新出一块,既受那份上下文的指引,也受它自己已经说出的东西的指引。
这种模式无处不在:机器翻译、摘要、语音转文字、图像配文,甚至从一张带噪图画出一张干净图。早期版本有个实打实的瓶颈——编码器得把一段长输入硬塞进一份固定大小的上下文里,长输入便被糟蹋。补救之道叫作「注意力」,它让解码器在写每一个词时,都能回头查看编码器中途留下的所有笔记,并聚焦于相关的那些。注意力强大到后来长成了 Transformer,而 Transformer 本身就建立在编码器-解码器的思想之上——于是这个老设计,悄悄撑起了现代 AI 的大半江山。
翻译「猫坐下了」:编码器读完这三个词,把它们叠成一个承载含义的「上下文向量」;解码器再依次吐出「le」「chat」「s'est assis」——每个法文词,都是用那份上下文、加上已经吐出的词共同选定的。
先把整段输入理解透,再一块一块地把输出说出来。
编码器的活儿是「理解」,解码器的活儿是「生成」。把长输入硬塞进单一固定上下文,是它最初的软肋——而「注意力」(让解码器重新回看整段输入)正是补上这个软肋、并催生 Transformer 的突破。