一文徹底搞懂 Transformer - 總體架構
一、RNN 編碼器 - 解碼器架構
序列到序列模型(Seq2Seq):Seq2Seq 模型的目標是將一個輸入序列轉換成另一個輸出序列,這在多種應用中都具有廣泛的實用價值,例如語言建模、機器翻譯、對話生成等。
RNN 編碼器 - 解碼器架構:Transformer 出來之前,主流的序列轉換模型都基於複雜的循環神經網絡(RNN),包含編碼器和解碼器兩部分。當時表現最好的模型還通過注意力機制將編碼器和解碼器連接起來。
在 Seq2Seq 框架中,RNN 的作用主要體現在兩個方面:編碼和解碼。
編碼器: RNN 接收輸入序列,並逐個處理序列中的元素(如單詞、字符或時間步),同時更新其內部狀態以捕獲序列中的依賴關係和上下文信息。這種內部狀態,通常被稱爲 “隱藏狀態”,能夠存儲並傳遞關於輸入序列的重要信息。**
RNN 編碼器 - 解碼器架構
解碼器: RNN 使用編碼階段生成的最終隱藏狀態(或整個隱藏狀態序列)作爲初始條件,生成輸出序列。在每一步中,解碼器 RNN 都會根據當前狀態、已生成的輸出和可能的********下一個元素候選來預測下一個元素。
因此,循環神經網絡(RNN)、特別是長短時記憶網絡(LSTM)和門控循環單元網絡(GRU),已經在序列建模和轉換問題中牢固確立了其作爲最先進方法的地位。
同時,RNN 存在一個顯著的缺陷:處理長序列時,會存在信息丟失。
編碼器在轉化序列x1, x2, x3, x4
爲單個向量c
時,信息會丟失。因爲所有信息被壓縮到這一個向量中,長序列時,信息必然會丟失。
二、Transformer 總體架構
Transformer 起源: Google Brain 翻譯團隊通過論文《Attention is all you need》提出了一種全新的簡單網絡架構——Transformer,它完全基於注意力機制,摒棄了循環和卷積操作。
注意力機制: 一種允許模型在處理信息時專注於關鍵部分,忽略不相關信息,從而提高處理效率和準確性的機制。它模仿了人類視覺處理信息時選擇性關注的特點。
當人類的視覺機制識別一個場景時,通常不會全面掃描整個場景,而是根據興趣或需求集中關注特定的部分,如在這張圖中,我們首先會注意到動物的臉部,正如注意力圖所示,顏色更深的區域通常是我們最先注意到的部分,從而初步判斷這可能是一隻狼。
注意力計算 Q、K、V: 注意力機制通過查詢(Q)匹配鍵(K)計算注意力分數(向量點乘並調整),將分數轉換爲權重後加權值(V)矩陣,得到最終注意力向量。
注意力分數是量化注意力機制中信息被關注的程度,反映了信息在注意力機制中的重要性。
Transformer 本質: Transformer 是一種基於自注意力機制的深度學習模型,爲了解決 RNN 無法處理長序列依賴問題而設計的。
Transformer 總體架構: Transformer 也遵循編碼器 - 解碼器總體架構,使用堆疊的自注意力機制和逐位置的全連接層,分別用於編碼器和解碼器,如圖中的左半部分和右半部分所示。
- Encoder 編碼器:Transformer 的編碼器由 6 個相同的層組成,每個層包括兩個子層:一個多頭自注意力層和一個逐位置的前饋神經網絡。在每個子層之後,都會使用殘差連接和層歸一化操作,這些操作統稱爲 Add&Normalize。這樣的結構幫助編碼器捕獲輸入序列中所有位置的依賴關係。
- Decoder 解碼器:Transformer 的解碼器由 6 個相同的層組成,每層包含三個子層:掩蔽自注意力層、Encoder-Decoder 注意力層和逐位置的前饋神經網絡。每個子層後都有殘差連接和層歸一化操作,簡稱 Add&Normalize。這樣的結構確保解碼器在生成序列時,能夠考慮到之前的輸出,並避免未來信息的影響。
Transformer 核心組件: Transformer 模型包含輸入嵌入、位置編碼、多頭注意力、殘差連接和層歸一化、帶掩碼的多頭注意力以及前饋網絡等組件。
Transformer 的核心組件
-
輸入嵌入:將輸入的文本轉換爲向量,便於模型處理。
-
位置編碼:給輸入向量添加位置信息,因爲 Transformer 並行處理數據而不依賴順序。
-
多頭注意力:讓模型同時關注輸入序列的不同部分,捕獲複雜的依賴關係。
-
殘差連接與層歸一化:通過添加跨層連接和標準化輸出,幫助模型更好地訓練,防止梯度問題。
-
帶掩碼的多頭注意力:在生成文本時,確保模型只依賴已知的信息,而不是未來的內容。
-
前饋網絡:對輸入進行非線性變換,提取更高級別的特徵。
Transformer 數據流轉: 可以概括爲四個階段,Embedding(嵌入)、Attention(注意力機制)、MLPs(多層感知機)和 Unembedding(從模型表示到最終輸出)。
Transformer 注意力層: 在 Transformer 架構中,有 3 種不同的注意力層(Self Attention 自注意力、Cross Attention 交叉注意力、Causal Attention 因果注意力)
-
編碼器中的自注意力層(Self Attention layer): 編碼器輸入序列通過 Multi-Head Self Attention(多頭自注意力)計算注意力權重。
-
解碼器中的交叉注意力層(Cross Attention layer): 編碼器 - 解碼器兩個序列通過 Multi-Head Cross Attention(多頭交叉注意力)進行注意力轉移。
-
解碼器中的因果自注意力層(Causal Attention layer): 解碼器的單個序列通過 Multi-Head Causal Self Attention(多頭因果自注意力)進行注意力計算
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/DenAOo2flPF3S9NSB4qe-Q