10月18日,著名電腦科學家 、OpenAI創始成員Andrej Karpathy 接受海外播客Dwarkesh Patel的訪談,本次深度對話系統性地探討了其對當前人工智慧發展的諸多觀察與思考。本次對話涵蓋了AI Agent的發展路徑、深度學習的歷史範式轉移、強化學習的根本缺陷、大語言模型的內在機制與“模型坍塌”問題、AGI對未來經濟的真實影響,以及AI在教育領域的革命性潛力。針對業內“AI Agent元年”的過度樂觀,Karpathy認為,要讓AI Agent達到能替代人類實習生的實用水平,解決其在智能、多模態、持續學習等方面的根本缺陷,至少需要十年的時間。Karpathy指出,當前主流的強化學習範式,在解決複雜認知任務上,是一種極其低效、充滿噪聲且根本上“非人”的學習方式。因為它試圖從一個極其稀疏、單一的最終結果訊號中,去反推和調整一個漫長而複雜的過程,這在資訊理論上是極度浪費的。人類根本不使用強化學習,我們還需要更多根本性的創新。他謹慎對待將AI與動物進行類比的觀點,認為兩者源於截然不同的最佳化過程(模仿學習 vs. 進化)。AI更像是在數字世界中通過模仿人類資料建構的“幽靈”或“精神體”,而非複製生物進化的產物。Karpathy警告了“模型坍塌”的風險——持續用模型自身生成的、缺乏熵的內容進行訓練,將導致其能力嚴重退化。對於未來,他預測最優的“認知核心”可能僅需十億等級參數,遠小於當前動輒兆的競賽規模,因為現有大模型的主要負擔是壓縮質量低劣的網際網路資料。對於AGI將引發經濟增長率急劇提升的普遍預期,Karpathy他認為AI只是計算技術延伸的一部分,其影響將是平滑且漸進的,會融入現有的指數增長曲線,而不會在GDP資料上造成一個清晰可見的“突變點”。Karpathy還解釋了為何標榜“通用”的AI技術,目前幾乎一邊倒地在程式設計領域創造最大價值。這不僅因為程式碼是高度結構化的文字,更因為程式設計領域已擁有完善的基礎設施(如IDE、版本控制工具)來支援AI的整合與協作。01 AI Agent的十年之路你為什麼認為這將是“AI Agent的十年”,而不是“AI Agent元年”?要讓AI Agent變得真正實用,使其能像人類同事一樣勝任工作,究竟需要實現那些能力,瓶頸又在那裡?對於實現這些能力所需的時間表,例如持續學習,你是如何判斷它需要十年,而不是一年或五十年的?Andrej Karpathy: 首先,非常感謝你的邀請,我很高興能來到這裡。你剛才提到的“AI Agent 的十年”這個說法,其實是我對一個既有觀點的回應。我記得一些實驗室 (我不確定具體是誰) 曾暗示今年將是“AI Agent 元年”,尤其是在大語言模型及其發展路徑方面。這個說法讓我覺得有必要回應,因為我感覺業記憶體在一些過度預測。在我看來,用“AI Agent 的十年”來描述現狀更為準確。儘管我們已經有了一些非常初級的 AI Agent,例如我每天都在使用的 Claude 和 Codex,它們確實令人印象深刻,但我仍然覺得還有大量工作有待完成。所以我的看法是,我們將在未來十年裡持續與這些技術打交道,它們會不斷進步,前景光明。我主要想回應的,是那種說法背後隱含的過於樂觀的時間表。(關於瓶頸)簡單來說,就是讓它真正變得實用。在我看來,或者說在那些實驗室以及我自己的設想中,一個 AI Agent 應該像一個你可以雇來共事的員工或實習生。舉個例子,你現在和一些同事一起工作,在什麼情況下你會願意讓一個像 Claude 或 Codex 這樣的 AI Agent 來替代他們完成工作呢?顯然,目前它們還做不到。那要讓它們做到需要具備什麼?你為什麼今天不直接用它們呢?原因很簡單,因為它們根本就無法勝任。它們的智能水平不夠,多模態能力不足,無法操作電腦完成各種任務。而且,它們也無法做到你之前提到的很多事情,比如持續學習,你不能告訴它一件事就指望它能記住。它們在認知能力上存在根本缺陷,無法勝任工作。我認為,要解決所有這些問題,大概需要十年時間。(關於時間表的判斷)我想這更多是基於我個人的一些直覺,以及根據我在這個領域的經驗做出的一種推斷。我在 AI 領域差不多快二十年了——抱歉說錯了,大概是15年左右,沒那麼久。你之前採訪過的 Richard Sutton,他的從業時間當然要長得多。但我確實有大約15年的經驗,見證了人們做出各種預測,也看到了這些預測的最終結果。而且我既在學術界做過研究,也在工業界工作了很長時間。所以這些經歷給了我一種大致的直覺。我感覺我們面臨的這些問題雖然棘手但可以克服。綜合權衡下來,我感覺大概需要十年。02 AI發展的範式轉移與彎路回顧過去15年AI領域的發展,在那些不同的突破性時刻,身處其中的人們對未來有怎樣的感受?這些感受在那些方面被證明是過於悲觀或過於樂觀的?可否梳理一下這期間經歷的幾次重要“範式轉移”?Andrej Karpathy: 當然,不過這是個很大的問題,因為這涵蓋了15年來的發展。AI 這個領域之所以如此奇妙,就是因為它經歷了好幾次我稱之為“範式轉移”的顛覆性變革,整個領域的研究方向會突然煥然一新。我大概親身經歷了其中的兩三次。而且我認為這種變革還會繼續發生,它們幾乎以一種令人驚訝的規律性到來。我的職業生涯始於深度學習,當時我因為在多倫多大學有幸在 Jeff Hinton 身邊而對此產生了興趣。Jeff Hinton 當然是 AI 領域的教父級人物。那時他正在訓練各種神經網路,我覺得這既不可思議又非常有趣,但這在當時遠非 AI 領域的主流,只是一個非常小眾的方向。隨之而來的 AlexNet,可以說是第一次劇烈的範式轉移。AlexNet 為整個領域指明了新的方向,所有人都開始訓練神經網路,但這仍然是為非常具體的、單一的任務而設計的。比如做一個圖像分類器,或者一個神經機器翻譯系統。然後,人們才非常緩慢地開始對 AI Agent 這樣的概念產生興趣。大家開始想:好吧,我們或許已經解決了“視覺皮層”的問題,那大腦的其他部分呢?我們如何才能建構一個能夠與世界真實互動的、完整的 AI Agent 或智能實體?在我看來,2013年左右由 Atari 遊戲引領的深度強化學習浪潮,就是早期對 AI Agent 的一次嘗試。它試圖讓 AI Agent 不僅能感知世界,還能採取行動、與環境互動並獲得獎勵。當時的環境就是 Atari 遊戲。但現在回過頭看,我感覺那其實是一個彎路。一個連我當時參與的早期 OpenAI 也曾走過的彎路。因為當時的時代潮流就是投身於強化學習環境,也就是玩各種遊戲、攻克各種遊戲。OpenAI 當時也在這方面投入了很多。那幾年,可能整個 AI 領域所有人都在遊戲上做強化學習。但這基本上是個歧途。當時在 OpenAI,我內心一直對“玩遊戲能通向 AGI”這條路徑持懷疑態度,因為在我看來,你需要的是像會計師那樣能與真實世界打交道的系統。我看不出玩遊戲如何能最終實現這個目標。因此,我在 OpenAI 曾負責一個名為 Universe 的項目,目標是讓一個 AI Agent 能用鍵盤和滑鼠操作網頁。我真正想要的,是一個能與真實數字世界互動、能完成知識工作的系統。但結果證明,這個想法在當時提出太早了,早得離譜。早到我們本不應該去嘗試,因為如果你只是讓 AI Agent 在環境中胡亂操作鍵盤和滑鼠來探索獎勵,那麼獎勵訊號會過於稀疏,它什麼也學不到,最終只會耗費掉巨量的算力而一事無成。這其中缺失的,正是神經網路強大的表徵能力。所以舉個例子,今天人們也在訓練能夠操作電腦的 AI Agent,但他們是在大語言模型的基礎上進行的。你必須先有語言模型,先獲得表徵能力,而這需要通過所有的預訓練和 LLM 技術來實現。所以,總的來說,我感覺歷史上人們曾數次過早地試圖建構完整的系統,過早地追求 AI Agent,比如 Atari 和 Universe 的嘗試,包括我自己的經歷。你必須先完成一些基礎工作,才能去建構 AI Agent。或許現在的 AI Agent 已經強大得多,但我們可能依然缺少技術堆疊中的某些關鍵部分。但我認為,回顧來看,大家所做的工作可以歸為三大類:為特定任務訓練神經網路;進行第一輪對 AI Agent 的嘗試;以及現在先通過 LLM 尋求神經網路的表徵能力,再在其之上建構其他一切。03 我們在建構模仿人類的“精神體”從零開始建構AGI的最強論點似乎是模仿動物的學習方式,它們一出生就被拋入世界,在沒有標籤的情況下自行理解一切。為什麼AI的願景不該是這樣,而是像現在這樣,通過預訓練模擬一個漫長的“進化”過程?將AI與動物類比存在那些問題?Andrej Karpathy: 我認為這是一個非常好的問題。我記得 Richard Sutton 上過你的播客,我看過那一期,還寫了一篇相關的文章來闡述我的看法。我個人對於將 AI 與動物進行類比非常謹慎,因為它們源於截然不同的最佳化過程。動物是進化而來的,它們天生就擁有大量內建的“硬體”。比如我在文章裡舉的斑馬的例子:一隻斑馬出生幾分鐘後,就能跑來跑去並跟隨母親。這是極其複雜的行為,但這並非強化學習的結果,而是被深植於基因中的本能。進化顯然有辦法將神經網路的權重編碼在 ATCG (DNA鹼基) 裡,我不知道具體原理,但它確實有效。所以我感覺,生物大腦的形成過程與我們現在做的完全不同,因此我非常不願意直接從中汲取靈感,因為我們根本無法複製“進化”這個過程。所以在我的文章中我提到,我們實際上不是在建構動物,而是在建構“幽靈”或“精神體”,隨你怎麼稱呼。因為我們的訓練方式不是通過進化,而是通過模仿人類以及他們在網際網路上產生的資料。最終你得到的,是這些近乎虛無縹緲的精神實體,因為它們是純數字的,在某種程度上模仿人類,是一種完全不同的智能。想像一個智能的“可能性空間”,我們和動物的出發點幾乎完全不同。我們並非真的在建構動物,儘管我認為隨著時間的推移,讓 AI 變得更像動物一些是可能的,而且也應該這樣做。另外還有一點,我覺得 Sutton 的框架基本上是“我們想要建構動物”。如果這能實現,當然會非常了不起。如果真的存在一個單一演算法,你只需讓它在網際網路上運行,它就能學會一切,那將是不可思議的。但我對此表示懷疑,甚至不確定這樣的演算法是否存在。而且,這顯然也不是動物的學習方式。因為動物擁有一個“進化的外循環”。很多看似“學習”的行為,其實更多是“大腦的成熟”。我認為動物真正用到強化學習的地方很少,而且大多是像投籃這種更偏向運動類的任務,而非智能任務。所以,粗略地講,我甚至認為人類在解決智能問題時,也並不真正使用強化學習。主持人:您能重複一下最後一句話嗎?很多智能不涉及運動任務,那它涉及什麼,抱歉?Andrej Karpathy: 在我看來,強化學習更多地應用於類似運動的任務,比如一些簡單的任務,像投籃之類的。但我不認為人類在處理很多智能任務 (比如解決問題等) 時會使用強化學習。主持人:我認為您暗示的是:進化所做的事情,在“建構一個能夠理解世界的基礎”這個層面上,與預訓練所做的事情有相似之處。但我猜區別在於,對於人類而言,進化的所有資訊都必須被高度壓縮在 3GB 的 DNA 中。這與模型的權重截然不同。模型的權重本身就構成了一個“大腦”,而這個“大腦”顯然不是編碼在精子和卵子裡的,它需要後天生長。而且,大腦中每一個突觸連接的資訊是絕對不可能全部儲存在 3GB 的 DNA 中的。因此,進化似乎更接近於“找到那個負責終身學習的演算法本身”。那麼,根據您的觀點,這種“終身學習”或許不等同於強化學習。我的這個理解與您想表達的一致嗎?還是您不認同?Andrej Karpathy:(關於進化與預訓練的類比)我同意你的觀點,進化過程中確實存在一種神奇的壓縮,因為神經網路的權重顯然沒有直接儲存在 ATCG 裡。存在某種程度的急劇壓縮,並編碼了一些學習演算法,這些演算法在生命周期中接管並進行線上學習。這一點我完全同意你。基本上,我會說我是一個更務實的人。我不是從“我們來建構動物吧”這樣的哲學角度出發,而是從“我們來建構有用的東西”這個視角出發。所以,我更像是一個戴著安全帽的工程師,我觀察到的現實是:我們無法實現進化,因為我不知道那該怎麼做。但事實證明,通過模仿網際網路文件來建構這些“幽靈般的實體”,是行得通的。這實際上提供了一種方式,讓你獲得一個在某種程度上擁有大量內建知識和智能的系統,這與進化所做的事情有些類似。所以,我才把預訓練稱為一種“蹩腳的進化”。它就像是在我們現有技術和可用資源的限制下,一個切實可行的版本,它能幫助我們達到一個可以真正開始進行強化學習等任務的起點。04 預訓練在吸收知識的同時“變得智能”,但知識本身可能拖累了模型進化給予我們的是發現知識的演算法,而非知識本身,這似乎與直接吸收知識的預訓練不同。預訓練究竟在做什麼?它與上下文學習有何關係?上下文學習是否是另一種形式的梯度下降?為什麼模型在上下文窗口中能實現看似真正的智能,而在預訓練中卻感覺不到?這是否與資訊儲存密度的巨大差異有關?Andrej Karpathy: 這個問題很微妙,你的質疑很有道理。基本上,預訓練在做什麼呢?你讓一個模型在整個網際網路上進行下一個 Token 的預測,並將其訓練成一個神經網路。這個過程實際上在做兩件有點不相關的事情。第一,它在吸收我所說的“知識”。第二,它在真正地“變得智能”。通過觀察網際網路資料中存在的演算法模式,它實際上在神經網路內部“啟動”了許多微小的電路和演算法,從而實現了像上下文學習等諸如此類的能力。而事實上,你可能並不需要甚至不想要那些知識。我甚至認為,知識總體上可能拖累了神經網路,因為它讓模型在某些時候過分依賴已有的知識。舉個例子,我感覺 AI Agent 的一個弱點就是,它們很難跳出現有網際網路資料的“流形” (manifold) 去思考。如果它們的知識或記憶更少一些,表現可能反而會更好。因此,我認為我們未來需要做的一件事,這也將成為研究範式的一部分,就是我們需要想辦法移除部分知識,只保留我稱之為“認知核心” (cognitive core) 的東西。這就像一個剝離了具體知識,但保留了演算法、解決問題的策略以及智能本質的純粹智能實體。(關於上下文學習)這裡有很多值得探討的話題。我們先從上下文學習談起。這一點或許顯而易見,但我認為值得我們明確地提出來並深入思考。在某些場景下,這些模型顯得最為智能,比如當我和它們對話時,我會驚嘆:“哇,對面真的有一個實體在回應我,並且像是在思考。” 如果它犯了錯,它會說:“哦等等,那種思考方式其實是錯的,我得換個思路。” 這一切都發生在上下文學習的過程中。正是在這裡,我感覺你能親眼看到真正的智能。而這種上下文學習能力,是通過預訓練階段的梯度下降發展出來的。它像是自發地通過元學習掌握了上下文學習,但是上下文學習本身並非梯度下降。這就好比我們人類處理事務的智能是由進化所塑造的,但我們有生之年的實際學習卻是通過某些其他過程實現的。主持人:我不完全同意你的看法,不過請繼續說。Andrej Karpathy: 我之所以不太願意直接說上下文學習不是梯度下降,是因為雖然它沒有執行顯式的梯度下降,但我仍然認為,可以這麼說,上下文學習的本質是在一個 Token 窗口內進行模式補全。事實證明,網際網路上存在著海量的模式,所以你的觀點是對的,模型在某種程度上學會了補全模式。這種能力就內化在模型的權重裡,神經網路的權重就是在試圖發現並補全這些模式。同時,神經網路內部也發生著某種適應過程。這個過程有些神奇,它僅僅因為網際網路上存在大量模式,就自然而然地湧現了。我讀過一些很有趣的論文,確實探究了上下文學習背後的機制。我確實認為,上下文學習很有可能在神經網路的層內部,悄悄運行著一個小型的梯度下降循環。我記得有一篇論文,研究者就用上下文學習來做線性回歸。基本上,你輸入到神經網路的是一系列在同一條直線上的 (X, Y) 坐標對,然後你給出一個新的 X,期望模型能預測出對應的 Y。當你用這種方式訓練神經網路時,它確實學會了做線性回歸。通常,在進行線性回歸時,你會用一個小型梯度下降最佳化器來分析 (X, Y) 對、計算誤差、然後計算權重的梯度並進行數次迭代更新。結果,當研究人員審視那個上下文學習演算法的權重時,他們確實發現了一些與梯度下降機制的相似之處。事實上,我認為那篇論文的觀點更進一步,因為他們甚至通過硬編碼神經網路的權重,利用注意力和所有內部機制來直接執行梯度下降。所以,我想表達的不同觀點在於:誰知道上下文學習到底是如何工作的呢?但我確實認為,它很可能在內部執行著某種形式獨特的梯度下降,我認為這是可能的。所以我只是在反駁你“上下文學習不是梯度下降”的這個論斷。沒有人確切知道它在做什麼,但它很可能在做著類似的事情,只是我們尚不清楚罷了。(關於資訊儲存密度)我通常是這樣表述的:在神經網路的訓練過程中,所有知識都像是對訓練內容的一種模糊記憶。這是因為壓縮率非常高,你將 15 兆個 Token 壓縮到最終只有幾十億參數的神經網路中,這顯然是進行了巨量的資料壓縮。所以我傾向於把權重中的知識稱為對海量網際網路文件的“模糊記憶”。然而,對於發生在神經網路上下文窗口中的任何事情,當你輸入所有的 Token,模型會建立起完整的 KV 快取表示,這些資訊是神經網路可以直接訪問的。因此,我把 KV 快取和在測試時輸入的內容比作“工作記憶”。所有在上下文窗口中的內容,神經網路都可以直接獲取。所以,大語言模型 LLM 和人類之間總是存在一些令人驚訝的相似之處,我覺得這很奇妙,因為我們當然不是在刻意直接地模仿人腦,我們只是發現這種方法有效,就去做了。但我確實認為,權重中的任何知識,都好比是你一年前讀過的東西的模糊記憶;而你在測試時作為上下文提供給它的任何內容,都直接進入了它的工作記憶。我認為這是一個非常有力的類比,可以幫助我們思考問題。比如,你問一個 LLM 關於某本書的內容,它通常能給你一些大致正確的資訊。但如果你把完整的章節內容提供給它再提問,你會得到好得多的答案,因為現在這些內容被載入到了模型的工作記憶中。總而言之,我同意你的觀點,並用上面這段話解釋了原因。05 AI缺失的大腦元件從更宏觀的角度看,在人類智能的諸多方面中,我們用現有模型最沒能成功復現的是那一部分?持續學習能力是否能像上下文學習一樣,從一個外循環的強化學習過程中自發湧現?10年後,AI模型的核心架構是否還會是Transformer?Andrej Karpathy: 我感覺,其實還有很多方面都尚未實現。也許可以這麼想,儘管類比總有不完美之處,我還是忍不住會這麼想:我們像是無意中創造出了 Transformer 神經網路,它極其強大且通用。你可以在音訊、視訊、文字或任何資料上訓練 Transformer,它都能學習到模式,並且效果非常好。對我來說,這幾乎就像是某種大腦皮層組織。它就是那樣的東西,因為大腦皮層也以其極強的可塑性而聞名。你可以給大腦的某些部分重新布線,比如有些稍微殘忍的實驗,曾將視覺皮層連接到聽覺皮層,結果實驗動物依然能正常學習。所以我認為 Transformer 就像是皮層組織。當我們利用神經網路進行推理和規劃,也就是為模型生成推理鏈時,這有點像是在模擬前額葉皮層。那麼,或許這兩項可以算是我們已經攻克的堡壘,但我仍然認為有許多大腦區域和神經核尚未被探索。比如,當我們用強化學習微調模型時,可能基底核 (basal ganglia) 在發揮一點作用。但像海馬體 (hippocampus) 呢?它在模型中對應什麼,我們還不清楚。有些部分可能不那麼重要,比如小腦 (cerebellum) 被認為對認知功能不那麼關鍵,所以或許我們可以跳過。但我仍然認為,還有例如掌管所有情感和本能的杏仁核 (amygdala)。大腦中可能還有很多其他非常古老的神經核,我認為我們都還沒有真正複製出來。我其實不確定我們是否應該致力於建構一個人腦的模擬體,畢竟我骨子裡終究是個工程師。或許回答這個問題的另一種方式是:你現在還不會把這東西當作實習生來僱傭,因為它存在很多認知缺陷,這些缺陷在我們與模型交流時都能直觀地感覺到。所以,它還沒有完全成熟,你可以理解為,我們還沒有將人腦的所有組成部分逐一“解鎖”。(關於持續學習的湧現)我不太認同這種觀點,因為我感覺這些模型,每次啟動時,如果上下文窗口裡沒有 Token,它們就完全是從零開始。所以我其實不確定在你描述的那種設想中,持續學習具體是如何實現的。這裡再次用人類來做個不完美的類比,因為我覺得這樣思考起來更具體也更有趣。我感覺自己醒著的時候,是在不斷建構一個關於當天所發生事情的上下文窗口。但當我睡著時,一些奇妙的事情發生了,我認為那個上下文窗口並不會保留下來,而是存在一個將經驗蒸餾並融入我大腦“權重”的過程。這發生在睡眠等過程中。我們在大語言模型裡並沒有與此對應的機制,而這正是我認為模型在持續學習方面所缺失的關鍵環節。這些模型沒有這樣一個蒸餾階段:它們無法回顧發生過的事情,進行分析,反覆深入地思考,本質上就是進行一種合成資料生成,然後將精華蒸餾回權重中。也許未來可以為每個人定製一個特定的神經網路,或許是通過 LoRA 這樣的技術,只改變一小部分稀疏的權重,而不是整個網路。但基本上,我們確實希望創造出擁有超長記憶的“個體化”模型。這種記憶不能只存在於上下文窗口中,因為上下文窗口會變得非常長。也許我們可以用一些非常複雜的稀疏注意力機制來處理。但我仍然認為,人類顯然有某種將知識蒸餾到權重中的過程,而我們的模型缺失了這一點。同時我也認為,人類擁有某種非常複雜的稀疏注意力機制,現在我們開始看到了一些早期的苗頭。比如,Deepseek V3.2 剛剛發佈,我就看到他們用到了稀疏注意力,這正是實現超長上下文窗口的一種方式。所以我感覺,我們似乎在用一種截然不同的方式,重現進化過程中產生的許多認知技巧,但我認為我們最終在認知架構上正在殊途同歸。(關於未來架構)我喜歡這樣來思考這個問題:讓我們用一種“時間平移不變性”的思路來推演。我們看看 10 年前,也就是 2015 年,我們處在什麼位置?那時主要是摺積神經網路 CNN 的天下,殘差網路也才剛剛問世。所以,和現在有些相似,但又有很大的不同。那時還沒有 Transformer,也沒有現在這些對 Transformer 的各種現代化改造。因此,如果我們借鑑歷史來推斷未來 10 年,我認為有些東西是可以確定的:我們可能仍然在用梯度下降以及前向和後向傳播來訓練巨大的神經網路。但也許具體形態會有些不同,而且一切的規模都會大得多。實際上,我最近回顧了 1989 年的歷史,幾年前我做過一個很有趣的練習,就是復現 Yann LeCun 在 1989 年提出的摺積網路,那是我所知的第一個在數字識別任務上通過梯度下降訓練的現代神經網路。我當時就很好奇:我該如何用現代技術來改造它?這其中,演算法、資料、計算和系統各自貢獻了多少進步?結果發現,如果我帶著 33 年後的演算法知識“穿越”回去,對 Yann LeCun 當年的工作進行調整,我能輕易地將錯誤率減半。但要想獲得更大的提升,就必須增加更多的資料,我得把訓練集擴大 10 倍。然後,還必須加入更多的計算最佳化,比如使用 dropout 和其他正則化技術,並進行更長時間的訓練。所以,這就像所有這些因素都必須同步改進。因此,未來我們可能會有更多的資料、更好的硬體、更好的計算核心和軟體,以及更好的演算法。所有這些因素,似乎沒有那個單一的佔據絕對主導地位,它們的重要性驚人地均衡。這一直是過去一段時間的趨勢。所以,我想回答你的問題就是:我預計 10 年後的演算法會和今天有所不同,但我也相信一些經過長期考驗的核心思想,比如用梯度下降來訓練一個巨大的神經網路,很可能依然存在。這會是我的猜測。06 不要寫部落格,不要做PPT,去建構程式碼,整理它,讓它跑起來從GPT-2發展到你最近完成的NanoChat項目,你認為其中是否存在單一的關鍵因素?在建構過程中有什麼意外的收穫嗎?對於想學習的人來說,最好的方法是什麼?你在建構程式碼庫時,為什麼程式設計模型(AI Agent)提供的幫助不大?Andrej Karpathy: NanoChat 是我前兩天發佈的一個程式碼庫,我都記不清了,你可以看到我為了這個項目付出了多少睡眠。它旨在成為一個最簡潔、最完整的程式碼庫,端到端地涵蓋了建構一個 ChatGPT 克隆版的整個流程。所以,它包含了所有步驟,而不僅僅是某一個孤立的步驟。我過去曾針對各個獨立步驟發佈過一些小的程式碼片段,用簡單的程式碼從演算法層面展示如何實現,但 NanoChat 則涵蓋了整個流程。至於學到了什麼,我覺得倒不是很多,我並不覺得我一定從中學到了什麼新東西。我腦子裡本來就已經有了如何建構它的藍圖,這次更多的是一個按部就班地將其實現,並把它做得足夠清晰簡潔,以便其他人能真正從中學習並覺得有用的過程。(關於學習方法)我會這麼建議:這個項目大約有 8000 行程式碼,涵蓋了整個流程。如果你有兩個顯示器,我會把我的程式碼庫放在右邊的顯示器上作為參考,然後你自己從頭開始建構。你可以參考,但不允許複製貼上。這可能是我會採用的方式。但我也認為,這個程式碼庫本身是一個相當龐大的項目。我的意思是,當你寫這樣的程式碼時,你不是從上到下按順序寫的,而是分模組進行,然後逐步擴展這些模組。但這種開發的順序和思路,在最終的程式碼裡是體現不出來的,比如你可能不知道從那裡下手。所以我認為,人們需要的不僅僅是最終的程式碼庫,更是建構這個程式碼庫的過程,那是一個複雜的、模組化生長的過程。所以這一部分目前還沒有。我非常想在這周晚些時候以某種方式把它補充上去,也許是通過一個視訊之類的。但總的來說,我會建議自己動手建構,並且不允許自己複製貼上。我確實認為,知識有兩種。一種是表層的高階知識,但關鍵在於,當你真正從零開始建構一個東西時,你會被迫直面那些你自以為懂但其實不懂的細節,而你之前甚至不知道自己不懂。這個過程總能帶來更深刻的理解。這就像是唯一的學習途徑,正如我相信是費曼所說的那句名言:“我無法創造之物,我便無法理解。” 我百分之百地堅信這一點,因為有太多微小的細節需要你親自去理順,否則你就沒有真正掌握知識,你只是自以為掌握了。所以,不要寫部落格,不要做PPT,別做那些。去建構程式碼,整理它,讓它跑起來。這是唯一的途徑。否則,你掌握的就不是真正的知識。(關於AI程式設計模型的侷限)建構這個程式碼庫,我大概花了一個多月。在我看來,當前人們與程式碼互動的方式主要可以分為三類。第一類人完全拒絕使用大語言模型,堅持從零開始編寫所有程式碼,但這可能已經不是最佳方式了。第二類,也就是我所屬的中間類別,雖然仍然會從頭編寫大量程式碼,但會利用模型普遍提供的自動補全功能。當你開始寫一小段程式碼,它會幫你補全後續部分,大部分情況下只需按下 Tab 鍵確認,結果通常是正確的,偶爾出錯再手動修改。在這種模式下,程式碼的整體架構依然由你掌控。第三類,就是所謂的“意圖導向程式設計” (vibe coding) ,你只需下達指令,比如“請幫我實現這個功能”,然後讓模型全權負責。這就是 AI Agent 的工作模式。我確實認為 AI Agent 在某些非常特定的場景下是有效的,我也會在這些場景中使用它們。但歸根結底,這些都只是可用的工具,你必須學習它們各自的優缺點,並判斷在何時使用。例如,AI Agent 在處理樣板程式碼方面就非常出色,那些大量重複、近乎複製貼上性質的程式碼,它們處理起來得心應手。它們也很擅長處理網際網路上常見的程式碼模式,因為模型的訓練資料中包含了海量的此類樣本。因此,對於具備這些特徵的任務,模型會表現得很好。但我開發的 Nano chat 並非如此,它是一個相當獨特的程式碼庫。按照我設計的架構,它的程式碼模式並不常見,也絕非樣板程式碼。恰恰相反,它更像是需要高度智力投入的程式碼,每一個部分都必須經過精確的設計和安排。而模型存在很多認知缺陷,總是無法理解我的程式碼,因為它們的“記憶”裡塞滿了網際網路上那些常規的程式設計範式,而我恰恰沒有遵循那些。例如,模型總以為我在寫普通程式碼,然而我不是。再舉個例子,關於同步機制,假設你有 8 個 GPU 需要同時進行前向和後向傳播,同步它們之間梯度的標準做法是使用 Pytorch 的分佈式資料平行 (Distributed Data Parallel, DDP) 容器,它會在後向傳播的過程中自動完成所有通訊和梯度同步。但我沒有用 DDP,因為它對我的項目來說不是必需的。所以我棄用了它,並且在最佳化器的 step 函數里編寫了自己的同步程序。結果,模型就執著地建議我使用 DDP 容器。總之,我沒有使用那個容器,因為我不需要它,我自己實現了一個功能類似的簡化版。主持人:而它們就是無法理解和接受您有自己的一套實現。Andrej Karpathy: 它們無法繞過這個彎,而且還總是試圖破壞我的程式碼風格。比如,它們寫出的程式碼防禦性過強,到處都是 try-catch 語句,總想把程式碼寫成一個生產級的程式碼庫。但我的程式碼中包含很多特定的假設,這完全沒問題,我根本不需要那些冗餘的東西。所以,我感覺它們在讓程式碼庫變得臃腫,增加了不必要的複雜性,還不停地產生誤解,甚至多次使用已經被棄用的 API,簡直一團糟。最終,它帶來的價值並不高。雖然我可以介入並清理它生成的程式碼,但這總體上是得不償失的。我還覺得,必須用英語打字來描述我的需求也很煩人,太費事了。相比之下,我只需找到程式碼中需要修改的地方,定位到新程式碼應該出現的位置,然後輸入前幾個字母,自動補全功能就會理解我的意圖並生成完整的程式碼。我認為,這種“在特定位置輸入部分程式碼”的方式,是一種資訊密度極高、能非常高效傳達意-圖的互動方式。所以我的觀點是,這些模型在技術堆疊的某些層面表現出色。實際上,有兩個很能說明問題的例子,我確實在其中借助了模型。一個是在生成項目報告時,報告的撰寫確實更偏向於樣板化的工作,所以我部分地採用了“意圖導向程式設計”的方式來完成,效果不錯,因為這部分工作不是核心關鍵程式碼。另一個例子是,當我用 Rust 語言重寫分詞器的時候,我對 Rust 並不算精通,還算是個新手。所以在編寫部分 Rust 程式碼時,我確實進行了一些“意圖導向程式設計”。但前提是,我手邊有一個自己完全理解的 Python 實現版本,我的目標只是創造一個效率更高的版本,並且有完備的測試來驗證。在這種情況下,我覺得使用模型是比較安全的。總的來說,模型降低了學習和使用一門新語言或新範式的門檻,在這方面,它們的幫助非常大。因為網路上有海量的 Rust 程式碼可供模型學習,所以它們對 Rust 的掌握相當不錯,而我恰好瞭解不多,這樣模型就派上了大用-場。07 模型不擅長編寫“前所未有”的程式碼,這恰恰是我們建構模型時真正追求的當前“AI將實現AI工程和研究自動化”是AI奇點論的核心邏輯,但你的經驗似乎表明AI在這方面恰是短板,這是否會影響你對“奇點”何時到來的預測?為什麼模型即便面對已有論文和開源實現的技術(如RoPE嵌入),也無法很好地將其整合到你的程式碼庫中?你認為AI更像是一種漸進式改進的工具(如編譯器),還是會成為程式設計師的完全替代品?Andrej Karpathy: 這個說法很貼切。這也解釋了為什麼我對 AI 發展的時間線預估會更長一些。您說得對,我認為,模型不擅長編寫“前所未有”的程式碼,而這恰恰是我們建構這些模型時真正追求的目標。(關於模型整合能力的侷限)這個問題很複雜。我覺得它們對這些概念有模糊的認知,但理解得並不透徹。它們不知道如何將這些技術,按照你的程式碼風格、在你程式碼庫的特定位置、結合你所有自訂的設定,完美地整合進去。它們也無法理解新技術如何與程式碼庫中已有的各種假設相適配。所以,我認為它們具備一定的知識,但遠未達到能夠真正整合、理解和應用這些知識的程度。當然,很多方面確實在持續進步。目前我心目中最強的模型可能是 GBT 5 Pro,它非常強大。如果我有 20 分鐘的空閒時間,我有時會把整個程式碼庫複製貼上進去,向 GBT 5 Pro 這個“神諭”請教一些問題,它的回答通常都還不錯,相比一年前的模型已經好得驚人了。但我仍然認為,整體而言,這些模型還遠遠沒有達到我們期望的水平。我感覺整個行業有點操之過急,做出了過大的跳躍,試圖宣稱 AI 已經無所不能,但實際上,很多產出都還很粗糙。我認為行業需要正視並接受這個現實,或許他們是為了融資或有其他原因。但事實是,我們正處在一個中間階段。模型本身很了不起,但它們仍需大量的改進工作。對我而言,現階段自動補全是最高效的夥伴,但有時針對特定類型的程式碼,我也會求助於 LLM Agent。(關於AI的角色定位)這或許也引出了我的另一個想法:我發現自己很難清晰地界定 AI 的起點和終點,因為從根本上說,我認為 AI 是計算技術的一種延伸。我看到的是一個連續發展的過程,一個從電腦誕生之初就開始的,不斷加速程式設計師工作效率的“遞迴式自我改進”過程。比如,程式碼編輯器、語法高亮、甚至是資料類型檢查,所有這些我們為彼此開發的工具,包括搜尋引擎。為什麼搜尋引擎不算 AI 呢?搜尋排名本身很大程度上就是 AI。Google 在很早期的時候,就將自己定位為一家利用 AI 技術做搜尋引擎的公司,我認為這完全合理。所以,在我看來,這是一個遠比大多數人想像的更加連續的光譜,我很難在其中劃出一條明確的界線。我的感覺是,我們現在有了一個性能好得多的自動補全工具,同時也有了一些像 AI Agent 這樣的新工具,它們能進行循環式的自主操作,但有時會“脫軌”。整個趨勢是,人類正逐漸從更底層的、繁瑣的工作中解放出來。例如,我們不再寫彙編程式碼,因為有編譯器幫我們把高級的 C 語言轉換過去。我們正非常緩慢地將自身的工作進行“抽象化”。我稱之為一個“自主性滑塊” (autonomy slider) :在任何一個時間點,越來越多可以被自動化的任務正在被自動化,我們人類做的事情越來越少,並將自己的角色提升到駕馭於自動化之上的、更高階的抽象層。08 強化學習的根本缺陷我們應該如何理解人類與環境互動並建立世界模型的方式?這種方式似乎獨立於任務最終的成敗獎勵。在機器學習中,與之對應的機制應該是什麼?為什麼說人類不使用強化學習,當前RL範式(如在解數學題時)的根本問題是什麼?既然基於結果的獎勵存在明顯問題,為什麼“基於過程的監督”作為替代方案,卻一直沒能成功?Andrej Karpathy: 我的看法或許可以這樣表達:人類根本不使用強化學習,我一直都這麼說。我認為人類的學習方式完全不同,人是通過體驗來學習。強化學習的實際運作方式,比大多數人想像的要粗糙得多。以解數學題為例,這本身是個很簡單的場景:給你一道題,讓你找出答案。在強化學習的框架下,你首先會平行地進行海量嘗試。面對一個問題,你會生成成百上千種不同的解法,這些解法本身可能很複雜。最終,也許某個嘗試得出了答案。然後,你用這個答案去核對標準答案,發現可能是三次嘗試得到了正確答案,而其餘的都失敗了。接下來,強化學習所做的,就是逐字逐句地去看那三個成功的解法,然後把你得出這個正確答案過程中所做的每一個決策,輸出的每一個 Token,其對應的權重全部調高,告訴模型“以後要多這麼做”。這種做法的問題在於,用術語說,是“估計器方差過高”,但通俗地講,它就是充滿了噪聲。它幾乎是盲目地假設,只要最終結果是正確的,那麼通往這個結果的每一步就都是正確的。但這顯然是錯的。你可能在找到正確答案之前,走了很多彎路,犯了很多錯誤,但只要最終結果對了,所有這些錯誤的步驟,都會被錯誤地“鼓勵”。這太糟糕了,完全是噪聲。你做了那麼多的工作,最後得到的卻是一個單一的反饋訊號,一個位元的資訊告訴你“你做對了”,然後你就用這個訊號去決定整個解題路徑是該被鼓勵還是被懲罰。我喜歡把這個過程比作“用吸管吸取監督訊號”。你完成了一次可能長達一分鐘的完整推演,最終卻只能通過一根細細的吸管,去吸取最終那個獎勵訊號所包含的微不足道的監督資訊,然後將這點資訊廣播到整個行動軌跡上,以此來調整權重。這太瘋狂了。人類絕不會這樣做。首先,人類不會進行成百上千次的盲目嘗試。其次,當一個人找到解決方案後,他會進行一個非常複雜的復盤過程,他會思考:“我覺得我做的這些部分是正確的,但那些部分其實做得不好。我或許應該這樣或那樣改進。” 這是一個深度思考的過程。目前的大語言模型中,完全沒有與此對應的機制。不過,我確實看到相關的論文開始湧現,因為這個問題對於領域內的所有人都顯而易見。在我看來,整個發展歷程是這樣的:首先是模仿學習,它的成功本身就是一個巨大的驚喜,簡直是奇蹟。我們能夠通過模仿人類的範例來微調模型,這太了不起了。因為在最初,我們只有基礎模型,它們本質上只是自動補全工具。當時我完全沒有想到,後來一篇名為 InstructGPT 的論文讓我大開眼界。它指出,你可以拿一個預訓練好的模型,它原本只會自動補全,然後只要用類似對話的文字資料對它進行微調,模型就能迅速地適應並變得非常健談,同時還保留了所有在預訓練階段學到的知識。這顛覆了我的認知,我無法想像模型在風格上竟能如此迅速地調整,僅僅通過幾輪特定資料的微調,就能轉變為一個能與使用者互動的助手。它的成功對我來說如奇蹟一般,那是大概兩三年前的重大突破。然後,強化學習登場了。它讓你能做到比單純的模仿學習更好。因為你可以定義獎勵函數,然後讓模型在這些函數上進行爬山最佳化。對於那些有明確正確答案的問題,你不再需要專家的演示軌跡,模型可以自己去探索和最佳化。這非常了不起。模型甚至能發現人類從未想到的解決方案,這無疑是驚人的。然而,它依然很“笨拙”。所以我認為,我們還需要更多根本性的創新。昨天我看到一篇來自 Google 的論文,就試圖引入“反思與復盤”的理念,好像是叫什麼記憶庫的論文。實際上,我已經看到好幾篇沿著這個思路探索的論文了。因此,我預計在不久的將來,大語言模型的訓練演算法會在這個方向上迎來一次重大的更新。在那之後,我認為我們至少還需要三到五次這樣量級的革新。(關於過程監督的困難)所謂基於過程的監督,指的是我們不再等到你工作了 10 分鐘後,才在最後給你一個獎勵訊號,告訴你做得好還是不好,而是在你工作的每一步,都告訴你做得怎麼樣。我們之所以沒有普遍採用這種方法,根本原因在於,正確地實現它非常棘手。因為當你面對的是一個未完成的中間解法時,你很難知道該如何分配功勞,也就是進行信用分配。當你得到最終正確答案時,判斷標準很簡單,就是看結果是否匹配,這非常容易實現。但如果你要進行過程監督,你該如何自動化地給中間步驟打分呢?這並沒有顯而易見的解決方案。許多實驗室正嘗試使用所謂的“LLM 評委”來解決這個問題,也就是讓大語言模型來扮演評委的角色。你會給一個 LLM 提示,比如:“嘿,這是一個學生給出的解題步驟,如果最終答案是這樣,你覺得他現在這一步做得怎麼樣?”然後研究人員會不斷調整提示詞。我認為這件事之所以棘手,其原因非常微妙。那就是,任何時候你用一個 LLM 來分配獎勵,你都要記住,這些 LLM 是擁有數十億參數的龐然大物,它們是有空子可鑽的。如果你針對這些 LLM 評委進行強化學習,我幾乎可以保證,你的模型最終會找到這些 LLM 評委的對抗性樣本。這種方法無法長久為繼。也許你迭代 10 步、20 步還行,但你絕對做不到 100 步或 1000 步。模型會找到這個龐大評委模型中那些細微的“裂縫”,在那些犄角旮旯裡發現一些虛假的關聯,然後找到欺騙它的方法。我腦海裡有一個非常鮮活的例子,這件事應該也是公開的。當時我們用一個語言模型評委作為獎勵函數,你給它一個學生模型生成的解法,然後問它這個解法好不好。我們用強化學習針對這個獎勵函數進行訓練,一開始效果非常好。突然有一天,獎勵值變得異常高,簡直是飆升,模型表現得堪稱完美。你看到這個結果會想:“哇,這學生模型太完美了,它完全解決了所有數學問題。”但當你去看模型實際生成的具體內容時,會發現它們完全是胡說八道。開頭可能還像模像樣,但很快就變成了類似“好的,我們來計算二加三,我們這樣做、這樣做……”之類的瘋言瘋語。你看著這些內容會覺得太瘋狂了,它怎麼能得到 100% 的滿分獎勵?回過頭去檢查那個語言模型評委,你就會發現,這些胡言亂語恰好是那個評委模型的對抗性樣本,評委對它給出了 100% 的置信度。這僅僅是因為,對於 LLM 評委來說,這是一個它在訓練資料中從未見過的樣本外案例,你完全進入了它的純粹泛化領域。在它從未見過的泛化領域裡,你總能找到這樣可以把它攻破的樣本。09 LLM生成的合成資料分佈是“坍塌的”,持續使用會導致模型能力嚴重下降人類學習似乎包含“反思”或“做白日夢”這類行為,它不直接創造新問題,而是在消化已有資訊。機器學習領域與此對應的機制是什麼?為什麼我們不能簡單地讓模型生成思考內容,然後用這些合成資料來訓練它?“模型坍塌”問題的本質是什麼,它與人類思維的“固化”有何相似之處?解決方案又是什麼?Andrej Karpathy: 我認為我們恰恰忽略了這其中的某些關鍵環節。舉個例子,當人讀書時,和現在 LLM 讀書的方式完全不同。LLM 讀書,本質上是我們將書本的文字序列展開,然後模型去預測下一個 Token,並從中學習知識。但這根本不是人類的學習方式,對吧?當人讀書時,我幾乎不認為書本是我要被動接收並據此訓練的材料。書本更像是一系列“提示”,激發我去進行“合成資料生成”——比如,你會因此去參加讀書會,和朋友們討論書裡的內容。正是通過這種主動加工和處理資訊的過程,你才真正獲得了知識。我認為 LLM 完全沒有與此對應的機制。它們不會這樣做。但我非常希望能在預訓練階段看到這樣一個環節:模型能夠深入思考它所讀到的材料,嘗試將其與已有的知識體系進行融會貫通,花一些時間去消化和理解。目前沒有任何與此等效的機制,這完全是前沿的研究領域。這件事之所以不簡單,背後有一些非常微妙、難以理解的原因。比如,為什麼我們不能直接讓模型生成一些思考內容,然後用這些內容來訓練它呢?因為每一個合成的樣本都有問題。假如我讓模型針對一本書生成一些思考,你看這些生成的文字,會覺得“這看起來很棒啊,為什麼不能用它來訓練呢?”你可以試試,但如果你持續這樣做,模型的能力實際上會嚴重下降。這是因為,從模型中得到的所有樣本都存在一種“隱性坍塌”的問題。從單個樣本來看,這個問題並不明顯。但實際上,這些樣本在所有可能的思想空間中,僅僅佔據了一個極其微小的子空間。所以,LLM 生成的內容,我們稱之為“坍塌的”;它們的資料分佈是“坍塌的資料分佈”。舉一個簡單的例子就是,你去問 ChatGPT 讓它講個笑話,它翻來覆去可能就只有那麼三個。它給不了你各種各樣可能的笑話,它就只會那幾個。這就是隱性坍塌。所以,你根本無法從這些模型中獲得人類所擁有的那種豐富性、多樣性和熵。人類的思想則要“嘈雜”得多,但至少我們沒有那種系統性的偏差。從統計學上講,我們的思想不是隱性坍塌的,而是保持了巨大的熵。因此,如何克服這種“坍塌”問題,在進行合成資料生成的同時,又能保持足夠的熵,這是一個核心的研究難題。(關於模型坍塌與人類思維)任何單個樣本看起來都沒問題,但它們的整體分佈卻非常糟糕。糟糕到如果你持續用模型自己生成的內容進行訓練,模型自身就會“坍塌”。我甚至認為這個問題可能沒有根本性的解決方案。而且我也認為,人類自身也會隨著時間推移而“坍塌”。這個類比再次顯示出驚人的貼切性。人類在一生中確實會經歷思維的“坍塌”。這就是為什麼小孩子還沒有過擬合。他們會說出一些讓你震驚的話,雖然你能理解他們想法的邏輯,但那完全不是成年人會說的話。就是因為他們還沒有“坍塌”。而我們成年人,已經“坍塌”了。我們最終會反覆地陷入同樣的思維模式,說的話也越來越千篇一律,學習新事物的效率不斷下降,這種“坍塌”會持續惡化,最終一切都會退化。(關於解決方案)你可以想像通過對熵進行正則化等手段來強制增加多樣性。我猜這些方法在實際應用中效果並不理想,根本原因在於:儘管現在的模型確實是“坍塌”的,但我們要求它們完成的大部分任務,其實並不需要那麼高的多樣性。這可能就是現狀的答案。頂尖的實驗室都在努力讓模型變得更有用,而在我看來,輸出的多樣性可能並不是當前最重要的事。首先,處理和評估高多樣性的輸出要困難得多。其次,在很多應用場景下,多樣性或許並不是創造核心價值的關鍵所在。10 我們最終能獲得高效的認知核心,可能只需要十億等級的參數兒童不善於記憶資訊,反而學習能力驚人;LLM能背誦海量文字,但學習抽象概念的能力有限。人類的“健忘”是否反而是一種優勢?一個最優的“智能核心”最終需要多大?未來前沿模型的規模會如何演變?Andrej Karpathy: 我認為這裡面絕對有非常值得探討的東西。與 LLM 相比,人類確實更傾向於“只見森林,不見樹木”。我們不擅長記憶,而這其實是一種優勢,而非缺陷。正是因為不擅長死記硬背,我們才被迫去尋找更具通用性的模式。相比之下,LLM 極度擅長記憶。它們可以大段大段地背誦訓練資料裡的原文。你甚至可以給它們一些完全無意義的資料,比如你把一段文字雜湊化,得到一個完全隨機的序列,然後用這個序列去訓練它,可能只需要一兩個迭代,它就能把整個隨機序列給複述出來,完全記住。任何人都無法在只看一遍的情況下背誦一長串隨機數字。人類的這種“健忘”迫使我們只學習那些可泛化的核心規律。而 LLM 則被它們腦中海量的預訓練文件記憶所幹擾,在某種程度上,這對它們而言是巨大的干擾。所以,當我談到“認知核心 (cognitive core)”的時候,我實際上是想剝離掉記憶部分。我希望未來的模型擁有更少的記憶,從而迫使它們去主動檢索資訊。它們自身只保留思考的演算法、進行實驗的思路,以及所有這些將認知串聯起來並付諸行動的“認知粘合劑”。(關於認知核心的規模)回顧這個領域的發展歷史會發現一個很有趣的現象。曾有一段時間,所有人都極度信奉 Scaling Law,覺得模型越大越好,要做兆參數的模型。但實際上,模型參數量的發展趨勢是先上升,而現在,最頂尖的模型尺寸反而開始下降了。即便如此,我仍然認為它們記憶了太多不必要的東西。所以我之前有過一個預測:我們最終能夠獲得非常高效的認知核心,可能只需要十億等級的參數。想像一下,20 年後,你和一個十億參數的模型對話,你們可以進行富有成效的交流。它會思考,行為模式更像人類。但如果你問它一個事實性問題,它可能需要去檢索資訊。關鍵在於,它知道自己不知道,也知道需要去尋找,它會做出所有這些合理的行為。(關於預測的意外之處)我的基本觀點是問題出在訓練資料上。我們的訓練資料來自網際網路,而網際網路上的內容實在太糟糕了。正因如此,這裡面才存在巨大的提升空間。當我們談論網際網路時,你我腦中想到的可能是《華爾街日報》這類高品質內容,但這根本不是我們所用資料的常態。如果你身處前沿實驗室,隨便抽一個預訓練資料集裡的網路文件來看,會發現它完全就是垃圾。我甚至都無法理解模型究竟是如何從這種資料裡學到知識的。這些文件裡可能只是一些股票程式碼,或者充斥著大量來自網際網路各個角落的殘渣和垃圾資訊。像《華爾街日報》那樣結構清晰的文章,其實是極其罕見的。所以我覺得,正是因為網際網路資料質量太差,我們才不得不建構超大規模的模型去壓縮所有資訊。而這種壓縮,絕大部分是記憶方面的工作,而不是認知方面的工作。但我們真正想要的,是模型的認知能力,並希望它能擺脫單純的記憶。也就是說,我們需要用智能模型來幫助我們提煉預訓練資料集,將其精簡為只包含認知核心的部分。到那時,我認為一個更小的模型就綽綽有餘了,因為它使用的是質量高得多的資料集。當然,這個小模型可能不是直接在這個精煉的資料集上訓練的,而更有可能是從一個更優秀的大模型通過蒸餾的方式獲得的。(關於未來模型規模)我沒有一個特別明確的預測。但我確實認為,各大實驗室正變得越來越務實。他們有固定的算力預算和成本預算,並且發現把大部分資源投在預訓練階段並非最高效的做法。這就是近年來模型規模變小的原因。因為模型小了,預訓練的成本也隨之降低,他們便可以把節省下來的資源投入到後續的強化學習、中期訓練等所有環節。所以,他們只是在務實地權衡所有階段,以獲得最高的投入產出比。因此,預測這一趨勢非常困難。我的基本預期是,這個領域還有非常多“低垂的果實”尚待採擷。所以,我對未來的可能性持一個非常開放的看法,不確定性很大。11 AGI與經濟增長我們該如何衡量AGI的進展?是看它能完成任務的時長,還是類比人的教育水平?為何你認為AGI不會帶來經濟增長率的“爆炸”,而是會平滑地延續現有趨勢?這與AI本身就是一種可無限複製的“勞動力”的觀點似乎相悖。Andrej Karpathy: 我想我有兩個答案。第一,我幾乎想從根本上拒絕這個問題。因為我一直把 AI 看作是計算技術的延伸。我們難道會去討論如何為“計算”本身繪製一幅進度圖嗎?你會如何繪製從 1970 年代至今的計算技術發展圖?它的 X 軸是什麼?所以從這個角度看,我覺得整個問題有點滑稽。不過,我還是會嘗試回答。當人們談論 AI 和最初的 AGI 時,尤其是在 OpenAI 成立之初,我們對 AGI 的定義是:一個能夠以達到或超越人類的水平,完成任何具有經濟價值的任務的系統。這就是當時的定義,我對此非常滿意,並且一直沿用至今,儘管後來人們提出了各種其他定義。現在,人們做的第一個讓步,就是排除了所有物理世界的工作,只討論純粹的數字知識工作。我覺得這相比於最初“人類能做的任何任務”(比如搬東西等等) 的定義,是一個非常大的讓步。AI 顯然還做不到這些。但我們接受這個讓步。那麼,只考慮知識工作,我們到底剔除了多大比例的經濟活動?我其實不知道具體數字,但我猜測大概是 10% 到 20%。比如那些可以在家完成所有工作任務的人。但這仍然是一個非常龐大的市場。想想整個經濟的體量,它的 10% 或 20% 是多少?即便只在美國,這也是一個數兆美元等級的市場或工作崗位。所以這個盤子依然非常大。那麼,回到那個定義,我想我會關注的是:這個定義在多大程度上被實現了?比如說,有那些工作被 AI 替代了?一個很好的例子就是 Jeff Hinton 曾預測放射科醫生這個職業將會消失。事實證明這個預測在很多方面都大錯特錯了。放射科醫生這個職業不僅依然存在,甚至還在發展,儘管電腦視覺在識別醫療影像方面已經做得非常出色了。因為這本身是一項混亂、複雜的工作,涉及到很多方面,比如與病人打交道以及理解診斷的上下文等等。所以,根據那個最初的定義,我其實不認為 AI 已經取得了巨大的進展。但是,有些工作確實比其他工作更適合被自動化,它們具備一些特徵。一個經常被提起的例子就是呼叫中心的員工,我認為這個例子很恰當。因為呼叫中心的工作在當今技術下,具備許多易於自動化的簡化屬性。他們的工作相當簡單,就是一系列相似的任務。你接一個電話,進行大約 10 分鐘或更長時間的互動,然後在某個系統裡完成一些操作,比如修改資料庫條目。你的工作就是一遍又一遍地重複這些事。所以,這裡確實需要考慮“任務時長”,即完成單次任務需要多久。同時,它的“上下文”是受限的。你不需要和公司其他部門或客戶打交道,你面對的只是資料庫、你本人以及你服務的客戶。所以它更封閉,更容易理解,而且是純數位化的。我會關注這些領域。但即使在呼叫中心,我看到的也不是完全的自動化。我看到的是一個“自主性滑塊”。我預計我們不會立刻用 AI 替換掉所有人,而是會引入 AI 來處理 80% 的業務量,然後 AI 會把剩下的 20% 疑難問題上報給人類。人類的角色轉變為監督一個由五個 AI 組成的團隊,處理那些更常規的呼叫中心工作。所以,我會去尋找那些提供新型介面或服務的公司,它們能讓你管理這些尚不完美的 AI。我預計這種模式會擴展到整個經濟體,而很多工作的複雜度要比呼叫中心高得多。主持人:我在想放射科醫生這個例子,我完全是猜測,並不知道他們實際的工作流程是怎樣的,但一個可能適用的類比是,當 Waymo 的自動駕駛汽車剛推出時,前排會坐著一個安全員,你必須讓他在那兒,確保一旦出現嚴重問題時有人監控。我認為即使在今天,仍然有人在車裡觀察以確保一切順利。剛剛部署的 Robotaxi 實際上車裡也還是有人的。我們可能正處在一個類似的情境中:當你將一份工作自動化了 99%,那剩下必須由人類完成的 1% 會變得極其有價值,因為它成了其他所有環節的瓶頸。如果這個角色,就像放射科醫生,需要經過多年的專業訓練才能提供那最後的 1% 的保障,那麼他們的薪酬理應大幅上漲,因為他們成了阻礙技術大規模部署的唯一瓶頸。所以,我認為放射科醫生的工資上漲,可能就是出於類似的原因。如果你是這最後的瓶頸,並且你的技能是不可替代的,不像 Waymo 的安全員可能相對容易被替換,那麼你可能會看到工資先是上漲,然後直到某一天,當那最後的 1% 也被技術攻克時,這個職業才會迎來真正的轉折。我在想,放射科領域是否正在發生類似的事情。Andrej Karpathy: 你是指呼叫中心員工的薪資嗎?這是個非常有意思的問題。據我瞭解,我們目前在放射科領域還沒看到這種情況。我基本上認為放射學不是一個好例子。我不知道為什麼 Jeff Hinton 當初偏要拿放射科說事,因為我認為這是一個極其混亂和複雜的專業。所以,我會對呼叫中心員工如今的狀況更感興趣,因為我預計很多重複性的工作在今天就應該能被自動化了。我雖然沒有一手資訊,但我會去關注呼叫中心行業正在發生什麼趨勢。另外,我還會預期一種可能性:也許有些公司現在正在引入 AI,但我會再等上一兩年看看。因為我很有可能會預期他們會經歷一個“回撤”階段,最終發現 AI 不行,又重新僱傭一些員工回來。(關於經濟增長率)即使我們擁有了真正的 AGI,我說的不是今天的大語言模型,我認為一切仍將照常進行。這種情況已經持續很長時間了。我再次強調,我不認為 AI 是一項與長久以來一直在發生的技術變革截然不同的東西。這就是為什麼我覺得這很有趣,因為我曾一度試圖在 GDP 資料中尋找 AI 的蹤跡。我原以為 GDP 應該會上升,但我去研究了其他一些極具變革性的技術,比如電腦、手機等等,你在 GDP 資料里根本找不到它們。GDP 曲線仍然是那條平滑的指數曲線。即使是初代的 iPhone,它也沒有應用程式商店,也沒有現在 iPhone 擁有的各種功能。所以,儘管我們認為 2008 年 iPhone 的問世是一次驚天動地的巨變,但事實並非如此。所有變革都是如此分散、滲透得如此緩慢,以至於最終都被平均到了同一條指數曲線上。電腦的出現也是完全一樣的情況,你無法在 GDP 資料中指著某處說:“看,我們有電腦了。” 變革不是那樣發生的,它是一個極其緩慢的處理程序。AI 也將遵循完全相同的模式。它只是更高階的自動化,讓我們能夠編寫以前無法編寫的不同類型的程序。但 AI 本質上仍然是一個程序,是一種新型的電腦和計算系統,它同樣面臨各種問題,會隨著時間推移慢慢滲透,最終仍然匯入那條指數增長曲線。我們依然會沿著這條曲線前行,它將變得越來越陡峭,生活在那種環境中將會是一種非常陌生的體驗。我預期增長率也會大致保持不變。(關於AI作為勞動力)或許可以提供一個反例。首先,在這一點上,我非常樂於被任何一方說服。但我想說的是,計算本身就是勞動力。在過去,計算是由人來完成的。電腦的出現讓大量工作崗位消失了,因為它們自動化了大量原本需要人來處理的數字資訊。所以,電腦就是勞動力,這個過程已經發生了。自動駕駛也是一個例子,同樣是電腦在從事勞動。因此,我認為這已經持續了很長時間,依然是常態。(對“爆炸”論的反駁)我理解你的意思。但同時,我覺得人們總是做出這樣的假設:好了,我們現在有了一個“盒中之神”,祂無所不能。但現實絕不會是那樣的。它將只能做一部分事情,在另一部分事情上會失敗,它會被逐步地引入社會。所以我預測,我們最終看到的還是同樣的模式。因為那種“突然擁有一個完全智能、靈活、通用的人在盒子裡,並且可以把它部署到社會任何問題上”的假設,我認為這種離散的跳躍是不會發生的。因此,我相信我們會看到這項技術在整個行業中以同樣漸進的方式滲透。12 程式設計:AGI出人意料的突破口理論上,AGI 作為一個能處理所有知識工作的系統 (暫不考慮體力勞動),人們可能會天真地以為,它的發展會是這樣的:先從顧問的工作中選擇一項小任務實現自動化,再從會計的工作中選擇一項,如此類推,逐步覆蓋所有知識工作領域。但事實並非如此。如果我們相信當前的技術範式正帶領我們走向 AGI,那麼它的實際發展路徑與上述設想大相逕庭。至少目前看來,顧問、會計這類職業的生產力並沒有得到巨大提升,反倒是程式設計師的工作,正一點點地被蠶食。如果我們審視這些 AI 公司的收入構成,撇開那些類似於搜尋引擎的普通聊天業務,只看 API 收入,就會發現絕大部分都來自程式設計相關的應用。所以,這個號稱“通用”、本應能勝任任何知識工作的技術,卻幾乎一邊倒地只在做程式設計。這實在是一種出乎意料的 AGI 落地方式。AGI的發展路徑為何與人們最初的設想大相逕庭?Andrej Karpathy: 這確實是一個很有意思的觀點。我堅信,程式設計是這些大語言模型和 AI Agent 的完美切入點。原因在於,程式設計的本質始終是圍繞文字展開的:電腦終端、程式碼,一切都以文字為基礎。而大語言模型,基於其在網際網路上的訓練方式,極其擅長處理文字。因此,它們是完美的文字處理器,加上網路上存在海量的程式碼資料,這兩者簡直是絕配。此外,我們已經擁有大量為處理程式碼和文字而生的現成基礎設施。例如,我們有 Visual Studio Code 或其他 IDE 來展示程式碼,AI Agent 可以直接整合進去。再舉個例子,如果一個 AI Agent 對程式碼做了一些修改,生成了一個差異檔案 (diff),我們立刻就能利用現有的無數工具來清晰地展示程式碼庫的全部變動。可以說,我們幾乎已經為程式碼應用鋪好了所有基礎設施。相比之下,其他一些領域就完全沒有這種優勢了。例如,有些人嘗試將自動化應用於幻燈片製作,這項工作的難度要大得多。難點就在於,幻燈片不是文字,它由各種小的圖形元素、空間佈局和視覺元件構成,並且完全沒有像程式碼領域那樣現成的基礎設施。比如,如果一個 AI Agent 修改了你的幻燈片,你要用什麼工具來展示這些改動呢?你如何查看這些差異?根本沒有現成的工具可以用來比較幻燈片的版本差異,一切都得從零開始開發。所以結論就是,很多領域本質上並不適合目前以文字處理為核心的 AI,但出人意料的是,程式設計恰恰非常適合。主持人: 為什麼即使在純語言領域,除了程式設計之外,我們也很難從這些模型中挖掘出巨大的經濟價值?Andrej Karpathy: 你說的有道理。我並非認為所有文字任務都輕而易舉。我確實覺得程式碼是高度結構化的。相比之下,普通文字的變化更豐富,或者說文字中含有更高的“熵”,我暫時想不到更確切的詞來形容。此外,程式設計本身是一件難事,所以即便是從大語言模型那裡獲得一些簡單的知識輔助,也能讓人感覺能力得到了極大的增強。說實話,我並沒有一個非常完美的答案。我的觀點是,AI 處理文字的能力確實使其應用門檻降低了很多,但這並不意味著所有與文字相關的任務都毫無難度。13 LLM目前沒有文化,也沒有與自博弈等價的機制,它們仍是“孩子”進化偶然催生了智能這件事,會讓你感到更驚訝還是理所當然?智能的出現是罕見事件嗎?我們訓練AI的方式,是否使其天然具備了人類花費數萬年才建立的“文化循環”?你設想的“大語言模型文化”是怎樣的,為何它至今仍未出現?Andrej Karpathy: 順便一提,我很喜歡 Nick Lane 的書。我剛才還在聽一個相關的播客。談到智能及其進化,我確實認為它的出現相當晚,可以說是在非常近的時期。它的進化令我感到驚訝。我覺得思考宇宙中其他所有可能的世界是一件非常迷人的事。比如,假設有一千個像地球一樣的行星,它們會是什麼樣子。我想 Nick Lane 探討過一些早期演化的階段,他預想,在大多數這樣的行星上,基本上都會有非常相似的、大致像細菌一樣的生命形式。然後,進化過程中會出現幾次重大的突破。我直覺地認為,智能的進化應該是一個相當罕見的事件。我們可以從物種存在的時間長度來推斷。例如,細菌存在了 20 億年,卻沒有任何進一步的發展,那麼演化到真核生物 (eukaryotes) 可能就非常困難,因為細菌在地球進化史的早期就已經出現了。所以,動物出現多久了?大概幾億年吧,像是那些會跑動、爬行的多細胞動物,這大約只佔地球生命史的 10%。從這個時間尺度上看,智能的出現或許並非難事,但我個人仍然覺得這很令人驚訝。我直覺地認為,這種發展是出乎意料的。我也許會預料到宇宙中只存在大量像動物一樣的生命,做著動物會做的事。但最終能誕生出可以創造、積累文化和知識的物種,這著實令我驚奇。(關於AI文化)我的看法是,大語言模型其實並沒有真正意義上的文化。或許是我們給它們“喂”了太多現成的資訊,反而使它們失去了創造自身文化的動機。人們所說的文化,包括書面記錄、個體間的筆記傳遞等,我認為目前的大語言模型中不存在任何與此等價的東西。所以,大語言模型現在並沒有文化,我認為這恰恰是其發展的障礙之一。(關於“大語言模型文化”的設想)在最簡單的情況下,它可以是一個所有大語言模型都能編輯的巨大“草稿板”。當一個大語言模型在閱讀資料或幫助人類工作時,它可以為自己和其他同伴編輯、更新這個草稿板。為什麼一個大語言模型不能為其他大語言模型寫一本書呢?這會非常酷。為什麼其他大語言模型不能閱讀這本書,並從中受到啟發或感到震驚呢?目前,這一切都還不存在。(關於多智能體系統與瓶頸)我認為在多智能體領域,有兩個非常強大的理念至今仍未被真正實現。第一個就是我剛才提到的“文化”,即大語言模型為自身目的去擴充知識庫。第二個則非常像“自博弈”這個強大理念,在我看來它極具潛力。在進化過程中,競爭是驅動智能演化的重要因素。從演算法層面看,AlphaGo 正是通過與自己對戰,才學會在圍棋上達到頂尖水平。但在大語言模型領域,目前還沒有與自博弈等價的機制,儘管我堅信它應該存在,只是還沒人實現。比如,為什麼不能讓一個大語言模型創造一系列問題,由另一個大語言模型來學習解決?出題的大語言模型不斷提升難度,諸如此類。我認為有很多方式可以組織這種互動,這本身就是一個研究領域。但我還沒看到任何令人信服的研究同時實現了“文化”和“自博弈”這兩種多智能體帶來的提升。我們目前的研究很大程度上仍停留在單個智能體的範疇,但我認為這種情況即將改變。此外,在“文化”這個大類下,我還想加入“組織”的概念,我們同樣沒有看到任何有說服力的 AI 組織出現。所以,我們仍處於非常早期的階段。我想說的是,一個有些不可思議的類比似乎總是成立,儘管它本不該如此。那些較小、能力較弱的模型,在某種程度上確實很像幼兒園學生,大一點的就像小學生或高中生。但我們似乎還沒有“畢業”,模型的能力還沒有成熟到可以自主發展的階段。即使是像 Codex 這樣的程式碼模型,給我的感覺仍然像個小學生。我知道它們能通過博士等級的考試,但在認知層面,它們仍然像幼兒園或小學的孩子。所以我認為它們無法創造文化,因為它們自己還是“孩子”。它們就像是“學者綜合症兒童”,對海量資訊擁有完美的記憶力,能夠令人信服地生成各種看似精美的“垃圾內容”。但我仍然認為,它們並不真正理解自己在做什麼,也尚未集齊我們期待的、真正認知能力所需要滿足的全部條件。14 從自動駕駛到未來教育你在特斯拉領導自動駕駛團隊的經歷,對於理解AI從“演示”到“產品”的鴻溝有何啟示?為什麼這個過程如此漫長?你現在投身教育領域,創辦Eureka項目,是出於怎樣的考慮?你理想中的AI導師是怎樣的,以及如何才能教好技術和科學內容?Andrej Karpathy: 首先,我必須反駁一點:自動駕駛這項工作還遠沒有完成,在很多方面都如此。我確實認為自動駕駛是一個非常有意思的領域,我從中獲得了很多直覺,畢竟我為此投入了五年時間。這個領域有很長的歷史,最早的自動駕駛演示可以追溯到 1980 年代。你甚至能找到 1986 年 CMU 的一個演示,一輛卡車在路上自動行駛。快進到我加入 Tesla 的時候,我體驗過一個非常早期的 Waymo 演示,大概是在 2014 年,它給了我一次完美的駕駛體驗。那是在十年前,一次完美的 Waymo 自動駕駛,載著我們在 Palo Alto 轉了一圈,因為我有個朋友在那裡工作。當時我感覺這項技術已經非常接近成功了,但之後仍然花了很長的時間。我確實認為,對於某些類型的任務和工作,從“演示”到“產品”之間存在著巨大的鴻溝。演示可能看起來很容易,但打造成熟的產品卻異常艱難,在自動駕駛這類失敗成本極高的領域尤其如此。在許多其他行業,任務和工作可能不具備這個屬性,但一旦你面對這個屬性,項目的時間線就必然會大大延長。我認為,在軟體工程領域,這個屬性同樣存在。對於那種憑感覺、為了好玩的“氛圍程式設計”來說可能不存在,但如果你寫真正的生產級程式碼,我認為這個屬性就必須被考慮,因為任何一個錯誤都可能導致安全漏洞,進而造成數百萬甚至上億使用者的個人敏感資訊洩露。所以我認為,在軟體開發領域,人們也應該像對待自動駕駛一樣謹慎。在自動駕駛中,如果出錯,可能會導致人員受傷;而在軟體領域,我幾乎覺得某些潛在的糟糕後果是無法估量的。所以我認為兩者共享這一屬性。我認為,之所以花費這麼長時間,關鍵在於要理解這是一個“九的行軍”,每提升一個“9”的可靠性,都需要付出同等量級的努力。當你做出一個演示,能在 90% 的情況下工作,這只是第一個“9”。接下來你需要第二個“9” (99%),第三個“9” (99.9%),第四個,第五個。我在 Tesla 的五年裡,我們大概經歷了三個或兩個“9”的迭代,具體記不清了,但就是這樣不斷提升可靠性的過程。而且,前面還有更多的“9”等著我們去實現。這就是為什麼這類項目如此耗時。這段經歷對我思想的形成至關重要。我曾經非常容易對演示感到驚豔,現在每當我看到任何產品的演示,我仍然會印象深刻。但你要知道,別人精心準備後展示給你的演示,是最具迷惑性的。如果你能親手操作一下,情況會好一些。但即便如此,你離真正的產品還差得遠。一個真正的產品需要直面現實世界中所有預想不到的挑戰,以及無數需要修補的、零散的邊緣行為場景。所以我認為,我們將會看到這一切在 AI 其他領域重演。“九的行-軍”中,每個“9”都代價恆定。演示固然鼓舞人心,但要走的路還很長。我認為這確實是一個性命攸關的安全領域,除非你只是在做一些好玩有趣的“氛圍程式設計”。因此,這段經歷也塑造了我對 AI 發展時間線的看法。(關於Eureka項目與教育)我想可以這麼說,我感覺那些頂尖 AI 實驗室正在做的事情,其發展路徑在某種程度上是註定的。我覺得自己雖然可以參與其中,但我並不認為我的加入能帶來什麼獨一無二的改變或提升。我個人最大的擔憂是,很多 AI 的發展會繞開人類進行,導致人類最終被邊緣化,喪失自主權。我關心的不僅僅是 AI 將以完全自主的方式為我們建造戴森球那樣的宏偉工程。我更關心人類的命運,我希望人類在未來能過得很好。我覺得,相比於在前沿實驗室裡做出一些增量式的改進,我能在這裡 (教育領域) 創造出更獨特的價值。所以對我而言,教育是實現這一目標的途徑。關於 Eureka,我想最簡單的比喻就是建立一個“星際艦隊學院”,不知你是否看過《星際迷航》。星際艦隊學院就是一個精英機構,專注於前沿技術,比如建造宇宙飛船,並培養學員成為駕駛這些飛船的飛行員。所以我設想的也是這樣一個頂尖的精英技術知識學府,一所非常與時俱進的頂尖院校。(關於AI導師與教學方法)關於 Eureka,教育領域有一點讓我非常著迷,那就是 AI 的加入必將從根本上改變教育。我認為教育體系必須進行某種程度的重塑和變革。目前我們還處於非常早期的階段。我想,很多人會去嘗試那些顯而易見的應用,比如用一個大語言模型來問問題,做一些目前通過提示就能完成的基本操作。這固然有幫助,但在我看來還非常粗放和不成體系。我希望用一種更嚴謹的方式來做這件事,但目前的技術能力還達不到我的要求。我想要的是一種真實的、一對一的導師體驗。我腦海裡有一個很典型的例子,就是我最近學習韓語的經歷。起初,我在網上自學;後來,我在韓國參加了一個小班課,和大概十來個同學一起跟著一位老師學習,那段經歷很有趣。最後,我換成了一對一的家教。這段經歷讓我非常感慨,因為我遇到了一位極好的導師。回想起來,她為我所做的一切,那種學習體驗,簡直不可思議,也為我最終想要打造的產品設立了極高的標準。她非常敏銳,僅通過一次簡短的對話,就能立刻瞭解我作為學生的水平,知道我懂什麼、不懂什麼,並且能精準地提出問題來探查我的知識體系。目前沒有任何一個大語言模型能做到這一點,甚至差得很遠。但一位優秀的導師就能做到。一旦她瞭解了我的情況,她就能精準地為我提供我當前能力水平所需要的一切內容。我總是能獲得難度適中的挑戰,既不會太難,也不會太簡單。一位好導師就擅長於提供這種恰到好處的學習材料。所以,我當時感覺自己成了學習的唯一瓶頸,唯一的障礙就是我自己的吸收和記憶能力,而不是找不到知識或者知識講解得不好。這正是我希望為所有人實現的目標。(關於如何教好技術)我認為這是一個相當寬泛的話題。我感覺自己大概有十到二十個或多或少會有意無意使用的小技巧。但從宏觀層面來說,我想這很大程度上源於我的物理學背景,我真的非常享受這段經歷。我甚至極力主張,每個人在基礎教育階段都應該學習物理。因為我認為基礎教育的目的不是為了日後工作而去積累知識,而是為了啟發心智。物理學在這方面獨樹一幟,因為它能讓你在腦中進行的某些思維訓練,對未來非常有價值。比如,建立模型和抽象概念的思路,以及理解系統總可以用一個一階近似來描述大部分情況,但其後還可能存在二階、三階、四階項。再比如,你觀察到的系統可能充滿噪聲,但實際上存在可以抽離出來的基本頻率。就像物理學家走進教室說:“假設有一頭球形奶牛……”,大家聽了都會笑,但這其實是非常了不起的思維方式,在各行各業都具有極強的普適性。因為在很多情況下,一頭牛確實可以被近似成一個球體。得益於這種訓練,我在觀察一個系統或事物時,總是試圖找出它的一階項和二階項。當我腦中有一堆錯綜複雜的想法或知識時,我會努力尋找什麼才是真正關鍵的?什麼是一階份量?我該如何簡化它?如何用最簡單的模型來展示其核心?然後再去處理其他次要項。我的一個項目 micrograd,或許可以很好地說明這一點。micrograd 用 100 行程式碼就展示了反向傳播。你可以用加法、乘法等簡單的操作來建構神經網路,就像搭樂高積木一樣。你建立一個計算圖,執行一次前向傳播和一次反向傳播來獲得梯度。這正是所有神經網路學習的核心。所以,micrograd 這 100 行 Python 程式碼,包含了理解神經網路訓練所需的全部精髓。其他的一切,都只是為了提升效率。我非常喜歡找到這些更低階的核心要素,然後將它們清晰地呈現出來。我覺得教育是智力上最有趣的事情,因為你面對的是一團錯綜複雜的知識,而你的任務是把它梳理清楚,鋪設成一條知識的坡道,讓後面的每一步都建立在前面一步的基礎之上。我發現,這種梳理知識的過程,本身就是一項極富智力趣味的認知任務。所以我個人非常享受這個過程,並著迷於如何以特定的方式將知識呈現出來,這或許對我的教學很有幫助。 (數字開物)