Attention Is All You Need:一篇論文如何改變一切
蘇茨克維的閱讀清單把 Transformer 論文和它的逐行程式碼實作並列。讀完 RNN 和注意力機制之後,回頭看這篇論文,才真正理解它做了什麼:把注意力從配角變成唯一主角,讓機器同時看見一切。

本文為「Ilya Sutskever 推薦讀什麼」系列第 7 篇。本系列帶你走一遍 OpenAI 共同創辦人伊利亞.蘇茨克維(Ilya Sutskever)的傳奇閱讀清單,他曾告訴 John Carmack:「讀完這些,你就懂了 90% 的 AI。」
如果你跟著這個系列一路讀到這裡,腦中應該已經有了一幅圖。RNN 教會機器「記住過去」,注意力機制讓模型「回頭看」,Bahdanau 的注意力解決了翻譯長句子時資訊流失的問題,Pointer Networks 把注意力從輔助工具變成輸出機制。這些都是重要的進步,但它們有一個共同的限制:注意力始終是 RNN 的配角。它讓 RNN 表現更好,卻沒有人問一個更直接的問題。如果注意力本身就夠了呢?
2017 年,Google Brain 的八位研究者交出了答案。〈Attention Is All You Need〉把注意力從配角變成唯一主角,徹底拿掉了循環結構。這不是修修補補,是整個典範的切換。蘇茨克維後來在訪談中說,Transformer 一出來,他們在 OpenAI 立刻意識到這就是他們等的東西,馬上就開始訓練 GPT-1。
這篇文章不會重新介紹 Transformer 的技術細節。AINEXT 的「AI 經典文獻回顧」系列已經寫過兩篇深度解析,有興趣的讀者可以直接跳過去:[為什麼注意力就夠了:一篇改變一切的論文]({{< ref "20170612-attention-is-all-you-need" >}})完整拆解了架構設計、自注意力、多頭注意力和位置編碼;[一篇論文,八條路:Transformer 發明者的分岔命運]({{< ref "20170612-transformer-eight-paths" >}})則追蹤了八位作者離開 Google 後的截然不同命運,從 Noam Shazeer 被花 27 億美元請回來,到 Llion Jones 公開說自己「厭倦了 Transformer」。
我想做的是另一件事:從蘇茨克維的視角重新看這篇論文。他為什麼把它和一份逐行程式碼實作放在同一份清單上?讀完 RNN、LSTM、注意力機制之後,Transformer 在他的知識體系中扮演什麼角色?
從 RNN 到 Transformer:拿掉什麼,反而更強了
要理解 Transformer 為什麼是革命性的,得先回想 RNN 的致命弱點。篇 5 談過,RNN 像一個只能低頭看路的人,它逐字處理序列,每讀一個字就更新一次「記憶」。第一個字的資訊,到了第一百個字的時候已經被覆蓋、稀釋、扭曲了無數次。LSTM 加了「門」來控制遺忘和記憶,篇 6 介紹的 Bahdanau 注意力讓模型可以回頭看。但底層的循環結構始終沒變,資訊必須一步一步傳遞,沒有捷徑。
Transformer 做了一件當時近乎異端的事:把整個循環結構拿掉。不是調整,是直接移除。取而代之的是「自注意力」(self-attention),一句話裡的每個字都可以直接看到所有其他字,不需要經過任何中間步驟。讀到「河岸」的時候,模型可以直接回去看句首的「銀行」和後面的「陡峭」,判斷這裡說的是河邊而不是金融機構。資訊不再需要沿著整句話一步步傳遞。用一個比喻來說,RNN 是接力賽,每棒都有損耗;Transformer 是全場廣播,每個人同時聽到所有訊息。
蘇茨克維在 Lex Fridman 的訪談中解釋過,Transformer 的成功不只是因為注意力。注意力早就存在好幾年了。真正的關鍵有兩個。第一,Transformer 天生就適合 GPU。自注意力的核心運算是矩陣乘法,而矩陣乘法正是 GPU 最擅長的事。第二,它不是循環的,所以模型更「淺」,更容易優化。RNN 必須等第一個字處理完才能處理第二個字,就算你有一萬張 GPU,大部分時間都在閒置。Transformer 可以同時處理所有的字,GPU 的每一個運算核心都能滿載工作。
這個效率差異是量級的跨越。Google 用 RNN 架構訓練翻譯模型要好幾週,Transformer 用八張 P100 GPU 三天半就跑出了更好的結果。Noam Shazeer 後來打了一個比方:RNN 就像蒸汽機,Transformer 是內燃機,你可以用蒸汽機完成工業革命,但那會很痛苦。而效率的跨越還帶來了連鎖反應:Transformer 能吃進前所未有的資料量,資料量的暴增反過來讓模型學到更深層的語言規律。這是一個正向循環,起點是更好的架構,不是更多資源。
為什麼 Transformer 是更好的壓縮器
現在可以把 Transformer 放回蘇茨克維的知識體系裡了。
這個系列的紅線是「壓縮即智慧」。蘇茨克維相信,預測下一個 token 本質上就是壓縮,壓縮就是理解。一個能完美預測文字的模型,就是一個完美的文字壓縮器。如果你已經知道下一個字是什麼,你就不需要儲存它了。篇 1 談的 Kolmogorov 複雜度是這個信念的數學基礎,篇 2 的 MDL 原則把它轉化為實踐方法,篇 3 的 Shane Legg 博士論文用它定義了「智慧」。現在來到工程層:什麼樣的架構能把壓縮做到最好?
答案跟「看得多遠」直接相關。壓縮的本質是找規律。規律的跨度越大、層次越深,壓縮就越有效。一個只能看到最近五個字的模型,頂多找到「I am」後面通常接動詞這種短距離模式。一個能同時看到整段文字的模型,就能發現跨越數百個字的依賴關係,比如小說開頭提到的線索在結尾揭露。
RNN 的問題正是在這裡。它的記憶像一根不斷被覆蓋的磁帶,距離越遠,資訊衰減越嚴重。LSTM 和注意力機制緩解了這個問題,但循環結構本身就是瓶頸。資訊必須經過每一個中間步驟才能從句首到句尾,每一步都是一次潛在的損耗。
Transformer 的自注意力把這個瓶頸拿掉了。句首和句尾之間的距離是一步,不管句子有多長。每個字都能直接存取所有其他字的資訊,不需要中間人。換句話說,Transformer 天生就能捕捉更遠距離的依賴關係,找到更深層的規律,做到更好的壓縮。
這可以從後來的發展得到驗證。GPT 系列的語言模型本質上就是 Transformer 做的壓縮器,而每一代模型的困惑度(perplexity,衡量預測準確度的指標)都在持續下降。困惑度越低,代表模型對文字的預測越準,壓縮越有效。從 GPT-1 到 GPT-4,幾乎所有進步都建立在 Transformer 這個架構之上。蘇茨克維把 Transformer 放進清單,不只是因為它是個好架構。對他來說,它是目前人類找到的最好的壓縮機制。
The Annotated Transformer:為什麼程式碼跟論文一樣重要
蘇茨克維的清單有一件很有意思的事:他不只放了〈Attention Is All You Need〉,還放了 The Annotated Transformer,一份用 PyTorch 逐行實作整篇論文的教學。清單中論文是第 14 項,而這份程式碼版本是第 1 項。編號不一定反映優先級,但兩者並列本身就說明了態度。
The Annotated Transformer 是 Sasha Rush 在 Harvard 任教時帶著 NLP 團隊做的。2018 年,他們把論文裡的每一個方程式、每一個架構組件,都用可執行的 Python 程式碼重新寫了一遍,搭配逐行的文字解釋和視覺化圖表。Rush 後來到了 Cornell 大學,也加入 Hugging Face 擔任研究員。2022 年,這份教學被 Austin Huang、Suraj Subramanian 等人用現代 PyTorch 完整重寫,成為全世界學 Transformer 最被推薦的入門資源之一。
蘇茨克維把程式碼版本放進清單,透露了他對學習的理解。論文告訴你「是什麼」和「為什麼」,程式碼告訴你「到底怎麼做」。讀論文的時候,你可能覺得自注意力的概念清楚、多頭注意力的直覺合理、位置編碼的設計精妙。但真的打開 Jupyter Notebook,一行一行跑 The Annotated Transformer 的時候,你會發現那些看似清楚的概念藏著無數細節。學習率的 warmup 策略怎麼寫?Layer Normalization 要放在自注意力之前還是之後?殘差連接具體怎麼跟 Dropout 配合?
這些東西在論文裡往往一兩句話帶過,但它們決定了模型能不能成功訓練。蘇茨克維選了程式碼版本,等於在說:只讀論文就覺得自己懂了,其實只懂了一半。真正的理解要落實到每一行程式碼,落實到你能從零開始把整個架構建起來。這跟他的壓縮哲學是一致的。理解就是能用最少的資訊重建原始內容,而「能從零實作」正是最嚴格的檢驗。
這個選擇也反映了他對 AI 研究者的期待。在越來越多人靠呼叫 API 和使用預訓練模型做事的今天,他依然認為從底層理解架構是不可替代的。你不需要每次都從零寫 Transformer,但至少要有過一次從零建構它的經歷,才能真正知道它能做什麼、不能做什麼、未來可以從哪裡突破。
看見一切之後,然後呢?
回頭看蘇茨克維的閱讀清單,Transformer 的位置恰好在一個轉折點上。在它之前,我們讀的是基礎理論(Kolmogorov 複雜度、MDL 原則)和架構演進(CNN、RNN、注意力機制)。Transformer 是這些線索的交匯點。它繼承了注意力機制的精髓,用更好的架構做到更有效的壓縮,同時解鎖了 GPU 平行運算的威力,讓模型規模的增長變得可能。
但清單還沒結束。蘇茨克維在 Transformer 之後放了 Neural Turing Machine、關係推理、Variational Autoencoder,還有 Scaling Laws。這些論文指向的問題已經超越了「怎麼處理序列」。它們在問:機器能不能推理?能不能記憶?模型的能力跟規模之間到底是什麼關係?
Transformer 解決了「怎麼讓模型看見一切」。但看見一切之後,要怎麼思考?蘇茨克維的清單接下來就是在回答這個問題。
← 上一篇:注意力的誕生 → 下一篇:記憶、推理、關係理解 📋 回到系列目錄:那份消失的 Email