〈YouTube〉-EP-Paul Christiano - Mechanistic Estimation - IPAM at UCLA

Paul Christiano 在 IPAM(UCLA)這場演講開門見山:他要談的是一道數學問題,而且他相信這道題對「對齊並控制 AI」極其重要。他說自己職業生涯幾乎都在做這件事,請聽眾先給他一點信用,接受這是個值得投入的數學問題,理由留到後面再談。同場稍早的講者 Jacob 講了同一個主題的一個具體例子,他要補上的是另一塊:機制式估計(mechanistic estimation)怎麼定義、有哪些猜想、以及為什麼他認為這個取徑有機會規模化。他也提到,這種估計還有人叫它演繹估計、因果估計或解析估計,而這個想法對大多數在做研究的數學家來說其實很日常。

三個例子:同一個問題,兩條路

第一個例子在數論。隨機挑一個整數,問它是不是孿生質數,也就是問 n 與 n+2 是不是同時為質數。你可以跑一堆隨機樣本,用經驗比例回答。你也可以先證明整數裡大約有多少比例是質數,再假設 n 與 n+2 的質數性互相獨立,算出一個答案,然後逐一檢查哪些機制會讓這個獨立假設失準:對 2 的整除性會讓兩者正相關,更大的質數則帶來反相關,而比較小的數本來就比較容易是質數,這又會再引入一層相關。每一項修正都可以繼續往下推。

第二個例子是電路。餵隨機輸入,問輸出為 1 的機率。經驗做法是跑一百次,看到三十次輸出 1,就估三成。結構式做法是:每條線路有大約一半的時間是通的,遇到一個邏輯閘就先把它的輸入當成獨立,兩個各半的事件做 AND 是四分之一,一路往下算,得到整個電路大約三成五。接著你會注意到某些閘有共同的祖先,它們其實是相關的,於是 OR 比原本以為的更不容易成立,把估計往下修到兩成八左右。同樣地,這裡多花的計算力氣是拿去把演繹論證做細,樣本數反而不是重點。

第三個例子是彈珠台。把一群球放在桌子的左半邊,速度方向隨機,等 t 秒之後,問還有多少比例的球留在左半邊。經驗做法是跑很多次模擬。結構式做法是直接表示「所有可能組態的分布」,再讓這個分布隨時間演化:把個別球當成彼此獨立,追蹤單一顆球在位置與速度上的機率分布怎麼隨時間變化,解出對應的方程式。這條路得到的曲線跟實驗相當接近,但不完全吻合,因為它沒有處理「球因為可能碰撞而比較不會靠在一起」這類現象,而這些就是可以再加進去修正的地方。

三條路都有一個共同點:你可以花更多時間讓估計更準,但兩種方式運作的邏輯完全不同。左邊是歸納,看了幾個樣本,不知道背後發生什麼事,但推論沒看過的輸入大概會是什麼樣子。右邊是演繹,像證明的推導,只是中間夾著一些預設。

「機制式」是什麼意思

Christiano 先定義估計器。一個估計器 g 吃兩個輸入:一個函數 f,也就是要估期望值的對象;以及一個計算預算,代表你願意花多少力氣。它吐出的是一個估計值。要衡量好壞,就固定一個函數分布 D,從中抽一個 f,跑估計器,跟真值比較,把平方誤差平均起來,這就是平均平方誤差。

接著他要說明什麼叫「不機制式」。最典型的動作是這樣:跑一次 f(x1),看到答案是正一,於是你推論 f 大概有正的偏誤,那麼另一個毫不相干的輸入 x2,期望值大概也偏正。這一步的問題在於,你把觀察到的行為反推回去猜看不見的結構,再拿這個猜測去預測沒看過的行為。機制式估計的定義就是不允許這個動作:推論只能從函數裡實際發生的事情往下游走,一步一步演繹出對輸入行為的預期。

正面一點的說法比較難講清楚。Christiano 借用的圖像是證明:有前提,有局部有效的推論步驟,有結論,差別是我們額外加上一堆預設。不知道兩個變數的相關性,就假設它們不相關,把乘積的期望值當成期望值的乘積。如果某個 Z 已經捕捉了我們知道的相關性,就假設在給定 Z 的條件下兩者不相關。如果只知道兩兩或三三之間的交互作用,就假設更高階的累積量是零。最後這條只是前面那條的推廣,講的是用低階資訊補上高階交互作用,並假設高階修正為零。

