深入 Transformer 學術核心:從數學原理到跨領域應用

更新 發佈閱讀 11 分鐘

我將從更具學術性的角度,深入探討 Transformer 模型的數學原理,並展示其在不同領域的應用範例。

以較淺顯易懂的方式介紹之後,我們將揭開 Transformer 模型內部最核心的運作機制。本文主要基於原論文《Attention Is All You Need》(Vaswani et al., 2017),旨在深入其學術原理,並展示其如何從最初的翻譯任務擴展到現今 AI 的各個角落。

一、 Transformer 的核心架構:編碼器-解碼器 (Encoder-Decoder)

Transformer 的標準架構主要由兩個部分堆疊而成:

* 編碼器 (Encoder):負責接收並處理輸入序列(例如,待翻譯的德文句子)。它的目標是將輸入序列中的每個詞彙,轉換成一個富含上下文語意的數字向量表示 (Contextualized Vector)。整個編碼器由 N 層相同的子層堆疊而成。

* 解碼器 (Decoder):負責根據編碼器產生的語意向量,逐一生成輸出序列中的詞彙(例如,翻譯後的英文句子)。它同樣由 N 層相同的子層堆疊而成。

這個架構的關鍵在於,解碼器在生成每一個詞彙時,都能「參考」到編碼器對整個輸入序列的完整理解。

(圖說:Transformer 的編碼器-解碼器架構圖,左側為 Encoder,右側為 Decoder)

二、 引擎核心:縮放點積注意力 (Scaled Dot-Product Attention)

這是 Transformer 中最核心的數學公式,也是「注意力」的具體實現。它的任務是計算一個序列中的每個元素應該對其他元素「關注」多少。

其公式如下:

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

我們來拆解這個看似複雜的公式:

* Q (Query), K (Key), V (Value) - 查詢、鍵、值:

* 在實作中,輸入序列的每個詞彙向量會被線性轉換(乘以三個不同的權重矩陣 W^Q, W^K, W^V)來得到對應的 Q, K, V 三個向量。

* Q (查詢):代表當前正在處理的詞彙,它主動發出查詢,想知道應該關注誰。

* K (鍵):代表序列中所有詞彙的「可供查詢的標籤」。Q 會與所有的 K 進行比較,來尋找相關性。

* V (值):代表序列中所有詞彙的「實際內容或意義」。

* QK^T — 計算相關性分數:

* 這是矩陣 Q 與矩陣 K 的轉置 (K^T) 進行點積運算。其結果是一個「注意力分數矩陣」,其中每個元素 score\_{ij} 代表第 i 個詞的 Q 對第 j 個詞的 K 的相似度或關聯性。分數越高,代表關聯性越強。

* \\frac{...}{\\sqrt{d\_k}} — 縮放 (Scaling):

* d\_k 是鍵向量 (K) 的維度。縮放的目的是為了維持訓練的穩定性。當向量維度 d\_k 很大時,QK^T 的計算結果可能會變得非常大,這會將 softmax 函數推向梯度極小的區域,導致模型在反向傳播時梯度更新困難。除以 \\sqrt{d\_k} 可以將其方差維持在 1 左右,讓訓練過程更穩定。

* \\text{softmax}(...) — 歸一化:

* 對縮放後的分數矩陣按行應用 softmax 函數,將每一行的分數轉換成一個總和為 1 的機率分佈。這個結果就是「注意力權重 (Attention Weights)」,它明確地表示了在處理某個詞時,應該將多少比例的注意力分配給句子中的其他每一個詞。

* ...V — 加權求和:

* 最後,將得到的注意力權重矩陣與值矩陣 V 相乘。這一步的本質是一個加權求和。對於每個詞彙而言,它的新向量表示,就是由句子中所有詞彙的 V 向量根據注意力權重加權平均得到的結果。被分配到高權重的詞,其 V 向量的貢獻就更大。

三、 關鍵機制:自註意力與跨注意力

根據 Q, K, V 來源的不同,注意力機制可以分為兩種:

* 自註意力 (Self-Attention):Q, K, V 均來自同一個來源序列。例如,在編碼器中,德文句子為了理解自身的上下文,會對自己進行自註意力計算。

