RNN 的魅力與極限——當機器試圖記住過去

Ilya Sutskever 的閱讀清單連放三篇 RNN 相關文章:Karpathy 的傳奇部落格、Olah 的 LSTM 視覺化解說、Zaremba 的正則化論文。在 Transformer 出現之前,RNN 和 LSTM 統治了所有序列任務。理解它們的魅力與極限,才能看懂 Transformer 為什麼是革命。

RNN 的魅力與極限——當機器試圖記住過去

本文是「Ilya Sutskever 推薦讀什麼」系列的第 5 篇。本系列解讀 OpenAI 共同創辦人 Ilya Sutskever 給 John Carmack 的傳奇閱讀清單,探索一位頂尖 AI 科學家眼中「90% 重要的東西」。

前幾篇我們走過了 Sutskever 清單的理論層:壓縮即理解複雜性的生與滅智慧的數學定義。從這篇開始,清單進入一個不同的領域,不再問「什麼是智慧」,而是問「怎麼讓機器處理時間」。

普通的神經網路就像一台照相機。你給它一張圖片,它輸出一個判斷,然後就忘了這回事。但語言不是照片,音樂不是照片,股票走勢也不是照片。這些東西有順序、有前後文、有時間軸。一個句子裡「他」指的是誰,取決於前面出現過哪些名字。一首歌的下一個音符是什麼,取決於前面的旋律走向。要處理這類資料,你需要的不是照相機,而是攝影機,一種能「記住前面發生過什麼」的神經網路。

這就是循環神經網路(Recurrent Neural Network,RNN)的核心概念。Sutskever 在 27 項清單中連續放了三篇 RNN 相關的文章,分別是 Andrej Karpathy 的部落格文章、Chris Olah 的 LSTM 視覺化解說、以及 Wojciech Zaremba 與 Sutskever 本人合著的正則化論文。在 2015 年前後,RNN 和它的改良版 LSTM 統治了幾乎所有的序列處理任務。要理解後來 Transformer 為什麼是一場革命,你必須先理解它革的是誰的命。

一篇改變 AI 教育史的部落格文章

2015 年 5 月,一個名叫 Andrej Karpathy 的 Stanford 博士生在自己的部落格上發了一篇長文,標題叫〈The Unreasonable Effectiveness of Recurrent Neural Networks〉。這個標題直接致敬了物理學家維格納(Eugene Wigner)1960 年的經典文章〈The Unreasonable Effectiveness of Mathematics in the Natural Sciences〉,談的是數學在自然科學中不合理的有效性。Karpathy 把「數學」換成了「循環神經網路」,而他接下來要展示的,確實不合理地有效。

Karpathy 在這篇文章中做了一件很簡單的事:他訓練一個字元級別的 RNN,意思是這個模型一次只看一個字元(字母、標點、空格),然後預測下一個字元是什麼。聽起來很原始,但結果讓人目瞪口呆。當他把莎士比亞全集餵進去之後,模型學會了產生看起來像莎士比亞戲劇的文字——有角色名、有舞台指示、有五步抑揚格的韻律感。不是完美的莎士比亞,但一個一次只看一個字母的模型居然能學到這種層次的結構,這件事本身就足以讓人重新思考「理解」的意義。

更瘋狂的是接下來的實驗。Karpathy 把同樣的模型餵了 474MB 的 Linux 核心原始碼,結果模型學會了 C 語言的基本語法:括號會正確配對、縮排風格一致、甚至會產生看起來合理的函式名稱和註解。他又餵了 LaTeX 格式的代數幾何論文,模型學會了產生帶有數學公式、定理編號和參考文獻格式的文字。每一個實驗都在說同一件事:RNN 能從原始字元序列中自動提取出令人驚訝的結構規律,而且不需要任何人類的事先標註或規則設定。

這篇文章發表後迅速成為 AI 圈的現象級文章,至今仍被認為是 AI 史上最好的技術入門文之一。Karpathy 同時在 GitHub 上開源了他的 char-rnn 程式碼,讓任何人都能在自己的電腦上重現這些實驗。這個舉動在 2015 年產生了一波「用 RNN 生成各種文字」的熱潮,從食譜到嬰兒名字到魔法咒語,網路上到處是人們用 char-rnn 玩出來的成果。Karpathy 寫這篇文章的時候還只是個博士生,但他的軌跡後來證明了這不是曇花一現。他隨即成為 OpenAI 的創始成員之一,2017 年被 Elon Musk 挖去擔任 Tesla 的 AI 總監,負責 Autopilot 的視覺系統。後來又回到 OpenAI,最後獨立出來創辦了 AI 教育公司 Eureka Labs。從一篇部落格到改變自動駕駛產業的視覺架構,Karpathy 的故事本身就是「不合理的有效性」的最佳註腳。

一條傳送帶和三道門:Chris Olah 讓所有人看懂 LSTM

