
Transformer 是怎么輸出新內容如果說 Transformer 的 Encoder編碼器是一個閱讀理解專家負責把原文拆解、消化成深度的語義特征那么 Decoder解碼器就是一個寫作翻譯專家負責根據這些理解把新的句子一個字一個字地“憋”出來。為了實現這個目標解碼器在架構上比編碼器多出了一些非常特殊的設計。1. 核心橋梁交叉注意力 (Cross-Attention)**解碼器怎么知道編碼器讀懂了什么**秘密就在它獨有的交叉注意力層Encoder-Decoder Attention中。在上一輪我們聊過 Q、K、V 的角色。在解碼器的這一層里Q、K、V 發(fā)生了一次“異地戀”QQuery來自解碼器自己 解碼器根據當前已經寫出的半句話發(fā)出查詢“我接下來需要一個表示‘動作’的詞原文里哪個部分能給我線索”KKey和 VValue來自編碼器 編碼器把它消化好的整句話的特征作為 K 和 V 暴露出來。于是解碼器的 Q 去匹配編碼器的 K找到原文中相關的部分然后把對應的 V 提取過來。這就是解碼器“參考原文”的本質機制。2. 蒙眼狂奔掩碼自注意力 (Masked Self-Attention)除了看原文解碼器也要看自己已經寫出的詞也就是自注意力。但這里有一個極其嚴格的限制絕對不能偷看未來。在訓練時我們是一次性把目標句子喂給解碼器的。如果讓詞匯像在編碼器里那樣自由建立注意力前面的詞就會“偷看到”后面的詞這就像是開卷考試直接抄了答案模型什么都學不到。解決方案Mask掩碼。模型會在注意力矩陣的高維空間里把“當前詞”之后的所有位置強行遮擋數學上就是給未來的詞加上一個無窮大的負數 經過 Softmax 后權重就變成了 0。這樣每一個詞在計算 QKV 時只能把注意力放在自己和自己之前的詞上。3. 詞匯的誕生回歸自回歸 (Autoregressive)萬事俱備解碼器是如何在推理真實聊天階段像擠牙膏一樣把句子寫出來的呢這是一個被稱為自回歸Autoregressive的嚴格循環(huán)過程1輸入啟動信號告訴模型開始說話解碼器接收一個特殊的起始符號通常記為 Begin of Sentence并結合位置編碼進入網絡。2生成第一個詞結合交叉注意力求助解碼器通過交叉注意力層參考編碼器的特征然后在最后一層的輸出經過 Softmax 計算出詞表假設有 5 萬個詞中每個詞的概率。選出概率最高的詞比如生成了 “I”。3自產自銷循環(huán)輸入吃掉自己的輸出將剛剛生成的 “I” 和之前的 拼在一起作為下一輪的已知輸入喂回給解碼器?,F在它看著 I再次計算預測出下一個詞比如 “l(fā)ove”。4觸發(fā)停止信號直到輸出 EOS結束符這個過程不斷循環(huán) I love AI…直到模型在某一步預測出的最高概率詞是代表句子結束的特殊符號 End of Sentence整個生成過程徹底結束。 一個關于 ChatGPT 的“美麗誤會”當年 Google 提出 Transformer 時用于機器翻譯它是由 Encoder Decoder兩部分組成的。但 OpenAI 在研發(fā) GPTGenerative Pre-trained Transformer系列時做了一個非常大膽的決定直接砍掉 EncoderChatGPT 的底層架構GPT-3 / GPT-4是一個純解碼器Decoder-only模型。它把用戶的提示詞Prompt和自己生成的回答一視同仁全部當成一個長長的序列。它不再需要“交叉注意力”去連結兩個不同的網絡而是只用“掩碼自注意力”不斷地玩“根據上文猜下一個詞”的游戲。事實證明只要模型足夠大、數據足夠多大力真的能出奇跡這種純解碼器架構最終統(tǒng)一了大語言模型的江湖。