大語言模型基石:Transformer

一、引言

如今火爆的 GPT、LLaMA、通義千問、ChatGLM 等大語言模型,背后都離不開一個核心架構——Transformer

2017 年,Google 在論文《Attention Is All You Need》中首次提出 Transformer 模型,徹底改變了自然語言處理的發展方向。它摒棄了傳統的循環結構(RNN/LSTM),完全依賴注意力機制實現高效、并行化的序列建模。
在這里插入圖片描述

二、模型總覽:Encoder-Decoder 框架

論文提出的 Transformer 是一個典型的 Encoder-Decoder 結構,整體架構如下圖所示:

在這里插入圖片描述

📌 圖1:Transformer 整體架構(源自論文 Fig.1)

🔹 Encoder:負責將輸入序列編碼為富含語義的表示。
🔹 Decoder:基于編碼結果,自回歸地生成輸出序列。

兩者均由 6 層相同結構的模塊堆疊而成,每一層都包含多頭注意力和前饋網絡。

在這里插入圖片描述

三、模型架構詳解(Model Architecture)

3.1 編碼器(Encoder)

每個編碼器層由兩個子層組成:
在這里插入圖片描述

  1. 多頭自注意力機制(Multi-Head Self-Attention)
  2. 位置前饋網絡(Position-wise Feed-Forward Network, FFN)
  • 每個子層后都有 殘差連接(Residual Connection)層歸一化(LayerNorm):
    由Transformer 結構組成的網絡結構通常都非常龐大。編碼器和解碼器均由很多層基本的Transformer塊組成,每一層中都包含復雜的非線性映射,這就導致模型的訓練比較困難。因此,研究人員在Transformer 塊中進一步引入了殘差連接與層歸一化技術,以進一步提升訓練的穩定性。具體來說,殘差連接主要是指使用一條直連通道直接將對應子層的輸入連接到輸出,避免在優化過程中因網絡過深而產生潛在的梯度消失問題。

  • 所有層輸入輸出維度均為 d_model = 512

? 這種設計有助于梯度傳播,支持深層網絡訓練。


3.2 解碼器(Decoder)

解碼器結構更復雜一些,每層包含 三個子層

  1. 掩碼多頭自注意力(Masked Multi-Head Self-Attention)
  2. 編碼器-解碼器注意力(Encoder-Decoder Attention)
  3. 位置前饋網絡(FFN)

流程如下:
在這里插入圖片描述

🔹 為什么需要“掩碼”?

為了防止解碼時“偷看未來”。例如生成句子時:

“我 愛 吃 __”

模型在預測“吃”后面的詞時,不能看到后面的詞。因此使用 因果掩碼(Causal Mask),只允許關注當前位置及之前的位置。

掩碼矩陣示意(下三角):

[1, 0, 0, 0]
[1, 1, 0, 0]
[1, 1, 1, 0]
[1, 1, 1, 1]

3.3 注意力機制(Attention)

在這里插入圖片描述

這是論文最核心的部分。標準注意力定義為:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk??QKT?)V

其中:

  • QQQ:Query,表示“我在找什么”
  • KKK:Key,表示“我能被找到嗎”
  • VVV:Value,表示“我提供什么信息”

通過 QKTQK^TQKT 計算相似度,softmax 歸一化后加權求和 VVV,得到輸出。

多頭注意力(Multi-Head Attention)

單次注意力可能只捕捉一種關系,因此論文提出“多頭”機制:

MultiHead(Q,K,V)=Concat(head1,...,headh)WO\text{MultiHead}(Q,K,V) = \text{Concat}(head_1, ..., head_h)W^O MultiHead(Q,K,V)=Concat(head1?,...,headh?)WO

其中每個 head 獨立計算:

headi=Attention(QWiQ,KWiK,VWiV)head_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi?=Attention(QWiQ?,KWiK?,VWiV?)

參數矩陣 WiQ,WiK,WiVW_i^Q, W_i^K, W_i^VWiQ?,WiK?,WiV? 不同,使每個 head 關注不同子空間的信息。

? 類比:多個專家從不同角度分析同一個問題,最后匯總決策。
?自注意力機制使模型能夠識別不同輸入部分的重要性,而不受距離的影響,從而
能夠捕捉輸入句子中的長距離依賴關系和復雜關系。


3.4 位置前饋網絡(Position-wise FFN)

前饋層接收自注意力子層的輸出作為輸入。
每個位置獨立通過一個兩層全連接網絡:

