无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

DL:Transformer 的基本原理與 PyTorch 實現

0
分享至

Transformer 是深度學習中最重要的模型結構之一。它最初用于自然語言處理任務,后來逐漸擴展到圖像、語音、多模態、代碼生成、推薦系統和強化學習等領域,成為現代大模型的核心基礎結構。

傳統按時間步依次處理序列,能夠利用上下文信息,但難以完全并行計算,也容易受到長距離依賴問題影響。

Transformer 不再依賴循環結構,而是使用注意力機制(Attention Mechanism),讓序列中的每個位置都可以直接關注其他位置,從而更高效地建模上下文關系。


圖 1:從 RNN 到 Transformer

可以簡單理解為:

? RNN:按順序逐步讀

? Transformer:同時看全局關系

Transformer 的核心思想是:讓模型根據任務需要,自動判斷序列中哪些位置更重要,并把相關信息加權匯總起來。

一、為什么需要 Transformer

序列數據中,元素之間往往存在上下文關系。

例如,在句子:

這部電影雖然前半段節奏很慢,但結尾非常精彩。

如果只看“很慢”,模型可能認為這是負面評價;如果結合后面的“但結尾非常精彩”,模型就需要理解轉折關系,并綜合判斷整體語義。

RNN 通過隱藏狀態逐步傳遞歷史信息:

其中:

? x? 表示第 t 個時間步輸入

? h??? 表示上一時間步隱藏狀態

? h? 表示當前時間步隱藏狀態

? f 表示循環單元的狀態更新函數

這種結構的問題在于:

? 序列必須按時間順序逐步處理,難以充分并行

? 遠距離信息需要經過多個時間步傳遞

? 長序列中容易出現梯度消失或信息衰減

? 每個位置對其他位置的依賴關系不夠直接

Transformer 采用了不同思路。

它讓每個位置直接和序列中所有位置建立聯系,再根據相關性大小分配注意力權重。

例如,在句子中:

這部電影雖然前半段節奏很慢,但結尾非常精彩。

模型在理解“精彩”時,可以直接關注“結尾”“但”“電影”等相關詞,而不必像 RNN 那樣一步步傳遞信息。


圖 2:RNN 與 Transformer 處理序列方式的對比

因此,Transformer 的優勢主要體現在:

? 能直接建模長距離依賴

? 更適合并行計算

? 能根據上下文動態分配注意力

? 適合大規模數據和大模型訓練

? 可擴展到文本、圖像、語音和多模態任務

二、Transformer 的整體結構

Transformer 最初采用編碼器—解碼器結構(Encoder–Decoder Architecture),用于機器翻譯等序列到序列任務。

整體結構可以概括為:

輸入序列 → 編碼器 → 上下文表示 → 解碼器 → 輸出序列

其中:

? 編碼器負責理解輸入序列

? 解碼器負責根據已生成內容和編碼器輸出生成目標序列

? 注意力機制負責建模不同位置之間的依賴關系


圖 3:Transformer 的編碼器—解碼器結構

1、編碼器

編碼器(Encoder)接收輸入序列,并把每個位置轉換成包含上下文信息的表示。

一個 Transformer 編碼器通常由多個相同結構的編碼器層堆疊而成。每個編碼器層主要包含兩部分:

多頭自注意力層 → 前饋神經網絡層

并配合:

? 殘差連接

? 層歸一化

? Dropout

可以寫成:

→ 輸出表示

編碼器的目標是:讓每個位置的表示都融合整個輸入序列中的相關信息。

2、解碼器

解碼器(Decoder)用于生成輸出序列。它通常也由多個相同結構的解碼器層堆疊而成。

每個解碼器層主要包含三部分:

掩碼多頭自注意力層 → 編碼器—解碼器注意力層 → 前饋神經網絡層

其中:

? 掩碼自注意力用于防止模型看到未來位置

? 編碼器—解碼器注意力用于關注輸入序列信息