Karpathy 的文章展示了 RNN 能做什麼,但它刻意跳過了一個技術問題:vanilla RNN,也就是最原始版本的 RNN,其實很容易壞掉。問題出在序列一長,RNN 就會遺忘。一段 50 個字的句子它還能記住開頭,但一段 500 個字的段落?開頭說了什麼早就被洗掉了。這個問題叫做梯度消失(vanishing gradient):在反向傳播的過程中,梯度信號每經過一個時間步就會被乘以一個小於 1 的係數,經過幾十步之後就衰減到接近零。模型不是不願意記住過去,是數學結構讓它做不到。

2015 年 8 月,也就是 Karpathy 文章發表三個月後,Chris Olah 在自己的部落格上發了一篇〈Understanding LSTM Networks〉。Olah 要解決的不是 RNN 的問題,而是解釋 LSTM 如何解決 RNN 的問題。長短期記憶網路(Long Short-Term Memory,LSTM)是 Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年提出的架構,設計目的就是讓 RNN 能記住更久的資訊。但 Hochreiter 和 Schmidhuber 的原始論文極其難讀,充滿了密集的數學推導,讓很多實務工作者望而卻步。Olah 的貢獻不在於提出新理論,而在於畫了一系列精美的互動式圖解,把 LSTM 解釋到任何人都能懂。

Olah 用了一個非常精準的比喻:LSTM 的核心是一條「傳送帶」。想像一條工廠裡的輸送帶,資訊就放在上面往前走。在標準 RNN 裡,每一個時間步都會把傳送帶上的東西大幅度改寫,久了之後最初的資訊就被覆蓋殆盡。但 LSTM 在傳送帶上加了三道門,每道門管一件事。第一道是遺忘門(forget gate):它決定傳送帶上哪些舊資訊應該被丟掉。第二道是輸入門(input gate):它決定哪些新資訊應該被放上傳送帶。第三道是輸出門(output gate):它決定傳送帶上的資訊有哪些應該在此刻被讀出來使用。三道門各自是一個小型的神經網路,透過訓練資料學會在什麼時候開、什麼時候關。

為什麼這樣就能解決梯度消失?關鍵在於傳送帶上的資訊不再被強制改寫,它可以選擇性地保留。如果遺忘門決定不忘記某些資訊,那些資訊就可以完整地沿著傳送帶流過很多個時間步,梯度也就能沿著這條路線回傳而不衰減。這就像在一條湍急的河旁邊修了一條平行渠道。水走主河道會被攪動改寫,但走旁邊的渠道就能安靜地保留原樣。有了這條渠道,下游的人終於能收到上游幾百步之前寄出的訊息了。

Olah 寫這篇文章的時候還不是什麼大人物。但他後來的軌跡讓這篇文章多了一層特殊的意義:他是 Distill 期刊的創辦人,這份互動式線上期刊專門用視覺化的方式解釋深度學習概念,在學術圈開創了「可解釋性」研究的先河。更重要的是,他後來成為 Anthropic 的共同創辦人之一,在那裡帶領「可解釋性」團隊,試圖打開大型語言模型的黑盒子,理解模型內部到底在做什麼。從用圖解拆解 LSTM 的三道門,到拆解 Claude 的神經元在想什麼,Olah 一直在做同一件事:讓複雜的東西變得可以被人類理解。

當 Dropout 遇上時間:Zaremba 的正則化突圍

Karpathy 展示了 RNN 的潛力,Olah 解釋了 LSTM 的運作原理。但在實際工程中,還有一個很要命的問題:過擬合。RNN 的參數在每個時間步都被重複使用,這意味著它特別容易對訓練資料產生過度的記憶。用白話來說,模型會把訓練資料裡的噪音也當成規律記下來,導致在新資料上表現很差。

前饋神經網路有一個漂亮的解法叫 Dropout:訓練的時候隨機關掉一部分神經元,逼迫模型學會更魯棒的特徵表示。但直接把 Dropout 套到 RNN 的循環連接上會出大問題。因為 RNN 的循環連接在每個時間步之間傳遞記憶,如果你在這條記憶鏈上隨機丟資訊,等於是在傳送帶上隨機挖洞,模型的長期記憶會被嚴重破壞。到了 2014 年,這是一個所有 RNN 研究者都知道但沒人有好解法的問題。

Wojciech Zaremba、Ilya Sutskever 和 Oriol Vinyals 在 2014 年發表的〈Recurrent Neural Network Regularization〉解決了這個難題。他們的洞察說起來很簡單,但完全出乎意料:Dropout 只應該加在 LSTM 的非循環連接上。什麼意思?就是從輸入到隱藏層、從隱藏層到輸出這些路徑可以加 Dropout,但循環連接本身不要碰。這樣一來,模型在每個時間步仍然會被隨機「干擾」,被迫學習更穩健的特徵,但時間維度上的記憶傳遞不會被打斷。實驗結果顯示,這個方法在語言建模、語音辨識、機器翻譯和影像字幕生成等多項任務上都大幅降低了過擬合,讓 LSTM 的實用性再上一個台階。