還有一個容易被忽略的動作:連確定性的量也照樣當成隨機。這裡的期望值代表的是「我們的賭盤賠率」,也就是我們對某個命題的最佳猜測。它同時包含兩種不確定性,一種是輸入抽樣帶來的誤差,另一種是我們對模型結構本身的不確定。

有聽眾追問,這是不是等於用某種機率語法寫一個程式。Christiano 說比較像一套多了推論規則的證明系統,而不是把模型行為重新描述一遍。每個估計可以看成「用輸入分布寫出來的輸出分布公式」,而這些公式彼此可以互相矛盾,後面的版本也常常推翻前面的版本,只是希望修正越來越小。也有人問,這是不是「有先驗但不更新後驗」。他的回答是,用貝氏的話講,這些東西全部活在先驗裡;真正的問題是你要花多少力氣,才把這個先驗算出來。

演講裡另外設了一個簡化條件:輸入分布是已知的,例如均勻分布。他設這個條件,是因為整個推導必須從「關於輸入分布的陳述」出發,所以輸入分布需要有形式化的表示;均勻與否本身不重要。真實應用裡會同時做兩件事,一邊從真實世界的資料學到分布性質,一邊用機制式分析問「眼前這個網路把這些輸入分布性質轉換成什麼樣的輸出分布」。這場演講只切出後面那一半。

跟證明的差別:證明把問題結案,估計隨時可以被推翻

Christiano 說,證明是最值得放在心裡的類比,因為那是人類唯一很擅長「一連串局部有效的演繹步驟、最後得出複雜到沒人看得懂全貌的結論」的例子。但兩者有一個關鍵差別:證明把問題結案,機制式估計是會隨時間改變的最佳猜測。

證明排除了大幅更新的可能性。估計沒有。估計可能漏掉某個結構特徵,例如前面那個整除性造成的相關,於是答案差了一個倍數;也可能碰到證明必須排除的那種巧合,某個沒有理由的意外讓陳述剛好成立或不成立。他舉了一個很鮮明的例子:假設 f 是一個非常混亂的函數,正負一各半,要證明它在一個很大的輸入空間上大致平衡極其困難,因為證明必須排除「它剛好很多次都是正一」的巧合,而通常你得先找到真正的結構才辦得到。但如果這個東西真的沒有結構,做出一個好的估計卻很容易。估計唯一會錯的方式,就是存在你沒注意到的結構。

他說這就是為什麼他對「證明機器學習系統的性質」極度悲觀,卻對機制式估計相對樂觀。

收斂速度,以及雜湊函數當最壞情況

接下來是這場演講最核心的技術問題:這些估計到底收斂得多快?具體地說,當預算增加,估計器的平均平方誤差應該以什麼速度下降?

先做正規化:函數的變異數固定為一,可以想成正負一的函數;並且假設函數值可以在時間 t 內算出來。在這些約定下,蒙地卡羅估計的誤差永遠以大約 1/n 下降,這裡的 n 是跑過的樣本數。如果說某個問題「有閉式解」,在這個脈絡下通常指的就是誤差以指數速度下降,你可以一直往下算出更多位數。

最壞的情況,也就是他認為機制式估計最不利的場景,是一個隨機且不可預測的函數,例如一個好的雜湊函數:吃 k 個位元,吐出正負一。如果這個雜湊函數真的沒有可利用的結構,那麼最好的機制式估計就是跑 n 個點,然後把跑出來的值的總和除以整個定義域的大小。注意分母是定義域大小,不是樣本數。

這看起來很像抽樣,他也知道會被這樣問。差別在因果圖:這些節點之間沒有隱藏的結構,它們真的就是彼此獨立,函數的期望值在因果上位於這些節點的下游。我們沒有從觀察到的點去推論沒觀察到的點的行為,這才是它算機制式估計的原因。

這條估計曲線的行為也值得記住。定義域小的時候,跑到足夠多的點,誤差就歸零。只跑少數幾個點的時候,最好的答案幾乎就是零;如果你只看了一百個點,而可能的輸入有一兆個,你應該幾乎完全忽略你看到的東西。

但這個故事有個致命的轉折。如果那個雜湊函數其實有偏,例如實際上五成二的值是正一,而你不知道,這個估計器會被抽樣打得很慘,而且會慘很久。所以機制式估計沒有任何保證。它的優點和缺點是同一件事:它把全部賭注押在「我們真的理解了」。抽樣法的美德是穩健,就算你不懂裡面發生什麼事,也大概不會錯得太離譜;機制式估計反過來,漏掉任何一個重要的考量,估計就會災難性地錯,但如果全部抓到了,它會顯著優於隨機抽樣。

