【NLP】 21. Transformer整體流程概述 Encoder 與 Decoder架構對比

1. Transformer 整體流程概述

Transformer 模型的整個處理流程可以概括為從自注意力(Self-Attention)到多頭注意力,再加上殘差連接、層歸一化、堆疊多層的結構。其核心思想是利用注意力機制對輸入進行并行計算,從而避免傳統 RNN 逐步依賴導致的并行化困難問題。

在 Transformer 模型中,編碼器(Encoder)解碼器(Decoder) 均由若干相同的層堆疊而成。模型的基本構成單元如下:

  • 自注意力層(Self-Attention Layer):計算輸入中各個 token 之間的相關性,為每個 token 提供上下文表示。
  • 多頭注意力機制(Multi-Head Attention):并行計算多個注意力頭,每個頭學習不同的特征(例如,有的關注實體信息,有的關注語法信息)。
  • 前饋神經網絡層(Feed-Forward Layer):在每個注意力模塊后面添加一個全連接的前饋網絡,引入非線性變換。
  • 殘差連接和層歸一化(Residual Connection & Layer Normalization):通過加法將輸入與輸出相加,保證梯度能夠高效傳回,并利用層歸一化穩定訓練過程。

2. 多頭注意力機制

2.1 為什么使用多頭注意力

多頭注意力機制將單一注意力分成多個“頭”,每個頭在不同的線性子空間中并行計算注意力,有以下優勢:

  • 捕獲多種語義信息:例如,某一個注意力頭可能專注于實體信息(entity focused),而另一個頭可能捕捉句法結構(syntax focused)。
  • 提高模型表達能力:通過并行多個注意力頭,模型能夠同時從多個角度學習輸入數據的特征。

2.2 多頭注意力公式

假設輸入為查詢 Q、鍵 K和值 V,單個注意力頭的計算如下:

Attention ( Q , K , V ) = softmax ( Q K ? d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dk? ?QK??)V

其中:

  • dk 為鍵的維度,做縮放是為了緩解點積隨維度增加過大帶來的數值不穩定性;
  • softmax 后得到的注意力權重用于對 V 進行加權平均。

多頭注意力的計算為對多個獨立注意力頭計算后,將它們拼接,再通過一個輸出矩陣 WO 得到最終的輸出:

MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1?,,headh?)WO head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi?=Attention(QWiQ?,KWiK?,VWiV?)

其中 WiQ, WiK, WiV 為各頭的線性變換矩陣。


3. 縮放點積注意力

3.1 為什么使用縮放

在高維空間下,如果直接用點積 計算注意力得分,因向量維度增加,點積值通常會變得很大,導致 softmax 函數會輸出極端分布,進而使得梯度變小,不利于訓練。因此,引入縮放因子,即除以 d k \sqrt{d_k} dk? ? 來緩解這種情況。

3.2 縮放點積注意力公式

完整公式如下:

e x p ? ( e i j ′ ) α i j = exp ? ( e i j ) ∑ j ′ exp ? ( e i j ′ ) α i j = ∑ j ′ e x p ( e i j ′ ) exp?(eij′)\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'} \exp(e_{ij'})}αij=∑j′exp(eij′) exp?(eij)αij?=j?exp(eij?)exp(eij?)?αij=jexp(eij)

其中:

  • eij 是未歸一化的注意力得分;
  • αij 是歸一化后的權重;
  • zi 是輸出的向量表示。

4. 殘差連接與層歸一化

4.1 殘差連接(Residual Connection)

殘差連接用于緩解深層網絡中的梯度消失問題,同時鼓勵模型捕捉接近恒等映射的信息。其作用在于讓輸入信息能夠直接流傳至后續層,從而“學習”在原始表示上做出小的修改(即“學習小編輯”)。

公式表示為:

y = LayerNorm ( x + F ( x ) ) y = \text{LayerNorm}(x + F(x)) y=LayerNorm(x+F(x))

其中:

  • x 為輸入向量,
  • F(x) 為經過注意力或前饋網絡后的輸出,
  • LayerNorm 表示層歸一化操作。

4.2 層歸一化(Layer Normalization)

層歸一化通過計算輸入向量的均值和標準差,對向量進行歸一化處理,從而穩定訓練。具體步驟如下:

給定向量 x=[x1,x2,…,xd]

  1. 計算均值

μ = 1 d ∑ i = 1 d x i \mu = \frac{1}{d} \sum_{i=1}^{d} x_i μ=d1?i=1d?xi?

  1. 計算標準差(加上一個很小的 ?\epsilon? 防止除零):

σ = 1 d ∑ i = 1 d ( x i ? μ ) 2 + ? \sigma = \sqrt{\frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2 + \epsilon} σ=d1?i=1d?(xi??μ)2+? ?

  1. 歸一化和線性變換

LayerNorm ( x ) i = γ i x i ? μ σ + e + β i \text{LayerNorm}(x)_i = \gamma_i \frac{x_i - \mu}{\sigma+e} + \beta_i LayerNorm(x)i?=γi?σ+exi??μ?+βi?