FFN(x)=max?(0,xW1+b1)W2+b2\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1?+b1?)W2?+b2?

通常設置為:d_model=512, d_ff=2048

雖然簡單,但它增強了模型的非線性表達能力。


四、詞嵌入與位置編碼(Embeddings & Positional Encoding)

4.1 詞嵌入(Token Embeddings)

輸入的每個詞先映射為 d_model 維的向量(如 512 維),與其他模型類似。

4.2 位置編碼(Positional Encoding)

由于 Transformer 沒有循環或卷積結構,無法感知詞序,因此必須顯式加入位置信息。具體來說,序列中每一個單詞所在的位置都對應一個向量。這一向量會與單詞表示對應相加并送入后續模塊中做進一步處理

論文使用正弦和余弦函數生成位置編碼:

PE(pos,2i)=sin?(pos100002i/dmodel)PE(pos,2i+1)=cos?(pos100002i/dmodel)PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \\ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i)?=sin(100002i/dmodel?pos?)PE(pos,2i+1)?=cos(100002i/dmodel?pos?)

這些編碼與詞嵌入相加,作為最終輸入:

Input=Word?Embedding+Positional?Encoding\text{Input} = \text{Word Embedding} + \text{Positional Encoding} Input=Word?Embedding+Positional?Encoding

? 優點:能表示相對位置,且可擴展到更長序列。


五、為什么 Transformer 能支撐大語言模型?

雖然原始 Transformer 是為機器翻譯設計的,但它的設計理念完美契合了大語言模型的需求:

特性對大模型的意義
并行計算可高效訓練千億參數模型
長距離依賴建模能理解上下文數百詞外的信息
可堆疊性層數越多,表達能力越強
注意力可視化易于分析模型決策過程

現代大語言模型大多基于 Transformer 的變體:

模型類型結構來源典型代表
Decoder-only僅保留解碼器GPT 系列、LLaMA、通義千問
Encoder-only僅保留編碼器BERT、RoBERTa
Encoder-Decoder完整結構T5、BART

🔹 GPT 就是典型的 Decoder-only 模型:去掉編碼器,僅用掩碼注意力進行自回歸生成。


六、總結:Transformer 的革命性意義

維度RNN/LSTMCNNTransformer
并行性? 極強
長程依賴一般? 強
可解釋性? 注意力可可視化
擴展性有限一般? 支持超大規模

Transformer 的成功在于:

  • 用注意力替代循環,實現高效并行
  • 多頭機制 提升語義表達多樣性
  • 位置編碼 解決順序感知問題
  • 模塊化設計 易于擴展和改進

它不僅是 NLP 的里程碑,更是通向通用人工智能的重要一步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96585.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【算法】【鏈表】160.相交鏈表--通俗講解

算法通俗講解推薦閱讀 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈表…

MySQL——庫的操作

1、創建數據庫語法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name這里的CHARACTER SET表示指定數據庫采用的字符集…

Python ast模塊(Abstract Syntax Trees,抽象語法樹)介紹及使用

文章目錄 核心概念 基本使用流程 常用節點類型 示例代碼 實際應用場景 注意事項 `ast.literal_eval()` 功能說明 適用場景 使用示例 限制與安全特性 與 `eval()` 的對比 總結 Python 的 ast 模塊( Abstract Syntax Trees,抽象語法樹)允許你解析、分析和修改 Python 代碼的…

C++寬度優先搜索算法:隊列與優先級隊列

本期我們就來深入學習一下C算法中一個很重要的算法思想:寬度優先搜索算法 寬度優先算法是一個應用十分廣泛的算法思想,涉及的領域也十分繁多,因此本篇我們先只涉獵它的一部分算法題:隊列/優先級隊列,后續我們會進一步地…

類的property屬性

??Python 中的 property 特性詳解??property 是 Python 中用于??將方法轉換為屬性??的裝飾器,它允許開發者以訪問屬性的方式調用方法,同時可以添加邏輯控制(如數據校驗、計算屬性等)。以下是其核心用法和優勢:…

【Redis#9】其他數據結構

引言 Redis 除了我們最常用的 String、Hash、List、Set、ZSet(Sorted Set) 這五種基本數據結構外,還提供了很多高級或特殊用途的數據結構/類型 ,它們可以滿足更復雜的業務需求。 ? Redis 的“五大基本數據結構”回顧類型特點Stri…

AutoGen——自定義Agent