Christiano 說他喜歡的正是這一點。這讓機制式估計可以當成「我們到底懂不懂這個神經網路」的測試,而且成績可以直接量出來。

猜想一:抽樣永遠不是最佳解

有了這些準備,他開始講猜想。設定是這樣:分布 D 是某個參數化函數族上的均勻分布,每個函數可以在時間 t 內算完,變異數是一。

第一個猜想是:存在一個估計器,使得「它在所有可能預算上的誤差加總」會收斂到「把函數算一次的代價」,也就是一個常數。把同樣的量拿去問抽樣,會以對數速度發散,大約是 t 乘上 log n。換句話說,漸進上可以贏過抽樣一個 log n 的因子。

他覺得,作為一個電腦科學家,「抽樣對任何估計問題分布都不是最佳解」這句話本身就已經相當反直覺。但真正讓他在意的是後面那個講不清楚的版本:他相信存在一個機制式估計器具備這個性質。他沒辦法把那個猜想形式化,因為「機制式」本身他只能用手勢比劃,所以他覺得有趣的是,前面那個講得清楚的猜想可以是這套直覺的推論。

也有人問這跟控制變異數之類的變異數縮減技巧有什麼關係。他回答,很多問題確實存在比抽樣更精緻、誤差更小的做法,你也可以把同一個猜想套用在改良後的版本上。但並不是每一種分布都存在這種形式的演算法。

另一個問題是,這跟指數時間假設之類的複雜度下界衝不衝突。他說,這裡講的每一件事都跟複雜度理論的現況一致。以雜湊函數為例,它其實是在說「除了在隨機點上求值,你什麼都做不了」;但當你真的知道那個函數沒有偏,你就能對沒看過的所有點做出很好的平均估計。失敗的方式跟複雜度理論平常碰到的很不一樣,反而比較接近在問 P 是否等於 BPP。從複雜度理論的角度看,這裡沒有宣稱什麼驚人的事。

他把這條猜想畫成曲線下的面積:抽樣的誤差是 1/n,面積大約是一個方塊;猜想說機制式估計器的總面積,在同一個常數之內,等於抽樣曲線下的單一方塊,他猜那個常數小於二。

ARC 過去大約十八個月解掉了一堆隨機模型的案例,這讓他對猜想一感覺相當不錯。真正難的是猜想二,也就是對複雜的模型有效率地找到估計器。他的下注大概在兩成五到五成之間。

猜想二:歷史上,被找到的現象幾乎都會被解釋

第二個猜想來自一個歷史觀察。他的說法是:每當有人找到一個有趣的計算現象,人類似乎總能很快解釋它,快到讓機制式估計真的能捕捉發生什麼事。

他舉的第一個例子是二次互反律。隨機取兩個質數,問「P 是不是 Q 的平方剩餘」和「Q 是不是 P 的平方剩餘」,這兩個問題答案相同的機率有多高。天真地估是一半,因為各有一半的剩餘是平方剩餘,等於丟兩枚硬幣問它們一不一樣。但實際去算,答案是四分之三。Gauss 當年是在表上算數字時發現的,據他所知,Gauss 當時完全不知道為什麼,大約花了一年才理解並證明。

第二個例子來自物理。有一組弱耦合的振盪子,彼此之間有輕微的非線性作用。大家預期,把能量灌進某個振動模式之後,能量會散逸到所有模式裡,然後要很久很久才會重新聚集。實際模擬的結果卻不是這樣:幾乎所有能量在出乎意料地短的時間內就回到原本被激發的那個模式。這個現象一開始完全是個謎,接下來大約十年,人們才建立起足夠好的圖像,可以對「要多久」、「那個模式裡會有多少能量」做出機制式估計。

第三個例子是隨機 3-SAT。固定變數數量,增加子句數量,實例會從幾乎一定可滿足快速相變到幾乎一定不可滿足。八零年代末、九零年代初,電腦科學家用生成實例加上簡單求解器,經驗性地找出臨界點大概在哪。九零年代中期,物理學家用統計物理的空腔法做出合理的估計。到了兩千年代中期,已經有相當好的估計,足以回答「產生一個特定規模的實例、丟給某個求解器,該不該期待它找到解」。

他的觀察是,他找過幾十個候選案例,找不到任何一個「現象被發現,但長期沒有人能給出機制式說法」的例子。少數幾個他判斷不了,主要跟橢圓曲線有關,因為他不是數學家。

