序列模型與Transformer

序列到序列(sequence-to-sequence)

/ SEE-kwens too SEE-kwens /

序列到序列,是給一整族任務定下的一種框架:進來一個序列,產出另一個不同的序列,而兩者不必等長。翻譯是教科書般的例子——五個英文詞或許變成三個法文詞。把一篇文章縮成一段、把語音轉寫成文字、把一個問題變成一個答案,也都是。核心思想是:模型把變長的輸入映到變長的輸出,而非產出一個固定的標籤。

經典的配方有兩部分接力工作。編碼器讀完整段輸入,把它的意義壓進內部向量;解碼器隨後一次生成一個詞元的輸出,每一步都同時以編碼器的理解、以及它自己迄今所產出的內容為條件。早期的序列到序列模型把整段輸入擠進單獨一個摘要向量,這在長輸入上憋得喘不過氣——而正是為了緩解這個瓶頸,注意力機制才被發明出來,讓解碼器可以按需回望輸入的任何部分。

序列到序列是一個統合性的洞見:驚人地多的問題,其實不過是「把這個序列改寫成那個序列」,而一旦你這樣看它們,一套架構便能通吃。這一框架如此通用,以至於連那些看著不像序列的任務——答冷知識、解數學應用題——都能被鑄成「文字進、文字出」。這份通用很有力,卻也可能恭維人:把一個任務表述成序列到序列,能讓模型處理得了它,卻絲毫沒說模型那流暢的輸出究竟對不對。

語音轉文字:輸入是一串音訊幀,輸出是一串字母或詞,二者長度天差地別。同一套序列到序列框架也能應付翻譯、摘要與程式碼生成——變的只是資料。

進來一個序列,出去一個不同長度的序列——一個框架,多種任務。

最初的序列到序列瓶頸——把整段輸入塞進一個固定向量——正是催生注意力的那個敗筆。明白這點便能串起歷史:注意力並非 Transformer 的發明;它最早是為了拯救序列到序列翻譯而出現,後來才成了整套架構本身。

又稱
seq2seq序列到序列encoder-decoder learning