https://osf.io/qhc6y/download
深入:真AGI的遞迴理性機率程式語言:memo的實現,具身博弈
摘要
一種「心智理論」(theory of mind)是什麼樣的東西?作為認知科學家,我們如何將所研究的各種心智理論形式化?在本文中,我們認為將心智理論視為一種程式語言是有價值的:這是一種專門用於設定和推理涉及其他心智問題的語言。借鑒程式語言理論與歷史中的思想,我們展示了這種視角如何幫助我們形式化心智理論中的概念,精確闡明多個心智理論之間的差異,並推理我們如何隨時間發展自己的心智理論。
引言
我們應該如何看待心智理論?在有影響力的「理論論」(Carey, 1985;Gopnik & Meltzoff, 1997)觀點下,我們應該把心智理論確實看作是一種理論:類似於科學理論(Gopnik & Wellman, 1992)。但在這裡,「理論」具體指的是什麼?我們如何用精確、計算的方式表述一個給定的心智理論 θ?而且,θ 究竟是什麼樣的東西——我們又該如何形式化 θ 所屬的可能心智理論空間 T?
一種能夠表示心智理論的精確數學語言具有三個關鍵價值。
首先,這樣的語言可以讓我們以明確且無歧義的方式陳述關於心智理論的想法和假設。
其次,這樣的語言使我們能夠系統地將這些想法和假設實例化為可執行的計算模型,從而進行有價值的模擬和分析——例如,Horschler 等人(2023)最近展示了如何利用一系列可執行模型來刻畫非人類靈長類動物的心智理論。
最後,對心智理論的系統性計算基礎可以被用來以原則性方式設計具備類人社會智慧的真實世界人工智慧系統。
因此,本文的目標是提供一種形式化 θ 和 T 的方法。我們提出,應該將心智理論 θ 視為一種程式語言(PL),在這種語言中,心智可以設定並解決涉及他人心理推理的問題。因此,心智理論的空間 T 就由可用於心理推理的潛在程式語言空間所定義。
本文從四個階段展開這一觀點。
我們首先討論兩個先前試圖形式化心智理論的工作,並說明為何新的解釋是有價值的。
接著,我們通過一個具體的程式語言範例來介紹我們的觀點,該語言體現了一種特定的心智理論。我們使用這個範例展示程式語言的設計如何具象化心智理論中的概念。
然後,我們從具體走向一般,討論我們的觀點如何幫助我們根據程式語言語法和語義的變化,形式化不同可能心智理論之間的差異。
最後,我們討論我們的觀點如何通過借鑒程式語言設計的歷史,為我們理解理論變遷過程提供洞見。
三種心智理論的形式化嘗試
我們希望從心智理論的形式化中獲得什麼?在我們看來,對心智理論的正式描述至少應能解釋它們的兩個關鍵特徵:(1)心智理論如何使其擁有者能夠高效地表示和推理涉及他人心理的情境;(2)這些理論的擁有者如何在面對新證據時成長、修正或完全替換其理論。
貝葉斯網路模型
早期的一種形式化嘗試(Gopnik 等人,2004;Gopnik & Wellman,2012)通過將心智理論形式化為因果貝葉斯網路(Pearl,2000)來回應這些需求。在此模型中,諸如代理人的信念和慾望等潛在概念可以表示為貝葉斯網路中的節點,有向邊指向該代理人的行為(圖1)。預測和規劃等任務可以通過高效的機率推論演算法來支持(Baker 等人,2008)。最終,理論本身也可以在新證據面前發生變化,通過在可能的貝葉斯網路空間上進行層次推論(Goodman 等人,2006)。例如,一個孩子起初可能高度確信心靈可以用圖1(a)所示的網路很好地建模。隨著時間推移,她可能會更偏好圖1(b)中那種不夠簡潔的網路,因為發現它在感知受限的情況下更能準確建模心靈。
這個模型面臨兩個挑戰。首先,為每一個可能的社會情境編寫一個貝葉斯網路實際上是不可行的。某一時刻一個代理人的信念和慾望或許可以用固定的貝葉斯網路表示,但人類對心理的推理能力是無限的、生成性的、遞迴的:我們可以同樣輕鬆地推理一個代理人對他人心靈信念的信念,並隨著行為而動態變化。這表明固定貝葉斯網路不足以勝任心智理論的表徵任務,挑戰了第一個需求(1)。其次,該模型並未充分解釋一個人如何發展理論。Goodman 等人(2006)的模型考慮了在兩個預設貝葉斯網路之間的推論,但未解釋這些假設本身的來源,挑戰了第二個需求(2)。
為應對這些挑戰,Tenenbaum 等人(2007)提出將直觀理論形式化為因果文法而非固定貝葉斯網路,後者可以生成一系列針對特定情境的貝葉斯網路。因果文法支持在一個領域內對無限多情境進行推論,並通過文法生成的假設進行推論來實現學習。然而,「文法」的形式體系仍然不足以表達心智理論的全部豐富性——例如,無法表達關於信念的遞迴信念(Griffiths & Tenenbaum, 2007)。
程式設計模式模型
另一種方法源於通用機率程式語言(PPL)的發展,如 Church(Goodman 等人,2012)和 WebPPL(Goodman & Stuhlmüller,2014)。在 PPL 中,複雜的機率模型可以通過簡單的程式生成:例如,貝葉斯網路中重複的節點可以由循環自動產生。
基於這一思想,Goodman 等人(2015)將心智理論視為一種在通用 PPL 中的「程式設計模式工具箱」。例如,在這個框架下,表示一個理性、目標驅動的代理人行為就對應於「通過推論進行規劃」(planning-as-inference,Botvinick & Toussaint,2012)這一程式設計模式,其中代理人為了實現某個目標,會推斷出「哪些行為可能導致了該目標達成」的結果。具體而言,在 WebPPL 中,我們可能會這樣編寫程式碼:
像因果文法一樣,這些程式設計模式使程式設計師能夠靈活地生成特定情境的機率模型。然而,這些模式比因果文法強大得多。例如,表示「對思考的思考」或遞迴性的社會推論,就對應於巢狀推論(nested inference)這一模式:即在一個本身也在遞迴執行推論查詢的機率模型上運行推論查詢(Stuhlmüller & Goodman,2014;Zhang & Amin,2022)。
具體來說,如果我們想要根據觀察到的行為 `observed_action` 來推斷一個代理人的目標,也就是執行逆向規劃(Inverse Planning, Baker, Saxe, & Tenenbaum, 2009),我們可能會這樣寫:
像因果文法一樣,這些程式設計模式使程式設計師能夠靈活地生成特定情境的機率模型。然而,這些模式比因果文法強大得多。例如,表示「對思考的思考」或遞迴的社會推論就對應於巢狀推論(nested inference)這一模式:即在一個本身也在遞迴執行推論查詢的機率模型上運行推論查詢(Stuhlmüller & Goodman,2014;Zhang 等人未發表)。在實踐中,這個工具箱取得了顯著成功,並已被用於定量建模社會認知中一系列複雜的心理現象(Evans 等人,2017)。
那麼我們是否終於解決了需求(1)呢?當然,我們在恢復人類思維的無限性、生成性和遞迴性方面取得了進展。但程式設計模式仍然不是對心智理論令人滿意的形式化,原因有兩個:
首先,正如我們將在本文後面展示的那樣,很容易寫出應用這些程式設計模式的模型,但其行為卻違背我們的直覺——因此,這些模式並未完全捕捉到典型心智理論中的關鍵方面。其次,更重要的是,我們現在失去了(2)理論變化的能力:並不存在一個形式化的、「可列舉」的「程式設計模式」結構,供我們在思考心靈時進行推論。
程式語言模型
因此,在本文中,我們提出一種新的視角,它整合了貝葉斯網路/因果文法模型和程式設計模式模型的優點。在我們的觀點下,心智理論不像一組程式設計模式,而更像是一整門程式語言。與 Church 和 WebPPL 一樣,它是一種機率程式語言。但不同於 Church 或 WebPPL 的是,它不是一種通用的機率程式語言,而是一種領域特定語言(domain-specific language,簡稱 DSL),專門用於關於心靈的推論領域。
在程式語言理論這一學科中,長期以來一直有設計 DSL 來表達各個領域理論的傳統(Bentley, 1986;Bernstein & Kjolstad, 2016;Iverson, 2007),包括一些科學領域的 DSL,比如經典力學理論(Sussman & Wisdom, 2015)、光線光學(Hanrahan & Lawson, 1990)以及顏色感知(Chen, Chang, & Zhu, 2024)等。
與依賴程式設計師使用某些程式設計模式不同,DSL 的語法直接提供了在目標領域中設定問題的概念詞彙表,而該語言的語義則決定了這些問題是如何被解決的。於是,「理論」就被編碼在了語言的設計之中。
重要的是,任何程式語言的語法和語義都可以用數學方式形式化,甚至可以作為許多可能語法和語義集合(schema)中的成員加以機械化處理(Felleisen, Findler, & Flatt, 2009;Pierce, 2002)。因此,理論的變化可以被形式化地建模為在可能程式語言空間上的學習過程。
我們在這裡說的 DSL 是什麼樣的呢?
到目前為止,我們對 DSL 的討論還非常抽象。在繼續之前,讓我們簡要介紹一個專門用於「推論之推論」的領域特定語言(DSL)的具體範例:一種名為「memo」(mental models 的縮寫)的真實世界語言(Chandra, Chen, Tenenbaum, & Ragan-Kelley, 2025)。memo 被開發為一種實用工具,用於構建社會認知的高效計算模型。
在我們的討論中,我們將使用 memo(以及之後的一些假設變體)來舉例說明問題,就像 Goodman 等人(2015)在討論「機率化思維語言假說」時使用真實世界語言 Church 來舉例一樣。
讓我們先快速了解一下 memo。在 memo 中,模型的核心是代理人做出選擇的過程。例如,假設 Ali 在某天下班後選擇了一家酒吧 b 去喝酒。因為他是一個理性代理人,所以他更有可能選擇離工作地點較近的酒吧。在 memo 中,我們可以使用 `chooses` 表達式來建模這個選擇行為,表達 Ali 從所有酒吧集合 Bars 中選擇一家酒吧 b,其機率與(wpp,即「with probability proportional to」)從工作地點到 b 的距離的某個遞減函數成正比:
為何要使用 DSL?「少」如何能「多」?
memo 中的語句,如 `chooses`、`observes` 和 `thinks`,大致上對應於通用機率程式語言(PPL)中的採樣(sampling)、條件化(conditioning)和遞迴查詢(recursive querying)。那麼,我們從在 memo 中編寫這些模型中到底獲得了什麼好處呢?事實上,我們難道不是因為使用了一種專用語言而犧牲了表達能力嗎?這種語言可能並不適合表達其他類型的程式?
來自幾十年程式語言領域研究的一個重要教訓是:通用性是有代價的——那就是權力帶來的負擔。讓一種語言更具表達力,可能會導致程式設計師無意中表達出他們本不想表達的內容,進而增加了程式設計師確保其程式正確性的負擔。因此,程式語言先驅 Hudak(1996)曾寫道:解決問題的理想抽象,是一種恰好匹配研究領域的程式語言——「不多也不少」。
Church 和 WebPPL 本身正是這一原則的體現。理論上,根據圖靈完備性的邏輯,任何 WebPPL 程式的機率計算都可以手動用普通的(非機率性)程式語言實現——事實上,WebPPL 程式就是通過自動翻譯成 JavaScript 來執行的(Goodman & Stuhlmüller,2014)。WebPPL 相比 JavaScript 所增加的價值在於它保證了機率計算總是正確的——例如,通過確保分布始終被正確歸一化。WebPPL 通過限制使用者只能進行正確的機率推論,從而賦予他們構建複雜機率模型的能力。
同理,memo 相較於 WebPPL 的價值也在於它的限制性:memo 通過限制使用者只能進行正確的關於代理人的推論,從而賦予他們構建複雜心智理論模型的能力。
讓我們用一個範例來說明這一點。考慮我們如何在 WebPPL 中實現 Ali-Zoe 場景。Ali 選擇一家附近的酒吧(範例1)可以通過應用「通過推論進行規劃」(planning-as-inference)模式來建模(這裡我們不用 `condition`,而是使用它的變體 `factor` 來建模有梯度的機率選擇):
當我們運行這個程式時,發現模型錯誤地預測他們相遇的機率為 0%。啊,當然會這樣!因為我們是在 `zoe_b != ali_b` 的條件下進行推論的,所以推斷結果從未滿足「他們相遇」的條件也就不足為奇了。
這裡到底出了什麼問題?問題是 WebPPL 在語言層面沒有對「代理人」概念的支持——它只支持「隨機選擇」的概念。Zoe 對 `zoe_b` 的選擇與 Ali 對 `ali_b` 的選擇在概念上是無法區分的。因此,當我們應用「通過推論進行規劃」這一模式時,WebPPL 所產生的推論就好像 Zoe 不僅可以選擇自己去哪家酒吧,還可以選擇 Ali 去哪家酒吧——也就是說,就好像 Zoe 的「一廂情願」賦予了她對 Ali 的「心靈控制」。Chandra、Chen 等人(2025)將這類 bug 稱為「行為歸屬混淆」(perpetration confusion):即混淆了哪些代理人對哪些隨機選擇具有控制權的問題。
即使是經驗豐富的程式設計師,在實踐中也很容易遇到這種 bug(Levine, 2018)。
這個範例說明的是,儘管在通用機率程式語言中使用程式設計模式為我們提供了表達大量符合心智理論的計算的「積木塊」,但這些相同的「積木塊」也可以被組合起來表達一些違背我們心智理論的計算——例如,表示一個代理人對另一個代理人擁有「心靈控制」的計算。而像 memo 這樣的 DSL 則通過提供恰好且僅限於心理推論所需的結構來解決這個問題:例如,通過在語言層面上提供用於推論代理人的語法和語義,從設計之初就防止了「心靈控制」之類的問題。
在下一節中,我們將研究像 memo 這樣的 DSL 是如何通過其設計具體體現一種心智理論的。
DSL 如何體現一種心智理論?
一種程式語言最終是通過兩個形式結構來定義的:它的語法(syntax)和它的語義(semantics)。在本節中,我們將通過兩個案例研究來討論 memo 的語法與語義是如何具體體現心智理論中的原則的。
在此過程中,我們會展示如何通過對 memo 語法和語義的變化,生成我們可能希望形式化的不同版本的心智理論。心智理論的研究不僅旨在刻畫神經正常成年人所持有的理論,也包括兒童、老年個體以及非人類靈長類動物所持有的心智理論。此外,它還試圖刻畫這些心智對「非典型」心靈的理論,例如全知存在(如神明)和機器(Brink & Wellman, 2020);同時,它也試圖理解個體在觀察到世界中的某個代理人時,是如何決定將哪種理論歸因於該代理人的(Burger & Jara-Ettinger, 2020;Gray, Young, & Waytz, 2012)。像 memo 這樣的 DSL 的各種變體,可以作為這些理論的形式化表達工具。
一個關於語法的案例研究:錯誤信念
在 memo 中,`thinks` 語句用於表示代理人的信念。我們已經看到如何使用 `thinks` 來表達代理人的真實信念和不確定性。但這個結構也可以用來表達代理人的錯誤信念。例如,要建模「Zoe 認為 Ali 會選擇一家價格便宜的酒吧」,而實際上 Ali 選擇了一家離工作地點近的酒吧,我們可以這樣寫:
當然,這種表述的完整通用性在實際中通常是不必要的。大多數情況下,memo 的程式設計師只需表達一個代理人正確地知道另一個代理人的決定。假設 Zoe 提前就知道 Ali 的去向,也許是因為他在社交媒體上發布了動態。原則上,我們可以這樣建模:Zoe 認為 Ali 選擇了一家酒吧(服從任意分布),然後她正確地觀察到了他實際去了哪裡:
當然,這種表述的完整通用性在實際中通常是不必要的。大多數情況下,memo 的程式設計師只需表達一個代理人正確地知道另一個代理人的決定。假設 Zoe 提前就知道 Ali 的去向,也許是因為他在社交媒體上發布了動態。原則上,我們可以這樣建模:Zoe 認為 Ali 選擇了一家酒吧(服從任意分布),然後她正確地觀察到了他實際去了哪裡:
然而,這樣的寫法並不令人滿意:它顯得冗長,並且需要在 `thinks` 中選擇一個「虛擬」的先驗分布,而這個分布實際上從未被用於計算。
由於這類情況在日常建模中非常常見,memo 提供了一種高效、輕量級的簡寫方式來解決這些問題:`knows` 語句。
memo 中的 `knows` 語句與 Phillips 等人(2021)提出的「先知後信」(knowledge before belief)概念相一致:在許多方面,`knows` 比 `thinks` / `observes` 更為基礎。它的語法比 `thinks` 所具有的複合、遞迴結構更簡單(見圖2),在實踐中被使用的頻率也高於 `thinks` 或 `observes`,而且在 memo 編譯器中實現所需的程式碼行數也更少。
假設我們創建了一種新的「簡化版」memo,去掉了複雜的 `thinks` 和 `observes` 語句,只保留較簡單的 `knows` 語句。那麼我們會失去什麼?這種我們或可稱之為「memo-junior」的程式語言,仍然可以用於建模多種場景,例如前面「快速入門」部分中的範例1和範例2。然而,「memo-junior」將無法表達這樣的情境:代理人擁有與現實世界真實狀態不同的自身信念。通過這種方式,我們可以開始用 memo-junior 來形式化一個關於三歲兒童心智理論的候選假設。
語義的一個案例研究:全知
考慮以下對範例3的實現嘗試:
這個模型在 memo 中會引發一個錯誤——問題在於 Zoe 在她的心理模型中並不知道 Ali 的選擇 b。Zoe 根據 Ali 的 b 的某個函數來選擇酒吧是沒有意義的;事實上,她根本就不應該能夠計算這樣的函數!如果 Zoe 能夠以這種方式選擇酒吧,那就意味著她對 Ali 有某種「讀心術」的能力。因此,memo 禁止這樣的語句。
但在這裡,「禁止」到底在形式上意味著什麼?這一限制性規則可以在 memo 的形式化語義中找到(Chandra, Amin, & Zhang, 2025),它是一個推導 `chooses` 語句是否類型良好的前提條件(見圖3):如果一個代理人 a 使用某個表達式 e 來定義其做決策的機率分布,則 a 必須知道 e 的值。
在實踐中,這個前提條件會在 memo 編譯器中被檢查,每當遇到一個 `chooses` 語句時都會執行一次檢查。如果檢查失敗,系統會提示程式設計師像我們在範例3中那樣進行修正:明確寫出 Zoe 對 Ali 選擇酒吧的心理模型,根據需要使用 `knows` 或 `thinks` 語句。
通過這種方式,memo 的語義中的前置條件與後置條件捕捉了關於「能動性」(agency)的基本原則,例如「無法讀心」這一限制。memo 的設計者明確列舉了他們希望語義所體現的原則,並詳細解釋了 memo 的語義是如何將這些原則具體化的(Chandra, Chen 等人,2025,參見第3.1節)。但這些原則是由 memo 的設計者基於他們的直覺選定的——它們也可以被修改,以適應其他不同的直覺。
例如,如果我們放寬上面討論的那個前提條件,我們就可以開始形式化一種包含「全知代理人」可能性的心智理論——這正是兒童在描述父母時常常表現出的一種心理理論特徵(Barrett, Richert, & Driesenga, 2001)。
理論——或者說 DSL——是如何隨時間變化的?
Gopnik 和 Meltzoff(1997)將理論變遷的動態類比為科學理論的變遷(Kuhn, 1962;Lakatos, 1970)。但我們如何形式化地建模這一過程呢?將心智理論視為 DSL 的這種視角,提示我們可以把理論構建看作是程式語言設計。在本節中,我們將討論這一隱喻如何支持對理論變遷的三種視角。
理性視角
回到 Goodman 等人(2006)關於理論變遷是對貝葉斯網路空間的層次推論的觀點,我們現在可以說:理論變遷是由對可能程式語言的語法與語義的層次推論所驅動的。我們朝著「有用性」的方向發展我們的理論——即更強的表達效率和預測能力。畢竟,現實世界中的程式語言也往往是這樣發展的:不是來自「象牙塔」式的創新,而是來自於在解決實際問題中體現出的實用性(Meijer, 2007;Meyerovich & Rabkin, 2012;Stroustrup, 2020)。
我們如何形式化這一想法?Ellis 等人(2021)描述了一個系統,它通過識別有用的模式並將它們形式化為可重用的抽象來「生長」DSL。如果我們把心智理論看作是 DSL,我們就可以想像用這樣的系統,以同樣的方式來形式化心智理論的成長過程。
文化視角
大量證據表明,學習用於心智理論的自然語言有助於兒童獲得表達錯誤信念的能力(De Villiers & de Villiers, 2014;De Villiers & Pyers, 2002;Morgan & Kegl, 2006;Pyers, 2020;Pyers & Senghas, 2009;Schick, De Villiers, De Villiers, & Hoffmeister, 2007)。例如,Pyers 和 Senghas(2009)寫道:「句子‘Mary thought she saw a ghost’中有一個主句是真實的(‘Mary thought’),而一個從句是虛假的(‘she saw a ghost’)。這樣的句法可能為學習者提供了理解他人錯誤信念所需的邏輯工具。」
DSL 的視角為形式化這一假設提供了一種方式。正如我們之前所討論的那樣,我們可以將三歲兒童的心智理論建模為一種缺乏複合 `thinks` 表達式的「memo-junior」。當兒童在他人信念的情境中接觸到「thinks」這個詞時,這可能會向兒童提供 `thinks` 所獨有的遞迴句法結構,從而幫助他們最終發明 `thinks` 的語義,並因此具備表達錯誤信念的能力。
實用主義視角
理論變遷是一個混亂的過程。Gopnik 和 Meltzoff(1997)描述了這樣一個過渡時期:一個新的理論被謹慎地考慮,但舊的理論尚未被完全放棄。事實上,Amsterlaw 和 Wellman(2006)發現,一個孩子在某一天的不同任務中,可能會表現出使用兩到三種不同心智理論的跡象。
有趣的是,程式語言的設計也遵循同樣的模式:程式語言的發展本身也是一個混亂的過程(Steele Jr, 1998)。以 Python 程式語言為例,在2000年代初,Python 使用者越來越清楚地意識到,處理文本(「字串」)的抽象存在根本性缺陷——該語言未能區分字符序列與代表這些字符的位元組序列。這使得處理非拉丁字母的文本輸入變得困難,對於日益全球化的程式設計師群體來說,這是一個嚴重的問題。
因此,語言的設計者在下一個主要版本 Python 3 中徹底重新設計了這些抽象,並於2008年發布(van Rossum, 2008)。我們可以將這個新版本視為一種「典範轉移」。
但是——就像科學中的典範轉移一樣——這個過渡過程並非一蹴而就(Coghlan, 2012)。舊版本 Python 2 在接下來的十二年裡仍然被廣泛使用,並直到2020年才正式被淘汰。在這期間,許多程式設計師遲遲不願轉向 Python 3,原因多種多樣:有些人不想將現有的 Python 2 程式碼重寫成 Python 3,還有一些人依賴的函式庫僅存在於 Python 2 中。
因此,在多年的時間裡,選擇 Python 2 還是 Python 3 成為了一個實用問題:啟動新專案、或確實需要 Python 3 特性的程式設計師通常會選擇新版本,而維護大型現有程式碼庫的程式設計師則盡可能繼續使用 Python 2。甚至有不少程式設計師會小心翼翼地編寫兼容兩個版本的程式碼(Malloy & Power, 2019)。
我們可以預期,兒童採納新心智理論的過程也會呈現出類似的動態。儘管一種新的理論可能更具說服力,但保留一個舊的、經過檢驗的理論可能具有實用價值——也許是為了繼續利用那些僅與舊理論兼容的模型和計算方式。因此,一個孩子可能會表現出一些行為模式,對於觀察者來說,這些模式似乎與任何一種特定的心智理論都不完全一致。
討論與未來工作
在本文中,我們提出將心智理論視為一種領域特定的程式語言是有價值的:這種語言可以用來設定和推理涉及其他心靈的問題。以 memo 機率程式語言為例,我們討論了程式語言如何編碼一種心智理論、程式語言的不同變體如何編碼不同的心智理論,以及「程式語言」這一隱喻如何幫助我們理解心智理論的發展過程。
最後,我們反思一些 PL(程式語言)理論可能為我們提供工具來解答的更進一步問題:
組合直覺理論
要解決現實世界中的問題,我們的心智理論必須能夠與其他領域的直覺理論進行交互,例如我們對物理世界的直覺理論(Liu, Outa, & Akbiyik, 2024)。我們該如何組合這些直覺理論,以便執行跨越多個知識系統的計算?
如果我們把直覺理論看作 DSL(領域特定語言),那麼我們可以開始從「DSL 組合」的角度來思考這個問題。事實上,PL 社區長期以來一直在研究如何設計 DSL,使它們能夠模組化地彼此交互(參見 Felleisen 等人,2018)。
具有精心設計的「應用程式介面」(API)的 DSL 允許程式設計師編寫多語言程式,結合多個 DSL 的優勢。例如,為了製作一個網站,程式設計師可能會使用 HTML 來定義頁面結構,CSS 來定義排版樣式,JavaScript 來定義動畫效果。HTML、CSS 和 JavaScript 是三種非常不同的語言,分別專門用於網頁設計的不同領域(結構、樣式和腳本)。然而,由於這三種 DSL 都配備了精心設計的 API,程式設計師可以輕鬆地在它們之間編寫可交互的程式。
我們可以想像,用於心理推論的 DSL 和用於物理推論的 DSL 同樣配備合適的 API,從而可以組合起來,用於推論日常生活中的社會-物理情境(參見範例說明)。
比較直覺理論
直觀上,成年的人類擁有比三歲兒童或非人類靈長類動物更「豐富」的心智理論。但我們如何形式化關於一個心智理論有多「豐富」或多「有表達力」的說法?我們是否可以量化並測量理論的豐富性或表達力?
如果我們將心智理論視為 DSL,那麼我們就可以考慮應用程式語言領域中關於「表達力」(expressivity)的形式定義,比如 Felleisen(1991)提出的定義,來形式化該 DSL 所代表的心智理論的表達能力。
通過使用這個定義作為衡量某種心智理論表達力的標準,我們可以檢驗一個假設:即心智理論在進化和發展的過程中趨向於更高的表達力。
心智定理
人們不僅能夠推理具體的情境,還能夠推理關於他人的普遍命題。例如,我們可能會同意:在任何情況下,如果一個代理人忘記了變量 x 的值,那麼他們之前一定曾對 x 有過信念。
這些普遍直覺是從哪裡來的呢?如果我們把心智理論看作是 DSL,那麼我們就可以應用關於程式語言的通用定理陳述與證明技術,來形式化並研究這些「心智定理」。
例如,Chandra、Amin 和 Zhang(2025)展示了如何形式化這樣一個性質:在任意一個 memo 模型中,如果一個代理人知道變量 x 的值,那麼他對 x 必然是確定無疑的(即,在他的視角下,H(x) = 0)。但反過來並不成立,因為一個代理人可能對一個錯誤信念也堅信不疑。
因此,我們可以從第一原理出發推導出一條「心智定理」:知識意味著確定性,但確定性並不意味著知識。
memo:真AGI的遞迴理性機率程式語言:memo的實現,具身博弈
框架問題
我們對他人心靈的完整理論是非常龐大的,它不僅包括信念和慾望,還包括情緒、記憶、注意力、感知等多個方面。當面對一個具體情境時,我們如何解決「框架問題」(McCarthy & Hayes, 1981)——也就是如何高效地只調用相關部分的理論?
在這方面,PL 中的「程式切片」(program slicing,Weiser, 1984)概念可能是有價值的:程式(或程式語言)的一個「切片」是指去除無關部分後保留的相關子集。
我們可以設想,一個豐富而通用的心智理論可以被「切片」為一個定制的情境專用心智理論,去掉不必要的語法和語義,以提升效率。
原文連結:https://osf.io/qhc6y/download