* 跨注意力 (Cross-Attention):Q 來自一個序列,而 K 和 V 來自另一個序列。這主要發生在解碼器中。解碼器在生成英文詞彙時,它的 Q 來自於自身(已生成的英文部分),而 K 和 V 則來自編碼器的最終輸出(對整個德文句子的理解)。這一步,就是解碼器「看」向輸入序列並決定翻譯哪個部分的過程。

四、 輔助機制與設計巧思

* 多頭注意力 (Multi-Head Attention):與其只做一次注意力計算,不如將 Q, K, V 向量在維度上拆分成 h 個「頭 (Head)」,並行地進行 h 次不同的注意力計算。最後再將這 h 個頭的結果拼接起來。這允許模型在不同的「表示子空間」中同時關注不同方面的資訊(例如,一個頭關注語法結構,另一個頭關注語意關聯)。

* 位置編碼 (Positional Encoding):由於 Transformer 拋棄了 RNN 的序列性,它本身無法感知詞彙的順序。為此,模型在輸入詞向量中加入了一個「位置編碼」向量。原論文使用正弦 (sin) 和餘弦 (cos) 函數來生成這個位置向量,這種設計能讓模型輕易地學習到詞彙之間的相對位置關係。

* 殘差連接 (Residual Connections) 與層歸一化 (Layer Normalization):在每個子層(如多頭注意力和前饋神經網絡)的輸出,都使用了 Add & Norm 的技巧。即將子層的輸入與其輸出相加(殘差連接),然後進行層歸一化。這是訓練深度神經網絡的關鍵技術,能有效防止梯度消失,並加速模型收斂。

超越翻譯:Transformer 的多元應用範例

Transformer 的設計極具通用性,使其能夠在各種看似無關的領域大放異彩。

範例一:問答系統 (Question Answering)

* 代表模型:BERT (Bidirectional Encoder Representations from Transformers)

* 運作方式:BERT 主要利用 Transformer 的編碼器部分。在處理問答任務時,輸入通常是將「問題」和「文章段落」用特殊符號(如 [SEP])拼接起來的序列。

* 原理:模型對這個拼接後的序列進行深度的自註意力計算,讓問題中的每個詞都能關注到文章中的所有詞,反之亦然。這使得模型能充分理解問題與文章之間的複雜關聯。模型的最終輸出是預測文章中哪一個詞是答案的「開始位置」,哪一個詞是「結束位置」。

> 情境:

> * 文章:"臺積電由張忠謀於1987年創立,總部位於新竹科學園區。"

> * 問題:"台積電的總部在哪裡?"

> * Transformer 會做什麼:模型中的「總部」和「哪裡」等詞的查詢 (Q),會與文章中的「總部」和「新竹科學園區」的鍵 (K) 產生極高的注意力分數,從而精準定位答案。

>

範例二:程式碼生成 (Code Generation)

* 代表模型:GPT (Generative Pre-trained Transformer), GitHub Copilot

* 運作方式:這類模型通常是「僅解碼器 (Decoder-only)」的架構。它們被訓練來預測序列中的下一個詞元 (Token)。

* 原理:在程式碼生成的場景中,它不僅學習了程式語言的語法,還通過注意力機制學習了程式碼的上下文邏輯。

> 情境:

> # 功能:計算兩個數字的總和

> def add_numbers(a, b):

> # 在這裡輸入程式碼

>

> * Transformer 會做什麼:當你開始輸入時,模型會「關注」到函數名稱 add_numbers 和註解 計算兩個數字的總和。基於這個上下文,它會預測出最有可能的下一行程式碼是 return a + b。注意力機制讓它可以回看幾百行前的變數定義或函數宣告,這是傳統模型難以企及的。

>

範例三:多模態應用 - 圖像描述 (Image Captioning)

* 代表模型:Vision Transformer (ViT) 結合 Decoder

* 運作方式:這是 Transformer 跨越文字,向視覺領域進軍的典範。

* 原理:

* 首先,使用一個視覺模型(如 CNN 或 ViT)將輸入圖像分割成多個區塊 (Patches),並將每個區塊轉換成一個向量。這組向量就相當於圖像的「詞彙序列」。

* 然後,一個 Transformer 的解碼器開始生成文字描述。在生成每個詞時,它會對圖像的所有區塊向量進行跨注意力計算,決定此刻應該「看」著圖像的哪個部分。

> 情境:

> * 輸入:一張貓咪躺在沙發上睡覺的圖片。

> * Transformer 會做什麼:

> * 當解碼器生成 "A cat" 時,它的注意力可能集中在代表貓咪身體的圖像區塊上。

