Transformer是奠定現(xiàn)代人工智能(尤其是大語(yǔ)言模型,例如: CHATGPT,DeepSeek等)的基石架構(gòu),也是引爆這一輪AI技術(shù)革命的奇點(diǎn)。所以理解這個(gè)架構(gòu)是非常必要的!
因?yàn)樽蛱煊凶x者問(wèn)關(guān)于Transformer架構(gòu),對(duì)這個(gè)還很模糊,所以這兩天我把Transformer詳細(xì)基礎(chǔ)的寫(xiě)了出來(lái),考慮到大家其實(shí)對(duì)解碼器和架構(gòu)的組成有一些不足,我在后面添加了專(zhuān)門(mén)的數(shù)據(jù)在結(jié)構(gòu)之間的流動(dòng)幫助大家理解
一、 核心思想:為什么需要 Transformer?
在 Transformer 出現(xiàn)之前,處理序列數(shù)據(jù)(比如句子)的主流模型是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),特別是其變種 LSTM 和 GRU。
RNN 的工作方式像是一個(gè)人逐字閱讀句子:
讀第一個(gè)詞。
記住它的信息,然后讀第二個(gè)詞。
結(jié)合第一個(gè)詞的信息來(lái)理解第二個(gè)詞,然后更新記憶,再讀第三個(gè)詞……
這種“依次處理”的模式有兩個(gè)致命弱點(diǎn):
無(wú)法并行計(jì)算:你必須處理完第 N 個(gè)詞才能處理第 N+1 個(gè)詞,這在處理長(zhǎng)文本時(shí)效率極低,限制了模型在現(xiàn)代大規(guī)模硬件(如 GPU)上的訓(xùn)練速度。
長(zhǎng)期依賴(lài)問(wèn)題:雖然 LSTM 等模型有所緩解,但信息在長(zhǎng)序列中傳遞時(shí),仍然會(huì)逐漸丟失或扭曲。句子末尾的詞很難“記住”句子開(kāi)頭的詞的精確信息。
Transformer 的革命性思想是:徹底拋棄 循環(huán) 和 依次處理,采用一種能夠一次性看到并處理整個(gè)序列中所有詞的方法。
它的核心就是 “自注意力機(jī)制”(Self-Attention)。
我們?cè)诶斫饩渥?"The animal didn't cross the street because it was too tired." 中的 "it"。為了搞清楚 "it" 指的是 "animal" 還是 "street",你需要同時(shí)關(guān)注句子中的其他詞。RNN 是慢慢地把信息傳遞過(guò)來(lái),而 Transformer 則允許 "it" 直接與 "animal" 和 "street" 等所有詞進(jìn)行 "對(duì)視",并根據(jù)相關(guān)性強(qiáng)度來(lái)判斷 "it" 到底指誰(shuí),這個(gè)方法一聽(tīng)就很可行??!
二、 整體架構(gòu):可以類(lèi)比成一個(gè)翻譯團(tuán)隊(duì)
首先借用大神的一張圖了解大體結(jié)構(gòu):
Transformer 最初是為了機(jī)器翻譯任務(wù)而設(shè)計(jì)的,其結(jié)構(gòu)也像一個(gè)由“編碼器(Encoder)”和“解碼器(Decoder)”組成的團(tuán)隊(duì)。
編碼器 (Encoder):負(fù)責(zé)“理解”輸入。
它會(huì)接收源語(yǔ)言的整個(gè)句子(例如,"我是一只貓")。
它的任務(wù)是處理這個(gè)句子,提煉出其中每個(gè)詞的深層含義和上下文關(guān)系,并生成一系列富含信息的向量表示(Vector Representations)。你可以想象成編碼器把源語(yǔ)言的句子“消化”并理解透徹了。
解碼器 (Decoder):負(fù)責(zé)“生成”輸出。
它接收編碼器生成的向量表示,以及已經(jīng)生成的目標(biāo)語(yǔ)言部分(例如,已經(jīng)翻譯出 "I am")。
它的任務(wù)是根據(jù)對(duì)源句子的理解和已生成的內(nèi)容,預(yù)測(cè)下一個(gè)最可能的詞(例如,預(yù)測(cè)出 "a")。這個(gè)過(guò)程會(huì)一直持續(xù),直到生成完整的句子。
編碼器和解碼器都不是單一的組件,而是由多個(gè)相同的層(論文中是6層)堆疊而成。我們接下來(lái)深入其內(nèi)部,看看最關(guān)鍵的部件。
三、 核心組件深入解析
1. 輸入處理:嵌入與編碼
計(jì)算機(jī)不認(rèn)識(shí)文字,只認(rèn)識(shí)數(shù)字。所以第一步是把詞語(yǔ)轉(zhuǎn)換成向量。
1.詞嵌入 (Word Embedding):每個(gè)詞會(huì)被映射到一個(gè)固定長(zhǎng)度的向量。例如,“貓”可能被表示為 [0.1, -0.4, 0.8, ...]。這些向量在訓(xùn)練開(kāi)始時(shí)是隨機(jī)的,模型會(huì)逐漸學(xué)習(xí)到讓意思相近的詞(如“貓”和“虎”)擁有更相似的向量。
2.位置編碼 (Positional Encoding):由于 Transformer 拋棄了 RNN 的順序結(jié)構(gòu),它本身無(wú)法感知詞語(yǔ)的位置。沒(méi)有位置信息,“我打你”和“你打我”在模型看來(lái)是一樣的。為了解決這個(gè)問(wèn)題,我們需要給每個(gè)詞的向量中加入“位置信號(hào)”。
3.如何實(shí)現(xiàn)? 論文中使用了一組巧妙的 sin 和 cos 函數(shù)。對(duì)于每個(gè)位置,都會(huì)生成一個(gè)獨(dú)特的向量,這個(gè)向量會(huì)被加到該位置的詞嵌入向量上。
這里 pos 是詞的位置
i 是向量的維度索引
d_model 是向量總維度。
這種設(shè)計(jì)的好處是,不同位置的編碼是獨(dú)特的,并且模型可以學(xué)習(xí)到它們之間的相對(duì)位置關(guān)系。
2. 自注意力機(jī)制 (Self-Attention):
這是 Transformer 最核心的部分。它讓模型在處理一個(gè)詞時(shí),能夠同時(shí)考慮到句子中所有其他詞對(duì)它的影響。
工作原理(三步走):
對(duì)于輸入序列中的每一個(gè)詞向量,我們都會(huì)根據(jù)它創(chuàng)建三個(gè)新的向量:
查詢(xún)向量 (Query, Q):代表了當(dāng)前詞為了理解自己,要去“查詢(xún)”或“提問(wèn)”的向量。
鍵向量 (Key, K):代表了當(dāng)前詞可以被“索引”或“標(biāo)識(shí)”的特征,用來(lái)響應(yīng)其他詞的查詢(xún)。
值向量 (Value, V):代表了當(dāng)前詞的實(shí)際內(nèi)容和含義。
這三個(gè)向量都是通過(guò)將原始詞向量乘以一個(gè)在訓(xùn)練中學(xué)習(xí)到的權(quán)重矩陣(W_Q,W_K,W_V)得到的。
計(jì)算過(guò)程如下:
第一步:計(jì)算注意力分?jǐn)?shù) (Attention Score)
1.對(duì)于一個(gè)我們正在處理的詞(比如 "it"),我們用它的 Q 向量去和句子中所有詞的 K 向量進(jìn)行點(diǎn)積(Dot Product)運(yùn)算。
2.這個(gè)點(diǎn)積結(jié)果就代表了 "it" 與其他每個(gè)詞之間的“相關(guān)性”或“關(guān)注度”。如果 "it" 的 Q 向量和 "animal" 的 K 向量方向更接近,它們的點(diǎn)積就會(huì)更大,表示關(guān)聯(lián)度高。
第二步:縮放與歸一化 (Scale & Softmax)
1.將上一步得到的所有分?jǐn)?shù)除以一個(gè)縮放因子 sqrtd_k(d_k 是 K 向量的維度)。這一步是為了防止梯度在反向傳播時(shí)變得過(guò)小,讓訓(xùn)練更穩(wěn)定。
2.然后,將縮放后的分?jǐn)?shù)輸入到 Softmax 函數(shù)中。Softmax 會(huì)將這些分?jǐn)?shù)轉(zhuǎn)換成一組總和為 1 的權(quán)重(概率分布)?,F(xiàn)在,每個(gè)詞都有一個(gè)權(quán)重,表示我們應(yīng)該對(duì)它投入多少“注意力”。分?jǐn)?shù)高的詞,權(quán)重就大。
第三步:加權(quán)求和
1.將上一步得到的權(quán)重,分別乘以每個(gè)詞對(duì)應(yīng)的 V 向量。
2.最后,將所有加權(quán)后的 V 向量相加,得到的結(jié)果就是當(dāng)前詞("it")經(jīng)過(guò)自注意力機(jī)制處理后,融合了全局上下文信息的新向量表示。這個(gè)新向量比原始向量更能理解它在句子中的角色。
公式總結(jié):
3. 多頭注意力 (Multi-Head Attention)
一次自注意力計(jì)算,像是只從一個(gè)角度去理解句子。但顯然,詞語(yǔ)之間的關(guān)系是多維度的。例如,“The cat sat on the mat” 中,“sat” 這個(gè)詞既和主語(yǔ) “cat” 有關(guān)(誰(shuí)在坐),也和地點(diǎn) “mat” 有關(guān)(坐在哪)。多頭注意力就是讓模型從多個(gè)不同的“角度”或“子空間”去理解上下文關(guān)系。
1.如何實(shí)現(xiàn)? 它不是只用一組 W_Q,W_K,W_V 矩陣,而是用多組(例如8組)。每一組都會(huì)獨(dú)立地執(zhí)行上述的自注意力計(jì)算,得到一個(gè)輸出向量。這就好比有8個(gè)“注意力頭”在同時(shí)工作,每個(gè)頭關(guān)注點(diǎn)不同。
2.整合信息:得到8個(gè)輸出向量后,將它們拼接(Concatenate)在一起,再乘以一個(gè)額外的權(quán)重矩陣 W_O,將其融合為一個(gè)最終的輸出向量。
好處:它讓模型能夠同時(shí)捕捉到多種類(lèi)型的關(guān)聯(lián),比如語(yǔ)法關(guān)系、語(yǔ)義關(guān)系等,極大地增強(qiáng)了模型的表達(dá)能力。
4. 殘差連接 (Add) 和層歸一化 (Norm)
在每個(gè)編碼器和解碼器的子層(如多頭注意力和前饋網(wǎng)絡(luò))之后,都會(huì)有兩個(gè)標(biāo)準(zhǔn)操作:
1.殘差連接 (Residual Connection):將子層的輸入 x 直接加到子層的輸出 Sublayer(x) 上,即 x + Sublayer(x)。
2.層歸一化 (Layer Normalization):對(duì)上一步的結(jié)果進(jìn)行歸一化處理。它能使模型訓(xùn)練過(guò)程更加穩(wěn)定和快速,減少對(duì)參數(shù)初始化的敏感度。
所以每個(gè)子層的完整公式是 LayerNorm(x + Sublayer(x))。
5. 前饋神經(jīng)網(wǎng)絡(luò) (Position-wise Feed-Forward Network)
在每個(gè)注意力層之后,編碼器和解碼器都會(huì)有一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)對(duì)每個(gè)位置的向量獨(dú)立地進(jìn)行一次非線性變換。它由兩個(gè)線性層和一個(gè)ReLU激活函數(shù)組成,可以看作是對(duì)注意力機(jī)制提取出的信息進(jìn)行進(jìn)一步的加工和提煉,增加模型的非線性能力。
6. 解碼器(深度講解):
子層一:帶掩碼的多頭自注意力 (Masked Multi-Head Self-Attention)
目的:“回顧已寫(xiě)內(nèi)容”。在生成下一個(gè)詞時(shí),解碼器需要知道自己前面已經(jīng)寫(xiě)了什么,以保證句子的連貫性。例如,已經(jīng)寫(xiě)了 "I am a",下一個(gè)詞很可能是 "cat",而不是重復(fù)生成 "I"。
工作方式:它和編碼器中的自注意力機(jī)制幾乎完全一樣,都是為了計(jì)算序列內(nèi)部詞與詞之間的關(guān)系。
關(guān)鍵區(qū)別:“掩碼 (Masking)”
為什么需要掩碼? 在訓(xùn)練時(shí),我們已經(jīng)知道了完整的譯文(例如 "I am a cat")。如果沒(méi)有掩碼,當(dāng)模型在預(yù)測(cè) "am" 這個(gè)詞時(shí),它會(huì)“偷看”到后面的 "a" 和 "cat",這顯然是在作弊,模型學(xué)不到真正的預(yù)測(cè)能力。
如何實(shí)現(xiàn)掩碼? 掩碼是一個(gè)“上三角矩陣”,它在計(jì)算注意力分?jǐn)?shù)后、進(jìn)行 Softmax 之前起作用。它會(huì)強(qiáng)制將所有未來(lái)位置的注意力分?jǐn)?shù)設(shè)置為一個(gè)極大的負(fù)數(shù)(例如 -1e9)。
效果:極大的負(fù)數(shù)經(jīng)過(guò) Softmax 函數(shù)后,其對(duì)應(yīng)的權(quán)重會(huì)無(wú)限接近于0。這樣一來(lái),模型在計(jì)算任意位置的輸出時(shí),其注意力權(quán)重只能分布在當(dāng)前位置和之前的位置上,從而保證了模型無(wú)法“看到未來(lái)”。
比喻:就像給模型戴上了“眼罩”,讓它在寫(xiě)每個(gè)字時(shí),只能回頭看已經(jīng)寫(xiě)好的部分,而不能偷看標(biāo)準(zhǔn)答案的后文。
子層二:編碼器-解碼器注意力 (Encoder-Decoder Attention / Cross-Attention)
目的:查看編碼層后的結(jié)果。這是連接編碼器和解碼器的核心橋梁。它讓解碼器在生成譯文的每一步,都能去關(guān)注原文中最相關(guān)的部分。
工作方式:這也是一個(gè)多頭注意力層,但它的Q, K, V 來(lái)源不同:
查詢(xún)向量 (Query, Q):來(lái)自解碼器前一個(gè)子層(即帶掩碼的自注意力層)的輸出。這個(gè) Q 向量代表了“寫(xiě)作部”當(dāng)前的需求,可以理解為:“根據(jù)我已經(jīng)寫(xiě)出的內(nèi)容(比如 'I am'),我現(xiàn)在需要什么信息來(lái)決定下一個(gè)詞?”
鍵向量 (Key, K) 和 值向量 (Value, V):全部來(lái)自編碼器棧的最終輸出(即“理解部”的最終版精讀筆記)。這兩個(gè)向量代表了原文的完整信息,并且在解碼的整個(gè)過(guò)程中是固定不變的。
比喻:解碼器(作者)拿著自己的草稿(Q 向量)去問(wèn)編碼器(原文摘要):“我的草稿寫(xiě)到這了,請(qǐng)問(wèn)你原文中哪部分內(nèi)容跟我現(xiàn)在要寫(xiě)的最相關(guān)?” 編碼器通過(guò) K, V 向量回答它,解碼器據(jù)此獲得生成下一個(gè)詞的關(guān)鍵線索。例如,當(dāng)解碼器生成到與 "貓" 對(duì)應(yīng)的位置時(shí),這一層的注意力會(huì)高度集中在編碼器輸出中代表 "貓" 的那個(gè)向量上。
子層三:前饋神經(jīng)網(wǎng)絡(luò) (Position-wise Feed-Forward Network)
目的:“消化整合,深入思考”。
工作方式:這個(gè)子層與編碼器中的前饋網(wǎng)絡(luò)完全相同。它接收來(lái)自編碼器-解碼器注意力層的輸出向量,并對(duì)其進(jìn)行一次非線性變換。
比喻:在回顧了自己寫(xiě)的內(nèi)容(Masked Self-Attention)并查閱了原文(Encoder-Decoder Attention)之后,解碼器需要一個(gè)“獨(dú)立思考”的過(guò)程,將這些信息進(jìn)行整合、加工和提煉,最終形成一個(gè)準(zhǔn)備用于預(yù)測(cè)下一個(gè)詞的、信息高度濃縮的向量。這個(gè)“獨(dú)立思考”的過(guò)程就是由前饋網(wǎng)絡(luò)完成的。
最終輸出層
當(dāng)數(shù)據(jù)流經(jīng)整個(gè)解碼器棧(例如6層)后,我們會(huì)得到一個(gè)最終的輸出向量。如何用這個(gè)向量來(lái)決定下一個(gè)詞呢?
線性層 (Linear Layer):將解碼器棧輸出的高維向量(例如512維)通過(guò)一個(gè)線性變換,投影到一個(gè)維度非常高(等于詞匯表大小,例如30000維)的向量上。這個(gè)向量被稱(chēng)為 "Logits"。
Softmax 層:將 Logits 向量中的每一個(gè)數(shù)值轉(zhuǎn)換成一個(gè)概率。數(shù)值越大的,轉(zhuǎn)換后的概率也越高。
選擇詞語(yǔ):模型會(huì)選擇概率最高的那個(gè)詞作為當(dāng)前時(shí)間步的輸出。
這個(gè) "輸入 -> 解碼器棧處理 -> 線性層 -> Softmax -> 選擇詞語(yǔ)" 的循環(huán)會(huì)一直進(jìn)行下去,直到選出的詞是特殊的句子結(jié)束符 為止。
詳細(xì)講解數(shù)據(jù)在其中的流動(dòng)方式以及各部分之間的關(guān)系。
核心架構(gòu)概覽
從最高層面看,Transformer 的 Encoder-Decoder 架構(gòu)可以表示為:
輸入序列 (X) -> [編碼器 (Encoder)] -> 上下文表示 (Z) -> [解碼器 (Decoder)] -> 輸出序列 (Y)
X: 源語(yǔ)言的詞語(yǔ)序列,例如 ("我", "是", "一只", "貓")。
Z: 由編碼器生成的、富含上下文信息的中間表示。它不是一個(gè)單一的向量,而是一組代表了輸入序列中每個(gè)詞的向量。這是連接編碼器和解碼器的橋梁。
Y: 目標(biāo)語(yǔ)言的詞語(yǔ)序列,例如 ("I", "am", "a", "cat")。
第一部分:編碼器 (Encoder) - 理解原文
編碼器的唯一目標(biāo)是“讀懂”輸入序列 X,并將其轉(zhuǎn)換成高質(zhì)量的上下文表示 Z。
數(shù)據(jù)流動(dòng)符號(hào)說(shuō)明:
->: 表示“流向”或“作為輸入”。
+: 表示向量相加(用于位置編碼和殘差連接)。
f(input): 表示 input 經(jīng)過(guò)函數(shù)/層 f 的處理。
編碼器的數(shù)據(jù)流動(dòng):
步驟 1:輸入預(yù)處理
X -> 詞嵌入 -> E_X
E_X + 位置編碼 -> X_emb
數(shù)據(jù)首先從詞語(yǔ)(X)變成數(shù)字向量(E_X),然后與位置信息向量相加,得到既包含語(yǔ)義又包含順序的最終輸入 X_emb。
步驟 2:進(jìn)入編碼器棧 (N層)
編碼器由 N 個(gè)完全相同的 EncoderLayer 堆疊而成。數(shù)據(jù)逐層向上流動(dòng),每一層都會(huì)對(duì)信息進(jìn)行提煉。
Input_L1 = X_emb
Output_L1 = EncoderLayer(Input_L1)
Input_L2 = Output_L1
Output_L2 = EncoderLayer(Input_L2) ...
Input_LN = Output_L(N-1)
Z = EncoderLayer(Input_LN) // 最后一層輸出就是最終的上下文表示 Z
編碼器總結(jié):數(shù)據(jù) X 經(jīng)過(guò)嵌入和位置編碼后,穿過(guò) N 層 EncoderLayer。在每一層,數(shù)據(jù)都通過(guò)自注意力捕捉全局依賴(lài),再通過(guò)前饋網(wǎng)絡(luò)進(jìn)行深度加工。最終輸出的 Z 是一個(gè)包含了輸入序列中每個(gè)詞的、經(jīng)過(guò)深度上下文理解的向量集合。
第二部分:解碼器 (Decoder) - 生成譯文
解碼器的目標(biāo)是利用編碼器提供的上下文 Z,并結(jié)合已經(jīng)生成的部分譯文,來(lái)預(yù)測(cè)下一個(gè)最可能的詞。
解碼器的數(shù)據(jù)流動(dòng)(以生成第 t 個(gè)詞為例)
步驟 1:輸入預(yù)處理
解碼器的輸入是到目前為止已經(jīng)生成的輸出序列 Y_partial = (y_1, ..., y_{t-1})
Y_partial -> 詞嵌入 (Embedding) -> E_Y
E_Y + 位置編碼 (Positional Encoding) -> Y_emb
步驟 2:進(jìn)入解碼器棧 (N層)
解碼器也由 N 個(gè)相同的 DecoderLayer 堆疊而成。
Z 是從編碼器傳來(lái)的,在所有層中保持不變
D_Input_L1 = Y_emb
D_Output_L1 = DecoderLayer(D_Input_L1, Z)
D_Input_L2 = D_Output_L1
D_Output_L2 = DecoderLayer(D_Input_L2, Z) ...
D_Input_LN = D_Output_L(N-1)
Decoder_final_output = DecoderLayer(D_Input_LN, Z)
單個(gè) DecoderLayer 內(nèi)部的數(shù)據(jù)流動(dòng):
假設(shè)該層的輸入為 y_in,編碼器的輸出為 Z。
A[輸入 y_in] --> B(帶掩碼的多頭自注意力);
A --> D{Add & Norm};
B --> D;
B --> D 的意思是:第一個(gè)子模塊 B(帶掩碼的多頭自注意力)處理完數(shù)據(jù)后,把它的輸出流向 D 模塊。
A --> D 的意思是:這個(gè)解碼器層最原始的輸入 A 也有一條“快捷通道”直接流向 D 模塊。
整體含義:這兩行描述第一個(gè)殘差連接 (Add & Norm)。在 D 模塊內(nèi)部,它會(huì)執(zhí)行 LayerNorm(A + B的輸出)。也就是把模塊的輸入和輸出相加,然后進(jìn)行歸一化。這個(gè)結(jié)果我們暫時(shí)稱(chēng)之為 D_out。
D --> E(編碼器-解碼器注意力);
Z[編碼器輸出 Z] --> E;
D --> E 的意思是:上一步得到的歸一化結(jié)果 D_out,現(xiàn)在作為輸入流向了第二個(gè)核心模塊 E(編碼器-解碼器注意力)。這個(gè) D_out 將被用來(lái)生成該注意力層的 查詢(xún)向量 (Query, Q)。
Z --> E 的意思是:從編碼器傳來(lái)的、代表原文完整信息的 Z,也作為輸入流向了模塊 E。這個(gè) Z 將被用來(lái)生成該注意力層的 鍵向量 (Key, K) 和 值向量 (Value, V)。
整體含義:這是解碼器最關(guān)鍵的一步。它用自己當(dāng)前的理解 (Q from D) 去查詢(xún)?cè)牡耐暾畔?(K和V from Z),看看原文的哪一部分對(duì)生成下一個(gè)詞最重要。
D --> G{Add & Norm};
E --> G;
E --> G 的意思是:E 模塊(編碼器-解碼器注意力)處理完數(shù)據(jù)后,把它的輸出流向 G 模塊。
D --> G 的意思是:模塊 E 的輸入 D_out 也有一條“快捷通道”直接流向 G 模塊。
整體含義:這描述了第二個(gè)殘差連接 (Add & Norm)。在 G 模塊內(nèi)部,它會(huì)執(zhí)行 LayerNorm(D_out + E的輸出)。這個(gè)結(jié)果我們暫時(shí)稱(chēng)之為 G_out。
G --> H(前饋神經(jīng)網(wǎng)絡(luò));
G --> J{Add & Norm};
H --> J;
J --> K[輸出 y_out];
G --> H的意思是:上一步的結(jié)果 G_out 作為輸入,流向第三個(gè)子模塊 H(前饋神經(jīng)網(wǎng)絡(luò)),進(jìn)行最后的非線性加工。
H --> J 和 G --> J 的意思是:模塊 H 的輸出和輸入 G_out,共同流入最后一個(gè) Add & Norm 模塊 J,完成第三次也是最后一次殘差連接和歸一化。
J --> K 的意思是:J 模塊處理后的最終結(jié)果,成為了整個(gè)解碼器層 K 的最終輸出 (y_out)。這個(gè) y_out 將被傳遞給下一個(gè)解碼器層,或者(如果是最后一層)傳遞給最終的預(yù)測(cè)層。
步驟 3:最終預(yù)測(cè)
Decoder_final_output -> 線性層 (Linear Layer) -> Logits
Logits -> Softmax函數(shù) -> 概率分布 (Probabilities)
解碼器棧的最終輸出經(jīng)過(guò)一個(gè)線性層和 Softmax 函數(shù),轉(zhuǎn)換成詞匯表中每個(gè)詞的概率,概率最高的詞就是最終的預(yù)測(cè)結(jié)果 y_t。
通過(guò)這種精巧的結(jié)構(gòu),Transformer 實(shí)現(xiàn)了對(duì)原文的深刻理解和對(duì)譯文的精準(zhǔn)生成,并且整個(gè)過(guò)程高度可并行化,效率極高。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.