Transformer 的三大優化技術!!
Transformer 是一種基于自注意力(Self-Attention)機制的深度學習模型,最早由 Vaswani 等人在 2017 年的論文《Attention Is All You Need》中提出。
與傳統的循環神經網絡(RNN)和長短期記憶網絡(LSTM)不同,Transformer 丟棄了遞歸計算結構,而是通過自注意力機制并行處理輸入序列,從而大大提高了計算效率。
Transformer 廣泛用于自然語言處理(NLP)和計算機視覺(CV)領域,如機器翻譯、文本生成、文本分類、目標檢測等。
圖片
模型架構
Transformer 由兩個主要部分組成:編碼器(Encoder)和解碼器(Decoder)。
編碼器負責對輸入序列進行編碼,生成一個上下文相關的表示。解碼器根據編碼器生成的表示和解碼器的歷史輸出,逐步生成目標序列。
圖片
編碼器(Encoder)
編碼器由多個相同的層堆疊而成。每一層包含兩個主要部分:
- 多頭自注意力機制(Multi-Head Self-Attention)
自注意力允許模型為序列中的每個詞分配不同的權重,并根據上下文信息調整這些權重。 - 前饋神經網絡(FFN)
每個自注意力機制之后都有一個前饋神經網絡(通常是兩個全連接層和一個ReLu激活函數)。
前饋神經網絡的主要作用之一是為每個位置的表示引入非線性變換,從而增加模型的表達能力。
每個子層后都采用了殘差連接和層歸一化,以穩定訓練和加速收斂。
解碼器(Decoder)
解碼器的結構與編碼器類似,由多個相同的層堆疊而成。每一層包含三個主要部分:
- 掩蔽多頭自注意力機制(Masked Multi-Head Self-Attention)
屏蔽未來的信息,確保模型在生成時不會看到未來的 Token。 - 編碼器-解碼器注意力機制
與編碼器的多頭自注意力機制類似,但這里會關注來自編碼器的輸出。 - 前饋神經網絡(FFN)
與編碼器類似,每個子層后也采用了殘差連接和層歸一化。
對 Transformer 不熟悉的同學,可以參考下面這篇文章。
Transformer 的三大優化技術
在 Transformer 算法的基礎上,研究人員提出了多種優化技術,以提升其性能和訓練效果。
以下是三種重要的優化技術:Pre-Norm、RoPE 和 MoE
一、Pre-Norm
Pre-Norm 是對傳統 Transformer 中層歸一化應用順序的優化。
在傳統的 Transformer 中,LayerNorm 主要用于殘差連接后,如下所示:
其中:
- X 是輸入向量
- 可以是 Self-Attention 或 FFN (前饋網絡)
- 是歸一化后的輸出
這種 Post-Norm 結構雖然有效,但在訓練深層模型時,梯度可能會出現消失或爆炸,導致訓練不穩定。
Pre-Norm 結構將 LayerNorm 放置在子層(Self-Attention 或 FFN)之前:
這帶來的主要好處是
- 更穩定的梯度傳播:梯度的方差在深度傳播過程中更容易保持穩定,有助于訓練超深的 Transformer 模型。
- 更快的收斂:由于梯度穩定,優化器可以更快地找到較優解。
二、 RoPE
在原始 Transformer 中,位置編碼采用固定的正弦、余弦函數
這種方法有兩個主要問題
- 缺乏旋轉不變性:不能直接推廣到長文本。
- 固定編碼:不能動態調整。
RoPE(旋轉位置編碼)是一種改進的位置編碼方法,用于增強 Transformer 模型處理長序列時的能力。RoPE 通過旋轉矩陣引入位置相關性,使得注意力計算具備相對位置信息。
RoPE 的基本思想是通過對輸入的查詢(Q)和鍵(K)向量進行旋轉操作,來引入位置信息。
具體來說,對于 d 維的特征表示,將其前 d/2 維和后 d/2 維分別組成復數表示,并施加一個位置相關的旋轉變換。
- 配對維度
對于每個 token 的查詢或鍵向量,假設其維度為 d,將其拆分為 對。
這些對由索引 i 標識,其中 i 的范圍從 1 到 。 - 旋轉每對
給定向量 x(假設維度為 2D),RoPE 采用二維旋轉矩陣:
對向量進行旋轉。
假設對于每一對 ,則經過 RoPE 變換后:
其中角度 是根據對的索引 i 和標記位置 p 來選擇的。 - 計算注意力
一旦所有的查詢或鍵向量的每一對都完成旋轉,這些對會重新組合成一個維度為 d 的向量。
接著,使用標準的點積注意力機制來計算查詢與鍵之間的關系。
圖片
優勢
- 傳統的絕對位置編碼通過在詞嵌入上加上一個固定的正弦和余弦函數生成的編碼來表示位置,但這種方法并不適合長序列的學習。
- RoPE 引入了旋轉操作來表示不同詞之間的相對位置,這對于處理長序列尤其有用。
- RoPE 不依賴于固定的編碼,能夠自適應地學習位置關系,改進了長序列建模的能力。
三、MoE
MoE(專家混合模型)通過使用多個“專家”子網絡替代了 Transformer 中的標準前饋子層。每個專家通常是一個前饋網絡,其結構與原始的 FFN 相同。門控機制決定每個 token 將被路由到哪個專家。
工作原理
- Token 級路由:對于每個 token,計算其與每個專家“質心”向量之間的點積,以生成親和力分數。
- Top-K選擇:根據親和力得分選擇前K個專家(通常K=1或2)。
- 專家處理:每個選定的專家都是一個獨立的 FFN,負責對 token 進行單獨轉換。
- 組合輸出:如果 K>1,則通過加權總和的方式(通常根據門控分數)組合各個專家的輸出。
通過將每個 token 路由到少數幾個專家,MoE 能夠顯著增加模型的整體參數量(即容量),同時不會顯著增加每個 token 的計算成本。
此外,MoE 還允許模型學習更為專業化的子網絡,這些子網絡可以專注于某些 token 模式或特定的語言現象。
DeepSeekMoE(2024)的進展
在 DeepSeekMoE 中,每個 MoE 層的專家數量有所增加,同時每個專家的規模得以縮小。該方法的關鍵創新包括:
- 細粒度專家細分:相比較少的幾個大專家,采用更多較小的專家。
- 更高的K值:可以同時選擇更多的專家,從而實現更專業的轉換。
- 共享專家隔離:一組共享專家服務于所有標記,負責處理廣泛有用的知識,而其余專家則專注于某些特定語言或領域的模式。
這種細粒度與共享結合的方法能夠保持恒定的總計算量,同時提升模型的專業化能力。每個token從更廣泛的專家池中選擇,而共享專家則在整體架構中捕獲通用特征。
優勢
- 在大規模的 Transformer 模型中,參數量非常龐大,而計算成本也隨之增加。MoE 通過引入“專家”模型,只激活其中一部分專家來計算,從而降低計算復雜度。
- 每次計算時,模型會選擇少數幾個專家參與計算,這樣可以大幅減少計算量,同時保持模型的表達能力。
- MoE 可以讓模型通過引入更多的專家來擴展其容量,從而在處理復雜任務時提升性能。