目錄引子自定義 AgentCountDownAgentArithmeticAgent在自定義 Agent 中使用自定義模型客戶端讓自定義 Agent 聲明式化Selector Group Chat示例:網頁搜索 / 數據分析代理(Agents)Workflow終止條件(Termination Conditions&#xff…

【重定向和轉發的核心理解】

重定向和轉發 不廢話: “轉發” 的核心定義: 服務端內部主導跳轉、客戶端無感知(僅 1 次請求)、瀏覽器 URL 不改變,與傳統 Web 開發中 “轉發” 的本質邏輯完全一致,只是實現載體(Nginx 路由層 …

生成對抗網絡詳解與實現

生成對抗網絡詳解與實現0. 前言1. GAN 原理2. GAN 架構3. 損失函數3.1 判別器損失3.2 生成器損失3.4 VANILLA GAN4. GAN 訓練步驟0. 前言 生成對抗網絡 (Generative Adversarial Network, GAN) 是圖像和視頻生成中的主要方法之一。在本節中,我們將了解 GAN 的架構、…

FPGA硬件開發-XPE工具的使用

目錄 XPE 工具概述? XPE 使用步驟詳解? 1. 工具獲取與初始化? 2. 器件選擇與配置? 3. 電源電壓設置? 4. 資源使用量配置? 5. 時鐘與開關活動配置? 6. 功耗計算與報告生成? 報告解讀與電源設計優化? 常見問題與最佳實踐? 與實際功耗的差異處理? 工具版本…

CentOS 7.9 RAID 10 實驗報告

文章目錄CentOS 7.9 RAID 10 實驗報告一、實驗概述1.1 實驗目的1.2 實驗環境1.3 實驗拓撲二、實驗準備2.1 磁盤準備2.2 安裝必要軟件三、RAID 10陣列創建3.1 創建RAID 10陣列3.2 創建文件系統并掛載3.3 保存RAID配置四、性能基準測試4.1 初始性能測試4.2 創建測試數據集五、故障…

機器人逆運動學進階:李代數、矩陣指數與旋轉流形計算

做機器人逆運動學(IK)的時候,你遲早會遇到矩陣指數和對數這些東西。為什么呢?因為計算三維旋轉的誤差,不能簡單地用歐氏距離那一套,那只對位置有效。旋轉得用另一套方法——你需要算兩個旋轉矩陣之間的差異…

計算機視覺(opencv)實戰十八——圖像透視轉換

圖像透視變換詳解與實戰在圖像處理中,透視變換(Perspective Transform) 是一種常見的幾何變換,用來將圖像中某個四邊形區域拉伸或壓縮,映射到一個矩形區域。常見應用場景包括:糾正拍照時的傾斜(…

【飛書多維表格插件】

coze中添加飛書多維表格記錄插件 添加單條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"未完成"}}]添加多條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"已完…

Java基礎 9.14

1.Collection接口遍歷對象方式2-for循環增強增強for循環,可以代替iterator選代器,特點:增強for就是簡化版的iterator本質一樣 只能用于遍歷集合或數組package com.logic.collection_;import java.util.ArrayList; import java.util.Collectio…

數據結構(C語言篇):(十三)堆的應用

目錄 前言 一、堆排序 1.1 版本一:基于已有數組建堆、取棧頂元素完成排序 1.1.1 實現邏輯 1.1.2 底層原理 1.1.3 應用示例 1.1.4 執行流程 1.2 版本二:原地排序 —— 標準堆排序 1.2.1 實現邏輯 1.2.2 底層原理 1.2.3 時間復雜度計算…

4步OpenCV-----掃秒身份證號

這段代碼用 OpenCV 做了一份“數字模板字典”,然后在銀行卡/身份證照片里自動找到身份證號那一行,把每個數字切出來跟模板比對,最終輸出并高亮顯示出完整的身份證號碼,下面是代碼解釋:模塊 1 工具箱(通用函…

馮諾依曼體系:現代計算機的基石與未來展望

馮諾依曼體系:現代計算機的基石與未來展望 引人入勝的開篇 當你用手機刷視頻、用電腦辦公時,是否想過這些設備背后共享的底層邏輯?從指尖輕滑切換APP,到電腦秒開文檔,這種「無縫銜接」的體驗,其實藏著一個改…

前端基礎 —— C / JavaScript基礎語法

以下是對《3.JavaScript(基礎語法).pdf》的內容大綱總結:---📘 一、JavaScript 簡介 - 定義:腳本語言,最初用于表單驗證,現為通用編程語言。 - 應用:網頁開發、游戲、服務器(Node.js&#xff09…