其中 γ 和 β 是可學習的參數,分別用于重新縮放和平移歸一化后的輸出。e是一個小的值,以防止被零除


5. Transformer 中的解碼器(Decoder)

5.1 解碼器與編碼器的相似性

解碼器與編碼器的基本構建塊相似,都包含自注意力、多頭注意力、前饋網絡、殘差連接與層歸一化。然而,解碼器有兩個關鍵的區別:

  1. 因果(Masked)自注意力
    為防止未來信息泄露,解碼器中計算自注意力時對未來的位置做屏蔽。

    e i j = { q i ? k j d k , j ≤ i ? ∞ , j > i e_{ij} = \begin{cases} \frac{q_i^\top k_j}{\sqrt{d_k}}, & j \leq i \\ -\infty, & j > i \end{cases} eij?={dk? ?qi??kj??,?,?jij>i?

    然后軟化為:

    α i j = exp ? ( e i j ) ∑ j ′ = 1 i exp ? ( e i j ′ ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'=1}^{i} \exp(e_{ij'})} αij?=j=1i?exp(eij?)exp(eij?)?

  2. 跨注意力(Cross-Attention)
    除了自注意力外,解碼器還包含跨注意力層,用于結合編碼器的輸出信息。在跨注意力中:

    • 查詢(Query, Q) 來自解碼器當前的隱藏狀態;
    • 鍵(Key, K)值(Value, V) 來自編碼器的隱藏狀態;

    相應公式與前述縮放點積注意力類似:

CrossAttention ( Q , K , V ) = softmax ( Q K ? d k ) V \text{CrossAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V CrossAttention(Q,K,V)=softmax(dk? ?QK??)V
在這里插入圖片描述

5.2 解碼器的結構總結

解碼器的一個典型層可以總結為:

  1. Masked Self-Attention:計算當前解碼器輸入的自注意力并屏蔽未來信息;
  2. 跨注意力(Encoder-Decoder Attention):利用編碼器輸出為解碼器生成當前輸出提供上下文信息;
  3. 前饋網絡(Feed-Forward Network):對注意力輸出進行非線性變換;
  4. 殘差連接與層歸一化:確保訓練中梯度穩定并促進模型學習細微調整。

6. Transformer 總結及殘差視角

從整體角度看,Transformer 模型的核心操作可以概括為:

  1. 多次并行注意力計算:通過多頭注意力,模型同時關注不同角度的信息。
  2. 添加殘差連接:讓每一層學習輸入上的小修正(“編輯”),從而保留原始信息。
  3. 加入層歸一化:使各層輸入分布保持穩定,提高訓練效率。
  4. 堆疊多層結構:重復上述模塊,多層堆疊能捕捉到更加抽象的特征。

從殘差視角來觀察,Transformer 的核心是詞嵌入,隨后每一層做的是在原始表示上學習微小的調整,從而“編輯”出更符合任務需求的表示。

核心區別總結表:

模塊Encoder LayerDecoder Layer
Attention 1Multi-Head Self-AttentionMasked Multi-Head Self-Attention
Attention 2Cross-Attention(Query 來自 Decoder,Key/Value 來自 Encoder)
FFN有(相同)有(相同)
殘差&歸一化

📌 為什么 Decoder 需要 Masked Self-Attention?

為了保證**自回歸(Autoregressive)**生成,只能看到前面的詞,不能偷看將來的詞。

舉例:

  • 當前生成到位置 3,不能讓 Decoder 看到位置 4 的詞。
  • 所以在 Attention 的 softmax 權重矩陣中,強行 mask 掉未來位置。

🤯 記憶小技巧:

EncoderDecoder
自我理解自我生成 + 看懂輸入
“我看整句,理解上下文”“我邊生成邊回看 Encoder 給的提示”

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

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

相關文章

路由器端口映射的意思、使用場景、及內網ip讓公網訪問常見問題和解決方法

一、端口映射是什么意思 端口映射是將內網主機的IP地址端口映射到公網中,內部機器提供相應的互聯網服務。當異地用戶訪問該這個端口時,會自動將請求映射到對應局域網內部的機器上。 二、端口映射常見使用場景 1,遠程訪問需求。當有…

GEO全域優化白皮書:盈達科技如何打造AI生態中的認知護城河

副標題:讓內容被AI優先引用,占領生成式引擎的“主屏入口” 一、GEO:生成式引擎時代的內容占位權之戰 隨著ChatGPT、Kimi、DeepSeek等生成式AI快速成為信息獲取的主流方式,搜索邏輯正在根本性改變:從“網頁排名”轉向“…

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析 MySQL DBA(數據庫管理員)的工作涉及數據庫監控、SQL優化、故障排查、備份恢復等復雜任務,傳統方式依賴手動操作和經驗判斷,效率較低。而DeepSeek大模型可以結…

系統設計思維的討論

我們經常說自己熟悉了spring,能夠搭建起一個項目基本框架,并且在此之上進行開發,用戶or客戶提出需求碰到不會的百度找找就可以實現。干個四五年下一份工作就去面試架構師了,運氣好一些可能在中小公司真的找到一份架構師、技術負責…

項目部署-(二)Linux下SpringBoot項目自動部署

一、項目部署架構 二、項目部署環境 192.168.138.100(服務器A): -Nginx :部署前端項目、配置反向代理 -MySQL:主從復制結構中的主庫 192.168.138.101(服務器B): -JDK:運行Java項目 -Git:版本控制工具 -Maven:項目構建…

【LeetCode 熱題 100】哈希 系列

📁1. 兩數之和 本題就是將通過兩層遍歷優化而成的,為什么需要兩層遍歷,因為遍歷 i 位置時,不知道i-1之前的元素是多少,如果我們知道了,就可以通過兩數相加和target比較即可。 因為本題要求返回下標&#xf…

【Kubernetes基礎】--查閱筆記1

目錄 Kubernetes 是什么為什么要用 KubernetesKubernetes 概念MasterNodePodLabelReplication ControllerDeploymentHorizontal Pod AutoscalerStatefulSetService服務發現機制 JobVolumePersistent VolumeNamespaceConfigmap Kubernetes 是什么 Kubernetes是一個開放的開發平…

卷積神經網絡CNN到底在卷些什么?

來源: 卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!_嗶哩嗶哩_bilibili卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!共計2條視頻,包括:卷…

Axios 的 POST 請求:QS 處理數據的奧秘與使用場景解析

在現代前端開發中,Axios 已經成為了進行 HTTP 請求的首選庫之一,它的簡潔易用和強大功能深受開發者喜愛。當使用 Axios 進行 POST 請求時,我們常常會遇到一個問題:是否需要使用 QS 庫來處理請求數據?什么時候又可以不用…

java面試題帶答案2025最新整理

文章目錄 一、java面試題集合框架1. 請簡要介紹 Java 集合框架的體系結構2. ArrayList 和 LinkedList 的區別是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解決 HashMap 的線程安全問題5. TreeSet 是如何保證元素有序的 二、java面試…

4.B-樹

一、常見的查找方式 順序查找 O(N) 二分查找 O(logN)(要求有序和隨機訪問) 二叉搜索樹 O(N) 平衡二叉搜索樹(AVL樹和紅黑樹) O(logN) 哈希 O(1) 考慮效率和要求而言,正常選用 平衡二叉搜索樹 和 哈希 作為查找方式。 但這兩種結構適合用于…

CTF--shell

一、原題 (1)提示: $poc"a#s#s#e#r#t";$poc_1explode("#",$poc);$poc_2$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[s]) (2)原網頁:一片空白什么都…