這篇論文的作者陣容值得留意:Zaremba 是波蘭裔的數學家,曾在國際數學奧林匹克拿下銀牌,後來成為 OpenAI 的共同創辦人之一,先是帶領機器人團隊(那隻會解魔術方塊的機械手就是他的團隊做的),後來轉而負責 GPT 系列和 Codex 的開發。Sutskever 本人是論文的共同作者,清單 27 項中他掛名的論文屈指可數,這是其中之一。如果你回想本系列篇 1 討論的最小描述長度原則(MDL),正則化其實就是同一件事的工程版本:限制模型的複雜度,逼它用更少的「描述長度」來表達學到的知識,從而避免記住噪音。壓縮即理解,而正則化就是強制壓縮的技術手段。

RNN 的黃金時代與它被革命的那一天

從 2014 年到 2017 年,LSTM 幾乎統治了所有涉及序列的 AI 任務。Google 翻譯在 2016 年從統計方法切換到基於 LSTM 的神經機器翻譯,翻譯品質一夜之間跨越了好幾年的進步。Apple 的 Siri、Google 的語音助手背後都是 LSTM 在做語音辨識。影像自動字幕、文字生成、情感分析,只要你的資料有順序,LSTM 就是首選工具。這三篇文章就是那個時代的三根支柱:Karpathy 讓世人看見 RNN 的潛力,Olah 讓工程師理解 LSTM 怎麼運作,Zaremba 讓 LSTM 在實務中真正好用。

但 LSTM 有一個死穴,是三道門怎麼設計都救不了的:它天生是串行的。模型必須先處理完第一個字,才能處理第二個字;處理完第二個字,才能到第三個。你不能同時處理整個句子的所有位置,因為後面的隱藏狀態依賴前面的隱藏狀態。這意味著訓練速度有硬上限,你的 GPU 再多,LSTM 也沒辦法用好它們的並行能力。當訓練資料從幾百 MB 膨脹到幾百 GB 甚至幾 TB 的時候,這個瓶頸變得無法忍受。

2017 年,Google 的一群研究者發表了〈Attention Is All You Need〉,提出了 Transformer 架構。Transformer 做了一件聽起來大膽到荒謬的事:它完全拋棄了循環結構。不再一步一步地沿時間軸走,而是讓序列中的每個位置直接跟所有其他位置對話。這不只解決了並行化的問題,也在長距離依賴上遠遠超過了 LSTM。你不需要靠一條傳送帶把資訊從第 1 個字傳到第 500 個字,因為第 500 個字可以直接「注意」到第 1 個字。

但理解 Transformer 為什麼重要,你必須先理解 RNN 的限制在哪裡。如果你不知道串行處理的痛苦,你就不會懂為什麼並行化是革命。如果你不知道梯度消失的絕望,你就不會懂為什麼「直接注意」是解放。如果你不知道三道門的精巧設計,你就不會真正體會 Transformer 用一個統一的注意力機制取代了整套門控系統,這到底有多優雅。Sutskever 把這三篇放進清單,原因很簡單:不懂 RNN,你就看不見 Transformer 的真正價值。

我的觀察:Sutskever 為什麼選部落格而不選論文

回頭看清單中這三項,有一個很有意思的選擇值得細想。Karpathy 的文章是一篇個人部落格,Olah 的也是。Sutskever 完全可以推薦 Hochreiter 和 Schmidhuber 1997 年的 LSTM 原始論文,或者 Elman 1990 年提出簡單循環網路的經典論文。但他沒有。他選了兩篇部落格文章,而且這兩篇的共同特點是:寫得非常好,比原始論文好懂太多。

這透露了 Sutskever 對知識傳播的一種立場。他給 John Carmack 的清單,目的不是讓 Carmack 去讀最精確的數學推導,而是讓他真正理解這些概念。在 Sutskever 的判斷中,Olah 的部落格對 LSTM 的解釋,比 Hochreiter 和 Schmidhuber 的原始論文更有價值。至少對於「建立正確的直覺」這件事而言。Karpathy 那篇文章也一樣,它的價值不在於技術突破(char-rnn 不是什麼新發明),而在於它讓讀者親眼「看見」RNN 的能力,從而建立起對序列模型的直覺。

我覺得這個選擇對臺灣的技術教育很有啟示。我們的工程教育傾向於推崇原始論文、推崇最嚴謹的數學推導,好像讀懂了最難的版本才算真正理解。但 Sutskever 的清單在說一件不同的事:理解的第一步是直覺,不是公式。一位能力足以創辦 SSI、身價被市場估為數百億美元的科學家,推薦的是兩篇讓人「看懂」的文章,而不是兩篇讓人「讀完覺得自己很厲害」的論文。知識的價值不在於它有多難取得,而在於它被理解之後能產生多大的力量。Karpathy 和 Olah 這兩篇文章之所以出現在這份清單上,正是因為它們讓「理解」這件事變得更容易發生。


← 上一篇:看見的革命 → 下一篇:注意力的誕生 📋 回到系列目錄:那份消失的 Email