他強調這個紀錄有多奇怪。證明、謎題、自然現象的解釋,都可以長期懸而未解;沒有特別好的理由說 Gauss 不會發現一個關於質數的事實,然後讓它幾百年沒人解釋。他也想過路燈效應的可能:數學家只探索自己擅長解釋的現象。但他認為某種程度上相反,因為一個計算系統做出真正意外的事,反而是吸引數學家聚集過來的動機。他自己就說,如果存在一個有偏、但沒人知道為什麼有偏的雜湊函數,那會是個非常有趣的數學現象。

有人質疑這是確認偏誤:你想看到機制,所以就看到了機制,要怎麼做負控制來證明不是?他承認這個對話值得繼續,但說他的信心來自數學家社群對「什麼算充分解釋」的直覺。他指出,出錯的時候幾乎都是因為漏掉了更後面的東西,而不是因為接受了一個完全離譜的論證;而且在二次互反律這個例子裡,後來真的有了證明。

然後他把這件事形式化。想像一個搜尋過程,例如數學家社群做計算實驗、累積抽象、找到有趣的現象;它吃一組隨機硬幣,吐出一個分布 D,一樣有執行時間與變異數的約定。猜想是存在一個對應的「解釋」過程,吃同一組硬幣,吐出一個估計器;這個估計器是機制式的、勝過抽樣,而且執行起來幾乎跟原本的搜尋過程一樣快。他說這個猜想對任何研究社群都成立,外星數學家也好,其他尋找有趣現象的搜尋過程也好。

機器學習是那份紀錄上最大的破洞

把話題轉回機器學習時,他說數學家找到有趣的計算現象之後,幾乎總能解釋它;但人類的紀錄上有一個很大的污點,那就是機器學習。訓練幾乎任何規模合理的神經網路,然後試著解釋它為什麼有效,我們完全做不到。能給出滿意解釋的只有最小的模型,甚至比演講中展示的那些還要小。

形式化的版本是這樣:訓練一個模型去預測某個定義明確的函數,令 f 是這個模型的損失,然後問「能不能機制式地估計這個損失」。他說我們離做到這件事還很遠。

ARC 的希望是:解釋現象並不比找到現象難多少。機器學習之所以例外,不是因為它找到的計算現象在性質上不同,而是因為數學家擅長解釋數學家能找到的現象,物理學家擅長解釋物理學家能找到的現象,而梯度下降可能也擅長找到某種特定的現象。一旦你把「找現象」這件事自動化、規模化,人手解釋就沒有指望了。

所以出路是把手動找解釋的過程也自動化、形式化,然後用梯度下降把它規模化:學出理解模型行為所需的特徵,學出權重裡能解釋某些行為的結構。為此必須把估計器的空間參數化,才有機會用梯度下降搜尋。他也提到,這個自動化系統的輸出不會是人類能讀的東西,比較像自動化的證明檢查器:我們理解局部的推論規則,理解整個解釋是怎麼由大量小步驟堆起來的,因此可以判斷這是一個合理的機制式說法,即使整個解釋遠超人類尺度。

聽眾的追問大致圍繞幾件事。有人問,如果想理解的是 agent 加上一堆工具,這個框架怎麼推廣。他說是兩種情境的混合:工具與電腦系統有形式定義,比較像平常的數學分析;疊上神經網路之後,你需要一個解釋同時捕捉工具那一側、agent 內部、以及兩者怎麼互相關聯,這會是個挑戰。

有人問,這個計畫的目標是理解單一網路,還是理解一整類網路。他非常明確地說是前者:他想看著 GPT 5.6,問裡面到底發生什麼事、它在想什麼、為什麼能達成目標、為什麼答案準。

有人舉了一個具體場景:如果把一個小網路訓練到完美解決複製任務,然後回頭發現它其實就是一個歸納頭的實作,這算不算他要的機制式解釋。他說那是很重要的第一步,但不算充分。真實的網路是髒的,裡面可能有雜訊、可能同時有很多別的事情在發生。你需要的圖像要能對眼前這個髒網路做定量推論,例如回答「如果我把這些權重加一點雜訊,準確率會掉多少」,而且要比隨機抽樣更有效率地回答。基本結構的理解要跟這種比較凌亂的定量估計結合起來。

有人問,「機制」這個詞是不是隱含了簡潔。他回答,解釋大概會跟模型一樣大:一兆參數的模型,解釋大概也是一兆參數。它們應該盡量簡單,比模型簡單一點,但不會簡單到人類能讀。簡潔是他想要的性質,但不足以拿來區分機制式與非機制式。