基于51單片機的正負5V數字電壓表( proteus仿真+程序+設計報告+講解視頻)

基于51單片機的正負5V數字電壓表( proteus仿真程序設計報告講解視頻) 仿真圖proteus7.8及以上 程序編譯器:keil 4/keil 5 編程語言:C語言 設計編號:S0101 1. 主要功能: 設計一個基于51單片機數字電壓表 1、能夠…

hive數倉要點總結

1.OLTP和OLAP區別 OLTP(On-Line Transaction Processing)即聯機事務處理,也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用…

【實戰手冊】8000w數據遷移實踐:MySQL到MongoDB的完整解決方案

?? 本文將帶你深入解析大規模數據遷移的實踐方案,從架構設計到代碼實現,手把手教你解決數據遷移過程中的各種挑戰。 ??博主其他匠心之作,強推專欄: 小游戲開發【博主強推 匠心之作 拿來即用無門檻】文章目錄 一、場景引入1. 問題背景2. 場景分析為什么需要消息隊列?為…

運行小程序需要選擇什么配置的服務器

主要是看有多少人瀏覽,如果是每天有幾十個人瀏覽,通常2核或者4核就可以滿足需求,內存的話建議4g或者8g,足夠的內存可以使服務器同時處理多個請求,避免因內存不足導致的卡頓或程序崩潰。 硬盤存儲方面,50GB…

基于SpringBoo的地方美食分享網站

作者:計算機學姐 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源碼”。 專欄推薦:前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄:…

Solidity私有函數和私有變量區別,私有變量可以被訪問嗎

web3面試題 私有函數和私有變量區別,私有變量可以被訪問嗎 ChatGPT said: 在 Web3 開發,尤其是使用 Solidity 編寫智能合約時,關于私有函數和私有變量的區別是常見的面試題。下面是詳細解析: ? 私有函數(Private Fu…

mongodb 安裝配置

1.下載 官網下載地址:MongoDB Community Download | MongoDB 2.使用解壓包 解壓包安裝:https://pan.baidu.com/s/1Er56twK9UfxoExuCPlJjhg 提取碼: 26aj 3.配置環境: (1)mongodb安裝包位置: &#xf…

多模態大語言模型arxiv論文略讀(十九)

MLLMs-Augmented Visual-Language Representation Learning ?? 論文標題:MLLMs-Augmented Visual-Language Representation Learning ?? 論文作者:Yanqing Liu, Kai Wang, Wenqi Shao, Ping Luo, Yu Qiao, Mike Zheng Shou, Kaipeng Zhang, Yang Yo…