> * 當它接著生成 "is sleeping on a couch" 時,它的注意力會分別轉移到代表貓咪姿態和沙發的圖像區塊上。

這些範例充分證明了 Transformer 架構的強大通用性。其核心的注意力機制,本質上是一種高效學習和表示「關聯性」的工具,無論這種關聯性是存在於文字之間、程式碼之間,還是文字與圖像之間。

留言
avatar-img
留言分享你的想法!
avatar-img
Hank吳的沙龍
0會員
83內容數
這不僅僅是一個 Blog,更是一個交流與分享的空間。 期待在這裡與你相遇,一起探索科技、體驗生活、夢想旅行!💖
Hank吳的沙龍的其他內容
2025/07/21
在之前的文章中,我們認識了 RNN 和 LSTM。它們像是一個個勤奮的學徒,一個字一個字地閱讀,努力記住上下文。 但這種「循序漸進」的模式,天生就存在兩個問題: * 速度瓶頸:就像玩「傳話遊戲」,必須等前一個人說完,下一個人才能接話。這導致模型訓練速度很慢,難以處理海量資料。 * 長距離失
2025/07/21
在之前的文章中,我們認識了 RNN 和 LSTM。它們像是一個個勤奮的學徒,一個字一個字地閱讀,努力記住上下文。 但這種「循序漸進」的模式,天生就存在兩個問題: * 速度瓶頸:就像玩「傳話遊戲」,必須等前一個人說完,下一個人才能接話。這導致模型訓練速度很慢,難以處理海量資料。 * 長距離失
2025/07/21
我們來深入淺出地拆解一下比 RNN 更強大的 LSTM 模型。 我們認識了 RNN,它像一個有短期記憶的學徒,能夠記住緊鄰的上下文。但如果句子很長,資訊很複雜,RNN 就會像金魚腦一樣,忘記開頭的關鍵資訊。這就是所謂的「長期依賴問題」。
2025/07/21
我們來深入淺出地拆解一下比 RNN 更強大的 LSTM 模型。 我們認識了 RNN,它像一個有短期記憶的學徒,能夠記住緊鄰的上下文。但如果句子很長,資訊很複雜,RNN 就會像金魚腦一樣,忘記開頭的關鍵資訊。這就是所謂的「長期依賴問題」。
2025/07/20
在之前的文章中,我們了解到像「詞袋模型」這樣的早期方法,雖然能統計詞彙,但卻像個金魚腦,完全記不住句子的順序。而 RNN(Recurrent Neural Network,循環神經網絡)的誕生,就是為了解決這個「失憶」問題。
2025/07/20
在之前的文章中,我們了解到像「詞袋模型」這樣的早期方法,雖然能統計詞彙,但卻像個金魚腦,完全記不住句子的順序。而 RNN(Recurrent Neural Network,循環神經網絡)的誕生,就是為了解決這個「失憶」問題。
看更多
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型,並在 AI說書 - 從0開始 - 115 載入權重並執行 Tokenizing,現
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型,並在 AI說書 - 從0開始 - 115 載入權重並執行 Tokenizing,現
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型。 現在我們來載入預訓練權重,預訓練的權重包含 Transformer 的智慧
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型。 現在我們來載入預訓練權重,預訓練的權重包含 Transformer 的智慧
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 113 中安裝了 Google Trax,現在來建立 Transformer 模型: model = trax,models.
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 113 中安裝了 Google Trax,現在來建立 Transformer 模型: model = trax,models.
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Vaswani 等人 2017 年解決了設計 Transformer 時最困難的 NLP 問題之一,對於我們人機智慧設計師來說,機器翻譯的人類基準似乎遙不可及,然而,這
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Vaswani 等人 2017 年解決了設計 Transformer 時最困難的 NLP 問題之一,對於我們人機智慧設計師來說,機器翻譯的人類基準似乎遙不可及,然而,這
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 如 AI說書 - 從0開始 - 78 所述,經過 AI說書 - 從0開始 - 74 到目前為止的實驗,應可以漸漸感受到 Transformer 模型如何從數學層面漸漸往
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 如 AI說書 - 從0開始 - 78 所述,經過 AI說書 - 從0開始 - 74 到目前為止的實驗,應可以漸漸感受到 Transformer 模型如何從數學層面漸漸往
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Decoder
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Decoder
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News