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