? 前饋神經網絡用于進一步變換特征

在文本生成任務中,解碼器必須按順序生成 token。生成第 t 個 token 時,模型只能使用前面已經生成的 token,而不能提前看到未來答案。

因此,解碼器中的自注意力通常需要使用因果掩碼(Causal Mask)。

3、Transformer 的三種常見變體

雖然原始 Transformer 是編碼器—解碼器結構,但現代模型常見三種形式:

? Encoder-only:只使用編碼器

? Decoder-only:只使用解碼器

? Encoder–Decoder:編碼器和解碼器同時使用


圖 4:Transformer 的三種常見結構形式

它們適合不同任務:

? Encoder-only:適合理解類任務,如文本分類、句子匹配、命名實體識別

? Decoder-only:適合生成類任務,如語言模型、代碼生成、對話生成

? Encoder–Decoder:適合輸入到輸出的轉換任務,如機器翻譯、摘要生成

例如:

? BERT 屬于典型 Encoder-only 架構

? GPT 屬于典型 Decoder-only 架構

? T5 屬于典型 Encoder–Decoder 架構

三、自注意力機制的基本思想

自注意力機制(Self-Attention)是 Transformer 的核心。

它的目標是:讓序列中的每個位置根據需要關注序列中的其他位置,并把相關信息加權匯總起來。

假設輸入序列為:

我 喜歡 深度 學習

當模型處理“學習”這個詞時,它可能需要關注“深度”;當處理“喜歡”時,它可能需要關注“我”和后面的內容。

自注意力機制不是固定寫死哪些詞重要,而是通過訓練自動學習注意力權重。

可以簡單理解為:

自注意力 = 對序列內部不同位置之間的相關性進行建模

1、Query、Key 和 Value

自注意力機制中,每個輸入位置都會生成三個向量:

? 查詢向量(Query,Q

? 鍵向量(Key,K

? 值向量(Value,V

可以理解為:

? Query:當前位置想找什么信息

? Key:每個位置提供什么檢索線索

? Value:每個位置真正提供的信息內容

對于輸入表示 X,可以通過線性變換得到:

其中:

? X 表示輸入序列表示矩陣

? W_Q 表示生成 Query 的權重矩陣

? W_K 表示生成 Key 的權重矩陣

? W_V 表示生成 Value 的權重矩陣

? Q、K、V 分別表示查詢、鍵和值矩陣


圖 5:自注意力機制中的 Query、Key、Value

從直觀角度看:

? Q 和 K 用來計算“相關性”

? V 用來提供“被匯總的信息”

2、縮放點積注意力

Transformer 中最常用的是縮放點積注意力(Scaled Dot-Product Attention)。

它的計算過程可以分為三步:

計算相關性得分 → Softmax 轉成權重 → 對 Value 加權求和

公式為:

其中:

? Q 表示查詢矩陣

? K 表示鍵矩陣

? V 表示值矩陣

? K? 表示 K 的轉置

? d? 表示 Key 向量維度

? √d? 用于縮放點積結果

? softmax 用于把相關性得分轉換為注意力權重

為什么要除以 √d??

當向量維度 d? 較大時,QK? 的數值可能變大,導致 softmax 進入飽和區,使梯度變小。除以 √d? 可以緩解這個問題,使訓練更穩定。

四、多頭注意力機制

單個注意力頭可以學習一種關系模式,但序列中的關系往往不止一種。

例如,在一句話中,模型可能需要同時關注:

? 主語和謂語之間的關系

? 修飾詞和中心詞之間的關系

? 代詞和指代對象之間的關系

? 遠距離語義依賴

? 局部相鄰詞關系

多頭注意力(Multi-Head Attention)通過多個注意力頭并行計算,讓模型從不同子空間學習不同類型的關系。


圖 6:多頭注意力機制

每個注意力頭可以寫為:

其中:

? head? 表示第 i 個注意力頭

? W?Q、W?K、W?V 表示第 i 個頭對應的投影矩陣

? Q、K、V 表示原始查詢、鍵和值矩陣

多個注意力頭的結果會拼接起來,再經過一次線性變換:

其中:

? h 表示注意力頭數量

? Concat 表示拼接操作

? W? 表示輸出投影矩陣

可以簡單理解為:

? 單頭注意力:從一個角度看序列關系

? 多頭注意力:從多個角度同時看序列關系

五、位置編碼:讓模型知道順序

Transformer 的自注意力機制本身并不按順序處理 token。它可以同時看到整個序列,但這也帶來一個問題:

如果不額外提供位置信息,模型并不知道哪個詞在前,哪個詞在后。

因此,Transformer 需要位置編碼(Positional Encoding)來注入順序信息。


圖 7:位置編碼如何注入順序信息

最經典的位置編碼使用正弦和余弦函數:

其中:

? pos 表示 token 在序列中的位置

? i 表示維度索引

? d_model 表示模型隱藏維度

? PE 表示位置編碼

位置編碼會與 token embedding 相加:

其中:

? E 表示 token embedding

? PE 表示位置編碼

? X 表示加入位置信息后的輸入表示

從直觀角度看:

? Token Embedding 告訴模型“這個詞是什么”

? Position Encoding 告訴模型“這個詞在哪里”

現代 Transformer 也常使用可學習位置編碼、相對位置編碼、旋轉位置編碼等變體,但基本目標相同:讓模型能夠感知順序。

六、Transformer 層的組成

一個標準 Transformer 編碼器層通常由兩大模塊組成:

? 多頭自注意力模塊

? 前饋神經網絡模塊

并配合殘差連接和層歸一化。


圖 8:Transformer 編碼器層結構

1、多頭自注意力模塊

多頭自注意力負責讓每個位置與其他位置交互信息。

輸入為 X,輸出為:

其中:

? X 同時作為 Q、K、V

? Z 表示自注意力輸出

? MultiHeadAttention 表示多頭自注意力計算

這里寫作 (X,X,X),是因為自注意力中 Query、Key、Value 都來自同一個序列。

2、殘差連接與層歸一化

為了穩定訓練,Transformer 會使用殘差連接(Residual Connection)和層歸一化(Layer Normalization)。

簡化寫法為:

其中:

? X 表示模塊輸入

? Z 表示注意力模塊輸出

? X + Z 表示殘差連接

? LayerNorm 表示層歸一化

? X? 表示歸一化后的輸出

殘差連接可以幫助信息和梯度更順暢地傳遞,層歸一化可以讓訓練更加穩定。

3、前饋神經網絡模塊

Transformer 中的前饋神經網絡通常是逐位置應用的多層感知機。

可以寫為:

其中:

? x 表示某個位置的表示

? W?、W? 表示兩層線性變換的權重

? b?、b? 表示偏置

? σ 表示非線性激活函數,例如 ReLU 或 GELU

? FFN 表示前饋神經網絡模塊

注意,FFN 是對每個位置獨立應用的。它不會直接混合不同位置的信息;不同位置之間的信息交互主要由注意力機制完成。

4、完整編碼器層

一個簡化的 Transformer 編碼器層可以寫成:

其中:

? X 表示輸入表示

? X? 表示經過注意力模塊后的中間表示

? Y 表示編碼器層輸出

? MultiHeadAttention 表示多頭自注意力

? FFN 表示前饋神經網絡模塊

多個編碼器層堆疊后,就形成了 Transformer 編碼器。

七、PyTorch 實現:使用 Transformer 做文本分類

下面使用 PyTorch 構建一個簡化版 Transformer 文本分類模型。為了突出 Transformer 的基本結構,示例使用小型中文樣例數據集,按字符級別建模,完成正面 / 負面情感分類。


圖 9:Transformer 文本分類的訓練與預測流程

這個示例的目標不是訓練高性能中文情感分析模型,而是幫助理解:

文本編號 → 嵌入表示 → 位置編碼 → Transformer 編碼器 → 分類輸出

1、導入庫

這里使用:

? math 用于計算位置編碼

? torch 構建張量與訓練流程

? torch.nn 定義神經網絡層

? Dataset 和 DataLoader 構建數據集與批量讀取

2、準備樣例數據

其中:

? 標簽 1 表示正面情感

? 標簽 0 表示負面情感

為了簡化實現,這里按字符構建詞表。真實任務中通常會使用分詞器、子詞編碼、預訓練詞向量或預訓練大模型。

3、構建字符表與編碼函數

    

其中:

? char_to_id 用于把字符映射為整數編號

? pad_id=0 表示填充符

? encode_text() 用于把文本轉換為編號序列

4、定義數據集與批處理函數

    

其中:

? SentimentDataset 定義單個樣本的讀取方式

? collate_fn 用于把不同長度句子填充到同一長度

? padded 的形狀為 batch_size × sequence_length

? labels 的形狀為 batch_size

構建 DataLoader:

5、定義位置編碼

下面實現經典正弦—余弦位置編碼。

        

其中:

? d_model 表示 embedding 維度

? max_len 表示最大序列長度

? pe 保存不同位置的位置編碼

? register_buffer() 表示 pe 不是可訓練參數,但會隨模型一起保存和移動設備

? x 的形狀為 batch_size × sequence_length × d_model

6、定義 Transformer 文本分類模型

        

這個模型結構可以概括為:

其中:

? Embedding 把字符編號轉換為向量

? 位置編碼提供順序信息

? TransformerEncoder 建模上下文關系

? padding_mask 避免模型把填充符當作有效字符

? 平均池化把序列表示匯總為句子表示

? Linear 輸出分類

需要注意,這里是 Encoder-only 結構,適合文本分類這類理解任務。

7、創建模型、損失函數和優化器

其中:

? vocab_size 表示詞表大小

? d_model=32 表示向量維度

? nhead=4 表示使用 4 個注意力頭

? num_layers=2 表示堆疊 2 個編碼器層

? num_classes=2 表示二分類

? CrossEntropyLoss 用于分類任務

? Adam 用于參數更新

模型最后輸出 logits,不需要手動添加 Softmax。

8、訓練模型

        

訓練過程仍然遵循深度學習的標準閉環:

前向傳播 → 計算損失 → 清空舊梯度 → 反向傳播 → 參數更新

其中:

? model(batch_x) 表示前向傳播

? criterion(logits,batch_y) 表示計算分類損失

? optimizer.zero_grad() 清空舊梯度

? loss.backward() 計算梯度

? optimizer.step() 更新參數

9、預測新句子

    

測試預測:

print(predict_sentiment("服務太差了"))

可能輸出:

負面

由于這里的數據集很小,模型只是演示 Transformer 的基本流程,不能代表真實中文情感分析系統的效果。真實任務通常需要更大規模數據、更穩定的訓練策略,以及預訓練模型。

10、查看張量形狀

可以打印一個批次的形狀,幫助理解 Transformer 的輸入輸出。

可能看到類似結果:

輸出 logits 形狀: torch.Size([4, 2])

其中:

? 4 表示 batch_size

? 8 表示當前批次填充后的序列長度

? 32 表示 d_model

? 2 表示兩個類別的 logits

八、Transformer 的適用場景、局限與擴展方向

Transformer 是當前深度學習中最重要的通用結構之一。它不只用于自然語言處理,也廣泛應用于視覺、多模態、語音、代碼和科學計算等領域。


圖 10:Transformer 的適用場景、局限與擴展方向

1、適用場景

Transformer 常用于:

? 文本分類

? 機器翻譯

? 文本摘要

? 對話生成

? 代碼生成

? 圖像分類

? 圖像生成

? 語音識別

? 多模態理解與生成

其中,大語言模型和多模態模型大多以 Transformer 或其變體為基礎。

2、主要優勢

Transformer 的主要優勢包括:

? 能直接建模長距離依賴

? 更適合并行計算

? 注意力機制可動態選擇重要信息

? 可擴展到大規模數據和模型

? 適合文本、圖像、語音和多模態任務

? 已成為現代大模型的重要基礎結構

與 RNN 相比,Transformer 不需要逐時間步遞歸計算,因此在大規模訓練中更具優勢。

3、主要局限

Transformer 也有明顯局限:

? 自注意力計算成本隨序列長度快速增長

? 長文本處理需要較大顯存和計算資源

? 大模型訓練成本很高

? 對數據規模和工程系統依賴較強

? 注意力權重并不總能直接解釋模型決策

? 生成模型可能出現幻覺、偏見和安全問題

標準自注意力的計算復雜度通常與序列長度平方相關。若序列長度為 n,注意力矩陣大小約為:

因此,長序列建模是 Transformer 的重要挑戰之一。

4、擴展方向

從基礎 Transformer 出發,可以繼續學習:

? BERT:編碼器結構,適合理解任務

? GPT:解碼器結構,適合生成任務

? T5:編碼器—解碼器結構,適合文本到文本任務

? Vision Transformer:將 Transformer 用于圖像任務

? Swin Transformer:使用窗口注意力改進視覺建模

? Longformer:面向長文本的稀疏注意力結構

? Transformer-XL:改進長距離上下文建模

? MoE Transformer:使用專家混合機制擴展模型容量

這些結構雖然形式不同,但都圍繞一個核心問題展開:如何更高效、更穩定、更可控地建模大規模上下文關系?

小結

Transformer 通過自注意力機制直接建模序列中不同位置之間的關系,并通過多頭注意力、位置編碼、前饋網絡、殘差連接和層歸一化構成可擴展的深度網絡結構。它突破了 RNN 順序計算的限制,成為大語言模型、多模態模型和現代深度學習系統的重要基礎。

點贊有美意,贊賞是鼓勵

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

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.

相關推薦
熱點推薦
洪森公開道歉,向全體柬埔寨人謝罪,主動攬下了柬泰戰敗的責任

洪森公開道歉,向全體柬埔寨人謝罪,主動攬下了柬泰戰敗的責任

半路友人之他
2026-06-11 21:24:46
克里斯·韋伯嘲諷馬刺“最傲慢比賽”:學會把球交給庫里式的真核

克里斯·韋伯嘲諷馬刺“最傲慢比賽”:學會把球交給庫里式的真核

賽場名場面
2026-06-13 01:26:38
鵝腿阿姨翻車后續:人被警方帶走,黑料曝光,店關門或將天價賠償

鵝腿阿姨翻車后續:人被警方帶走,黑料曝光,店關門或將天價賠償

阿纂看事
2026-06-11 17:19:53
21.09萬考生!濟南市2026年中考6月13日至15日舉行

21.09萬考生!濟南市2026年中考6月13日至15日舉行

閃電新聞
2026-06-10 12:42:13
曼聯8000萬英鎊鎖定西漢姆中場,歐文:他和梅努將是絕配

曼聯8000萬英鎊鎖定西漢姆中場,歐文:他和梅努將是絕配

樂道足球C
2026-06-12 20:09:05
2026很少踩坑!這3個生肖6月后更會“聚財”,年末存錢更多!

2026很少踩坑!這3個生肖6月后更會“聚財”,年末存錢更多!

毅談生肖
2026-06-08 11:26:54
同濟大學養不起那么多人!傳統工科強校的財務困境這下藏不住了!

同濟大學養不起那么多人!傳統工科強校的財務困境這下藏不住了!

霹靂炮
2026-06-07 23:39:08
【微特稿】特朗普涉伊朗表態“大轉彎” 以總理“猝不及防”

【微特稿】特朗普涉伊朗表態“大轉彎” 以總理“猝不及防”

新華社
2026-06-12 13:33:22
外交部發言人宣布中方對菲律賓國防部長特奧多羅及其親屬實施制裁

外交部發言人宣布中方對菲律賓國防部長特奧多羅及其親屬實施制裁

界面新聞
2026-06-11 20:07:10
鵝腿阿姨用鴨腿翻車成就人大食堂主任:冤屈終于洗白,只賣真鵝腿

鵝腿阿姨用鴨腿翻車成就人大食堂主任:冤屈終于洗白,只賣真鵝腿

蜜桔娛樂
2026-06-11 11:06:32
芯片產能持續趨緊 谷歌選定三星合作生產下一代TPU

芯片產能持續趨緊 谷歌選定三星合作生產下一代TPU

財聯社
2026-06-12 08:46:08
最幸福的老年人,就看這10條,一條10分,算算你能得多少分

最幸福的老年人,就看這10條,一條10分,算算你能得多少分

荷蘭豆愛健康
2026-06-01 19:40:56
靈魂拷問!鵝腿阿姨上熱搜,虎撲網友直呼看不懂

靈魂拷問!鵝腿阿姨上熱搜,虎撲網友直呼看不懂

熱搜摘要官
2026-06-12 01:41:25
趁丈夫洗澡,我用他微信讓婆婆轉八千,她秒轉8萬并留言:傻孩子,我兒子那420萬的婚房早就寫你名了,這錢你拿著零花

趁丈夫洗澡,我用他微信讓婆婆轉八千,她秒轉8萬并留言:傻孩子,我兒子那420萬的婚房早就寫你名了,這錢你拿著零花

LULU生活家
2026-05-25 08:37:59
世界杯:墨西哥VS南非、韓國VS捷克復盤,一針見血

世界杯:墨西哥VS南非、韓國VS捷克復盤,一針見血

雜草體育社
2026-06-12 12:32:06
穆里尼奧將重返皇馬?12年了,伯納烏還在等那個特殊的一個

穆里尼奧將重返皇馬?12年了,伯納烏還在等那個特殊的一個

佳佳說奇事故事
2026-04-19 21:04:53
報復來了,中國緊急踩剎車,特朗普坐鎮白宮戰情室,炸彈落在伊朗

報復來了,中國緊急踩剎車,特朗普坐鎮白宮戰情室,炸彈落在伊朗

阿芒娛樂說
2026-06-12 01:39:46
湖人終于醒了!中鋒問題不解決,走出西部就永遠是奢望

湖人終于醒了!中鋒問題不解決,走出西部就永遠是奢望

奕辰說球
2026-06-12 14:16:25
宋慧喬又帶火了一種時髦新穿法:“白色T恤+花苞裙”,洋氣又高級

宋慧喬又帶火了一種時髦新穿法:“白色T恤+花苞裙”,洋氣又高級

蓓小西
2026-05-25 09:25:37
用它作為動力驅動可達光速的70%,科學家對它的研究才剛開始!

用它作為動力驅動可達光速的70%,科學家對它的研究才剛開始!

宇宙時空
2026-06-11 19:00:13
2026-06-13 02:36:49
MediaTea
MediaTea
專業的數字媒體、新媒體技術
1888文章數 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

美加墨世界杯第二場比賽就現空座 英媒:尷尬

頭條要聞

美加墨世界杯第二場比賽就現空座 英媒:尷尬

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

健康
本地
游戲
親子
家居

老人、小孩、孕婦,吃粽子有啥風險

本地新聞

AK劉彰邂逅河北南大港濕地

索尼PS國區運營神了!玩梗《黑袍》:我會玩你的游戲

親子要聞

給孩子報個幼兒園還要工資流水?難道這就是傳說中的“因財施教”

家居要聞

空間微調 移形換境

無障礙瀏覽 進入關懷版