Transformer 和 RNN 最根本的差別是什麼?
最根本的差別在於處理順序:
這個根本差異讓 Transformer 在幾乎所有 NLP 任務上都超越了 RNN,並最終催生了 GPT、Claude 等現代 LLM。
Attention 分數是怎麼計算的?
簡化版計算流程:
這個過程對序列中的每個詞都進行一次,且可以完全並行計算。
Claude 的 Context Window 限制和 Attention 機制有什麼關係?
關係非常直接。Self-Attention 需要對序列中的每一對詞做計算,計算量(粗略說)隨序列長度呈 平方增長(O(n²))。Context Window 越長,計算成本越高,回覆速度越慢,硬體記憶體需求也越大。
這是為什麼即使技術上可以讓 Context Window 無限長,實際上 Claude 的 Context 有上限——不僅是工程成本,也是在「能力邊界」和「計算可行性」之間的平衡。也解釋了為什麼在非常長的 Context 中,越遠的內容對模型輸出的影響越小:Attention 分散在太多詞之間,單一詞的影響力被稀釋了。
為什麼說 'Attention Is All You Need'?Transformer 不需要 RNN 嗎?
是的,論文的核心主張正是這個:Self-Attention 機制本身就足以處理語言中的長程依賴,不再需要 RNN 的逐步記憶傳遞機制。
但 Transformer 並不是「只有 Attention」,它還包含:位置編碼(Position Encoding,因為 Attention 本身不感知詞序,需要額外注入位置資訊)、前饋神經網路層(FFN,在 Attention 之後進行非線性變換)、殘差連接(Residual Connection)和層正規化(Layer Norm)。
「Attention Is All You Need」的「All You Need」指的是:不再需要 RNN 的遞迴結構,其他組件仍然必要。這個論文標題其實是帶有一點誇張修辭的行銷表達,但核心觀點是正確的。
當你問 Claude 一個需要理解前後語境的問題,比如「她拿起了書,然後把它放進包包裡——這個'它'指的是什麼?」,Claude 能正確回答「書」,而不是「包包」。這個看似簡單的能力,背後依賴的是現代 AI 最核心的創新:Attention(注意力)機制。
理解 Attention 機制不只是技術好奇心的滿足——它能幫助你理解 Claude 為什麼有時候表現優異、有時候又會在長文本中出錯,以及如何寫出讓 Claude 更容易「注意到」關鍵資訊的提示詞。
在 Attention 機制出現之前,語言模型主要依靠 RNN(循環神經網路)。RNN 的工作方式像逐字閱讀的讀者:它從句子的第一個字開始,一個字一個字地往右讀,同時把「前面讀到的資訊」壓縮成一個固定大小的向量,傳遞給下一步。
問題顯而易見:在處理長句子時,最早讀進去的資訊被後來的資訊不斷覆蓋,最終幾乎消失。這就是所謂的 長程依賴問題(Long-Range Dependency Problem)——「書」在句子開頭出現,但它的指代資訊必須一路被壓縮傳遞到句子末尾,路途越長,訊號越弱。
2017 年,Google Brain 的論文《Attention Is All You Need》提出了一個根本性的改變:不要再逐字讀,而是讓每個字同時「看」所有其他字,再決定對哪些字投入更多注意力。
假設我們要處理這個句子:「銀行家走到河岸邊存了一筆錢」。「銀行」這個詞在中文裡有兩個意思(金融機構 / 河的兩側),Attention 機制如何判斷這裡指的是金融機構?
Self-Attention 為句子中的每個詞生成三個向量:
- Query(查詢):「我想找什麼樣的信息?」
- Key(鍵值):「我能提供什麼樣的信息?」
- Value(值):「如果你選上我,我攜帶的實際信息是什麼?」
當「銀行」這個詞計算它的 Query 向量時,它去和句子裡每個其他詞的 Key 向量做點積計算(一種相似度計算)。「存了一筆錢」的 Key 向量與「銀行」的 Query 向量高度匹配,因此「銀行」會給「存了一筆錢」很高的 Attention 分數;而「河岸邊」的 Key 向量與此 Query 匹配度較低。
最終,「銀行」的新表示(Representation)是所有詞的 Value 向量的加權平均——高 Attention 分數的詞貢獻多,低分的詞貢獻少。這就是 Attention 機制如何讓「銀行」在這個上下文中被理解為金融機構。
如果只有一組 Query/Key/Value,模型每次只能從一個角度理解詞與詞之間的關係。Multi-Head Attention(多頭注意力)的做法是:同時跑多個(例如 12 個或 32 個)獨立的 Attention 計算,每個「頭」(head)學習關注不同類型的關係。
在同一個句子裡:
- 某個 head 可能專門學習語法依賴(主詞 → 動詞)
- 另一個 head 可能學習語義相關性(動物詞 → 動作詞)
- 還有 head 學習指代關係(代詞 → 它指的名詞)
所有 head 的輸出被拼接在一起,再通過一個線性層整合成最終表示。這種設計讓 Transformer 能同時從多個維度理解文本,遠比單一 RNN 的線性讀取豐富。
Attention 機制帶來了幾個關鍵突破:
並行計算:不同於 RNN 必須逐字序列處理,Self-Attention 可以同時計算一個句子裡所有詞對之間的關係,大幅提升訓練速度,使得在大規模語料上訓練成為可能。
任意距離的依賴:無論兩個詞在句子中距離多遠,Self-Attention 都能直接建立它們之間的連結,不需要像 RNN 那樣靠訊號逐步傳遞(每傳一步就衰減一些)。
可解釋性(部分):Attention 分數可以被可視化——研究者可以看到模型在生成某個詞時「最在乎」哪些上下文詞,這比 RNN 的黑盒更透明。
規模擴展:Attention 的架構天然支持參數規模的擴展。GPT、Claude、Gemini 等大型語言模型都是 Transformer 的後代,靠著數百億乃至數兆個參數,在海量文本上訓練出對語言的深層理解。
理解 Attention 機制能直接改善你的使用體驗。以下是幾個具體啟示:
關鍵資訊放在提示詞的前段或後段:研究顯示,在長 Context 中,模型對中間段落的「注意力」相對較低(「中間消失」效應)。你最重要的指令和限制應該放在提示詞的開頭,或在最後明確重申。
消歧義很重要:Attention 機制依賴上下文來消除歧義,但如果上下文本身模糊,模型就只能猜。明確說明你的語境(「在程式開發的場景下」、「針對非技術讀者」),讓 Attention 有更清晰的信號可以抓取。
超長 Context 下的注意力稀釋:Context Window 越長,模型需要計算的 Attention 關係對數呈平方增長。非常長的 Context 中,早期內容對生成結果的影響會降低。這是使用長文件時需要牢記的結構性限制。