有人問,換成圖靈機的世界,能不能把話講得更清楚。他說情況很像,要找的是「程式行為的機制式論證」,也就是一個估計器,吃圖靈機的描述,對它的輸出分布做出陳述。

他也示範了這個議程想回答的問題長什麼樣。假設我們想知道 GPT 5.6 在一組隨機數學問題上答對的比例。你可以用另一個語言模型或某個演算法生成一組有挑戰性的問題,丟進模型,檢查答案,也許得到 83.7% 這個數字。但要機制式地理解「這一兆個權重為什麼能答對」,你得理解它在答題過程中做的搜尋、推論、規劃與工具使用。這些現在完全是不透明的:我們看不到目標導向的行為在哪裡,看不到它怎麼對沒觀察到的量做推論,也看不到它怎麼做計畫。他說,即使只是把「為什麼這組權重能答對隨機數學問題」講清楚,都會是往「機制式理解前沿模型在真實情境下怎麼運作」跨出很大一步。

為什麼這件事對對齊是關鍵

演講最後回到他一開始的承諾:為什麼這道數學問題對對齊重要。

他的主張是,把模型當黑箱,是對齊工作碰到的根本障礙。很多性質在黑箱裡不是危險,就是根本測不了。你唯一能理解模型在分布上行為的方式,是把它跑很多次;唯一能理解一個計畫在真實世界會有什麼後果的方式,是把它執行下去。這是很糟的位置。

如果有好的機制式估計器,即使人類看不懂模型怎麼運作,也能直接回答幾個大問題:模型為什麼在訓練分布上有效;它在一個差很多的分布上,例如實驗室裡抽不到樣本的分布,會怎麼行為;它現在是不是在對我們說謊;它是否真的相信自己說的話;它多久會嘗試去做一件很糟的事。他認為這些問題本身在演算法上並不特別難,真正卡住的是我們不懂模型裡面發生什麼事。

他用一個例子說明機制式估計在這裡的作用。假設我們對模型在訓練分布上的準確率已經有了好的估計,而且這個估計是機制式的。這代表我們沿著模型實際跑的計算走一遍,指出「是這些中間性質讓答案準」;單純跑一堆例子、推論「裡面有某個東西讓它準」,達不到這個效果。如果模型基於某個策略性理由決定說假話,那件事必須體現為其中一些性質壞掉。估計器本身不會吐出「模型在說謊」這種句子,整場演講裡也沒有地方可以用到「說謊」這個詞,能問的只有計算系統的行為問題。但重點是:如果你知道答案在一個分布上為什麼準,而那個機制後來壞掉了,你就知道在那個分布上不該再相信答案。這正是面對「可能在分布外做出敵意行為」的模型時,最需要能回答的問題。

有人問,為什麼一定要是機制式,黑箱估計不行嗎。他的回答是:當模型決定說謊時,裡面有東西改變了。黑箱估計不需要知道任何關於內部的事,它對「是什麼內部性質讓它原本有效」沒有任何直覺。機制式估計做的是把「推論出黑箱裡有東西在發生」變成「模型的一個具體性質,可以拿來推理」。

也有人指出,這似乎跟前面說的「每個元件都很複雜、我們可能看不懂」有矛盾。他承認自己用「理解」這個詞用得太鬆。人類不會理解這些東西,他自己看進去也只會看到一兆個數字和奇怪的特徵。他說的「理解」是:這個估計器能回答定義良好的問題,而且當某個差異真的跟預測有關時,它會用那個差異去改變自己的估計。因為它追蹤了「是哪些分布性質導致了這個結果」,當你換到一個那些性質不成立的分布,它就會說不該再估計答案是準的。

他也交代了目前的做法。現在碰到「模型在我們無法等待和檢查的情況下行為不良」,最好的希望是思維鏈監控:看模型對自己說的話,問它看起來是不是在試圖欺騙我們、是不是在追求某個不好的目標。這是目前最好的方法,但他說這個做法在接下來六到十二個月有很嚴重的退化風險。已經開始出現模型明確推理「人們正在讀我的思維鏈」;另外還有架構漂移,讓模型的推理越來越不依附於它從人類身上學到的思維鏈。機制式估計處理的是同一個需求,但有可能適用到非常不同的架構上。

他對 IPAM 這個場合的總結是,這個議程的成敗主要卡在幾道很硬的數學問題上。「什麼算機制式」聽起來很哲學,但本質上更接近數學問題,而不是哲學問題或機器學習問題。如果這些數學問題被解掉,對我們理解、監控與訓練 AI 系統的能力,會有相當實質的幫助。