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