newsence

功能性決策理論(FDT)的具體操作化

Lesswrong·23 天前

這篇文章嘗試透過定義邏輯 do 算子並探討如何透過因果圖將邏輯因果關係正式化,來更好地實現功能性決策理論的操作化。

這篇文章旨在嘗試更好地操作化 FDT(功能決策論,Functional Decision Theory)。它回答了以下問題:

  • 給定一個邏輯因果圖,我們如何定義「邏輯 do-算子」(logical do-operator)?
  • 什麼是邏輯因果關係,以及它可能如何被形式化?
  • FDT 如何與人體學更新(anthropic updating)交互?
  • 為什麼我們需要邏輯因果關係?為什麼選擇 FDT 而不是 EDT?

定義邏輯 do-算子

考慮 帕菲特的搭便車者(Parfit's hitchhiker)

帕菲特搭便車者的邏輯因果圖,其中藍色節點是邏輯事實。一個 FDT 代理人應該如下推理:

  • 我正在決定「我的演算法是否付錢?」這個節點的值。
  • 如果我將該節點設置為「是」,那麼歐米茄(Omega)會救我,我將獲得 +1000 效用。同時我會付錢並失去 1 效用。總計為 +999。
  • 如果我將該節點設置為「否」,那麼歐米茄將不會救我。我將獲得 0 效用。
  • 因此我選擇付錢。

粗體字句調用了「邏輯反事實」。因為我畫了一個「邏輯因果圖」,我將類比 CDT 的 do-算子,把生成這些反事實的操作稱為「邏輯 do-算子」。

在普通的 CDT 中,觀察到位於你行動下游的變量是不可能的,因為這樣的變量處於你的未來。因此,以下兩個 CDT do-算子的定義是等價的:

  • 切斷行動節點的輸入連接,然後以其值為 X 作為條件。
  • 切斷行動節點的輸入連接,並忘記所有下游節點的值,然後以行動節點的值為 X 作為條件。

對於物理因果關係,這兩者是等價的,因為下游節點在未來,所以我們不可能觀察到它們,也就沒有什麼需要忘記的。

然而,在我們的邏輯因果圖中,即使「我在城裡」這個節點位於我們行動節點(「我的演算法是否付錢」)的下游,我們仍可以觀察到它。因此對於 FDT 來說,這兩個定義並不等價,我們需要從中選擇一個。

如果我們想在帕菲特的搭便車者問題中付錢,我們必須選擇定義 2。這允許我們「忘記」我們已經在城裡的觀察結果。

關於邏輯 do-算子,還有一個有趣的選擇可以考慮——我們可以讓它忘記未來的節點,但切斷輸入連接。這將使其成為一種帶有「邏輯因果去更新」(logicausal un-updating)的 EDT 變體,而不是 CDT 的邏輯因果版本。

我們可以在下方的 2x2 表格中看到所有選項:

不忘記下游節點忘記下游節點
切斷輸入連接選項 1:先切斷輸入再設條件選項 2:切斷輸入並忘記下游,再設條件
不切斷輸入連接選項 3:直接設條件選項 4:先忘記下游再設條件

選項 3 就是 EDT。選項 1 和 3 缺少「忘記下游節點」的步驟,因此在沒有承諾式無更新(commitment-style updatelessness)的情況下,它們不會在帕菲特的搭便車者問題中付錢。

如果我們希望 FDT 在帕菲特的搭便車者問題中「自動」付錢,我們必須在選項 2 和 4 之間做出選擇。我個人認為目前尚不清楚該偏好哪一個。主要的爭議點在於:

  • 選項 4 在邏輯 XOR 勒索中會付錢,而選項 2 則不會。
  • 選項 4 似乎更有可能產生類似 ECL 的行為。

這讓我們處於什麼位置?到目前為止,我們推導出了邏輯 do-算子的一個屬性——為了在沒有承諾的情況下於帕菲特的搭便車者問題中付錢,它必須忘記下游節點的值。但我們尚未回答以下問題:

  • 我們最初是如何構建邏輯因果(「logicausal」)圖的?它到底意味著什麼?
  • 我們如何在不忘記一個邏輯事實與其他事實的因果關係的情況下,忘記該事實的值?

下一節將嘗試回答這些問題。

邏輯因果關係

有一種直覺認為某些邏輯事實會導致其他事實,且與「相關性」或「關聯性」不同,這種關係既具方向性,在直覺上又是「因果性」的。我認為這種直覺指向了某種真實的東西,並且可以使用條件獨立性來定義(就像定義普通因果圖的方式一樣)。^([1])

首先,讓我列舉幾個例子來展開討論:

  • 在紐康姆問題中,邏輯事實「我的演算法選一個盒子」導致了事實「歐米茄在盒子 A 中放了一百萬美元」,而不是反過來。
  • 邏輯事實「<mjx-container jax="CHTML"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mn class="mjx-c33"></mjx-mn><mjx-mi class="mjx-c1D44B TEX-I"></mjx-mi></mjx-msup><mjx-mo class="mjx-c2212" space="3"></mjx-mo><mjx-msup space="3"><mjx-mn class="mjx-c35"></mjx-mn><mjx-mi class="mjx-c1D44C TEX-I"></mjx-mi></mjx-msup><mjx-mo class="mjx-c3D" space="3"></mjx-mo><mjx-mn class="mjx-c32" space="3"></mjx-mn></mjx-math></mjx-container>」導致了事實「恰好有兩種情況,3 的正整數冪與 5 的正整數冪相差 2」,而不是反過來。

因果圖是編碼一組變量聯合分佈的一種特殊方式。即使我們不關心「因果干預」,因果圖也是有用的,因為它們告訴我們變量何時會相互條件獨立。

我的猜測是,這些條件依賴規則與因果關係作為一個概念為何存在有著深刻的聯繫,因此足以作為邏輯因果關係的基礎。^([2])

這自然引出了幾種關於如何定義邏輯因果圖的提案,我將逐一介紹。

源自世界模型的因果關係

受限代理人需要在邏輯不確定的情況下選擇行動。因此,要求我們的代理人包含一個能夠產生邏輯事實聯合分佈的邏輯世界模型是合理的。你可能希望我們可以到此為止:一旦我們有了某些變量的聯合分佈,我們就可以檢查所有的條件依賴關係,並大致確定因果圖。

然而,有一個問題:要從聯合分佈中推斷因果關係,我們需要尚未知道這些變量的值。因此,為了正確定義邏輯因果關係,我們還需要一種方法來「忘記」邏輯事實的值,或者回溯到我們知道它們之前的時間點。這是一個合理的世界模型可能尚未支持的額外結構。

我沒有關於如何執行此操作的具體提案,但在實踐中,一旦你指定了代理人的認識部分,可能會有某些簡陋的方法。你可能會字面上回溯到過去的狀態,或者有某種擦除邏輯論證的方法。

邏輯歸納器(Logical inductors)

前一個想法的一個明顯擴展是使用邏輯歸納器作為邏輯世界模型,而不是不加指定。在這種情況下,我們可以使用邏輯歸納器的時間步長來表示「回溯到值為未知的早期狀態」。

啟發式論證的算法互信息

這是一個與前兩個截然不同的提案:

  • 兩個字符串 X 和 Y 的算法互信息定義為 <mjx-container jax="CHTML"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-c1D43E TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44B TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c2B" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44C TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c2212" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44B TEX-I"></mjx-mi><mjx-mo class="mjx-c2C"></mjx-mo><mjx-mi class="mjx-c1D44C TEX-I" space="2"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo></mjx-math></mjx-container>,其中 <mjx-container jax="CHTML"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-c1D43E TEX-I"></mjx-mi></mjx-math></mjx-container> 是一個字符串或一組字符串的柯氏複雜度(Kolmogorov complexity)。
  • 因此,如果 <mjx-container jax="CHTML"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-c1D43E TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44B TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c2B" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44C TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c3E" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D44B TEX-I"></mjx-mi><mjx-mo class="mjx-c2C"></mjx-mo><mjx-mi class="mjx-c1D44C TEX-I" space="2"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo></mjx-math></mjx-container>,則兩個字符串在算法上是「非獨立的」。
  • 同樣地,我們會說如果 <mjx-container jax="CHTML"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-c1D43E TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D45D TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45F TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D453 TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D434 TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c2B" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D45D TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45F TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D453 TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D435 TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c3E" space="3"></mjx-mo><mjx-mi class="mjx-c1D43E TEX-I" space="3"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D45D TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45F TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D45C TEX-I"></mjx-mi><mjx-mi class="mjx-c1D453 TEX-I"></mjx-mi><mjx-mo class="mjx-c28"></mjx-mo><mjx-mi class="mjx-c1D434 TEX-I"></mjx-mi><mjx-mo class="mjx-cA0"></mjx-mo><mjx-mo class="mjx-c26"></mjx-mo><mjx-mo class="mjx-cA0"></mjx-mo><mjx-mi class="mjx-c1D435 TEX-I"></mjx-mi><mjx-mo class="mjx-c29"></mjx-mo><mjx-mo class="mjx-c29"></mjx-mo></mjx-math></mjx-container>,則兩個邏輯命題 A 和 B 是非獨立的。
  • 非正式地說:如果兩個事實的最短證明共享結構,則它們是非獨立的。^([3])
  • 然而,在實踐中,證明對於達到對某個陳述的高度信心並非必要,因此我們應該將其推廣為使用啟發式論證。

這個提案的一大優點是,即使我們已經知道所有涉及的事實,它也能讓我們輕鬆定義邏輯因果圖,而不需要構建一個帶有人為無知的認識狀態。不過,我需要檢查它給出的圖表是否符合我對邏輯因果關係的直覺概念。

FDT 如何與人體學更新交互?

本節內容可能僅對已熟悉 EDT 雙重計數(EDT double-counting) 的讀者有意義。

EDT(證據決策論)的一個不幸屬性是它與 SIA 人體學更新不相容。帶有 SIA 的 EDT 會「雙重計數」更新,導致在睡美人問題中出現 4:1 的投注賠率。EDT 雙重計數可以通過放棄人體學更新來解決(使用一種稱為「L-zombie anthropics」的最小參考類 SSA 變體)。然而,這種修正會導致其他奇怪的後果,且在我看來在哲學上是可疑的。

雙重計數的原因是 EDT 允許一個決策「佔用」許多代理人行動的功勞。FDT 也允許這樣做,因此我們應該預期會出現同樣的問題。一些基礎分析表明,我們在默認情況下確實面臨同樣的問題。

FDT 方法有可能對這個問題有某種優雅的解決方案,但我目前還沒看到。所以目前我將假設我們使用與 EDT 相同的補丁:

  • 永遠不要根據觀察結果更新你的邏輯或經驗信度(這有效地將你的經驗觀點凍結在你的先驗上)。
  • 根據邏輯論證在一定程度上更新你的邏輯信度。也許在這裡也要在某種程度上保持邏輯無更新。^([4])

這個補丁的一個不幸屬性是它迫使我們在「內部」評估邏輯論證與使用外部計算器之間做出區分。這個邊界是武斷且醜陋的。我不知道是否存在更好的方法。

整合:操作化 FDT 的一次嘗試

這是我對 FDT 形式化最好的猜測:

  • 首先,構建一個邏輯因果圖:
    • 首先寫下連接所有感興趣邏輯事實的「因果」結構的直覺猜測。
    • 然後查看此邏輯因果圖中任何一組邏輯事實之間的條件依賴關係,並確保它們遵循預期的條件獨立性規則。如果不匹配,則修改圖表直到匹配為止。
  • 「查看條件依賴關係」的定義:
    • 如果你對所有涉及陳述的實際概率都遠離 0 和 1,那麼你的實際聯合分佈應該滿足條件獨立性規則。
    • 如果涉及的某些概率接近 0 或 1(「你知道得太多了」),那麼要麼回溯你的邏輯世界模型,要麼使用「啟發式論證的算法互信息」作為你對相互獨立性的定義。
  • 邏輯 do-算子定義如下:忘記對下游節點的所有觀察,切斷與上游節點的連接,^([5]) 然後以行動節點為條件。
  • 永遠不要根據觀察結果進行更新(以避免雙重計數)。賭注取代了更新,使得這在很大程度上「歸於常態」。

一個適當的形式化應該消除步驟 1a,並在不訴諸直覺的情況下完全指定構造過程。然而,我這裡寫的內容更接近我實際分析決策問題的方式。

附錄:為什麼要糾結於邏輯因果關係?

為什麼我們要費心沿著這些思路構建決策論?有什麼理由使用邏輯因果關係而不是高度無更新的 EDT 嗎?

我的觀點是,決策論應該形式化我們(經反思後)相信某個特定決策是正確的真實理由。我們應該要求我們的決策論「為了正確的理由」給出正確的答案。

我個人非常不確定我的直覺是更偏向證據性還是邏輯因果性。在這一節中,我將討論一些我認為對於在決策論之間做出選擇特別相關的決策問題。

邏輯 XOR 勒索

假設你在某種意義上「生來就處於」邏輯 XOR 勒索中。在你接觸到無更新概念之前的生命早期,你發現了一個證明,內容是「你要麼很快就會死,XOR 你會燒掉 10 美元」。然而,你發現燒掉 10 美元在邏輯因果上並非死亡的上游。你會燒掉那 10 美元嗎?

我認為這有幾種解決方案:

  • 拒絕假設: 目前還不清楚這種情況是否會發生。在通常版本的 XOR 勒索中,代理人在經驗上是會更新的,因此「你要麼很快就會死,XOR 你會燒掉 10 美元」這種認識狀態可以通過接收來自可靠預測者的消息來達到。然而,EDT 和 FDT 都要求我們不要根據觀察進行更新(以避免雙重計數)。在沒有經驗更新的情況下,很難想像你如何在沒有從「燒掉 10 美元」到「很快死亡」的邏輯因果連接的情況下,邏輯地推導出「你要麼很快就會死,XOR 你會燒掉 10 美元」這一主張。^([6])
  • 出於證據理由付錢: 如果你有強烈的證據性直覺,你可能直接付錢。
  • 出於邏輯無更新而不付錢: 你可能覺得不付錢的「真實理由」是你本想從某個先驗邏輯認識狀態承諾不付錢(儘管在你實際處於該認識狀態時你尚未採用無更新)。
    • 「小認識狀態」變體:你可能認為你的「認識狀態」非常小且不包含你的記憶。因此,你可能認為自己在承諾無更新時實際上持有的是無知認識狀態。然而,這種觀點可能特別容易導致「氫氣最大化問題」。
  • 出於邏輯因果理由而不付錢: 你可能覺得不付錢的「真實理由」是燒掉 10 美元並不會「導致」你不死。

帕菲特的搭便車者

帕菲特的搭便車者已在本文第一節中分析過。你可能會:

  • 接受該分析並認為由於邏輯反事實,在過渡期(ex interim)付錢是「正確的」。
  • 拒絕該分析並認為你應該僅由於承諾或承諾式無更新而付錢。

邏輯反事實搶劫(Logical counterfactual mugging)

我在本文中描述的 FDT 版本除非單獨加入承諾式邏輯無更新,否則不會付錢。

這並不能將其與 EDT 或 CDT 區分開來。然而,相對於一個它能完全取代承諾式邏輯無更新的想像世界,這可能會降低我這套 FDT 構造的吸引力。

吸煙病變(Smoking lesion)

我認為吸煙病變極其令人困惑,我不打算在這裡嘗試理清它。對於以下任何問題,我都沒有明確的立場:

  • 吸煙病變中描述的情況對於具有合理認識論的代理人是否可能發生。
  • EDT 是否會吸煙。
  • EDT 是否有足夠明確的規範來判斷它是否吸煙。我們需要考慮諸如「我認同我演算法的哪一部分」以及「我是否知道我自己的演算法」等問題。對這些問題的不同回答可能會導致不同的結論。

對於任何考慮將 EDT 作為選項的人來說,吸煙病變顯然是一個重要的案例。

物理因果 CDT 的各種不吸引人的案例

在我看來,FDT 和 EDT 都與經驗更新不相容是非常不幸的。這是許多麻煩的根源。那麼為什麼不採用通常與 SIA 更新相容的 CDT 呢?

以下是讓我對物理因果 CDT 持懷疑態度的案例:

  • 在雙胞胎囚徒困境中背叛。^([7])
  • 在紐康姆問題中選兩個盒子。^([8])
  • 未能進行 ECL(跨宇宙利他主義)。^([9])
  • 「三局兩勝問題」:
    • 假設你是決定性的。某個有能力模擬你的人(以一種在人體學上捕捉你的方式)採取以下策略:
    • 他們在相同的環境下模擬你 3 次。每次你都面臨選擇:按下綠色按鈕或什麼都不做。
    • 三局兩勝規則:如果至少有 2 個你的副本按下綠色按鈕,你將獲得 $1000。
    • 每個按下按鈕的副本會讓你損失 $1。
    • CDT 無法想像自己是那個「翻轉」三局兩勝條件的副本,因此它不會按下綠色按鈕。
  • 三局兩勝的一個微小變體(「不可能的懲罰」):
    • 與之前的模擬設置相同(你是決定性的,被模擬 3 次,可以選擇按按鈕)。
    • 你的模擬者採取以下策略:
    • 如果至少有兩個副本按鈕,你得到 $1000。
    • 如果恰好有一個副本按鈕,你損失 $1(「不可能的懲罰」)。
    • CDT 代理人會決定不按按鈕,因為其行動能構成反事實的唯一方式是 {0 -> 1} 的情況。它被阻止選擇有利可圖的均衡,因為它害怕一個邏輯上不可能的懲罰。^([10])
  • 一個針對 CDT 的通用金錢泵

顯然這些論點是相關的:如果你不被其中一個困擾,你就不太可能被其他困擾。我相信一定有物理 CDT 的支持者願意接受或反駁所有這些難題。

致謝

感謝 Thomas Kwa、Jeremy Gillen 和 Lukas Finnveden 最近的討論,感謝 Nate Soares 很久以前的相關討論,以及 Chi Nguyen 的反饋。


  • ^([1]) 你可能會反對說,因果圖並非由條件獨立性觀察唯一確定。從 CDT 式的哲學角度來看,這些統計上等價的因果圖並不相同,因為它們對 CDT 反事實做出了不同的主張。然而,我認為條件獨立性規則是我關心的因果關係的唯一實際內容,並且足以使邏輯因果關係成為一個可用的概念。Paul 在這篇文章中表達了類似的觀點。
  • ^([2]) 這一主張最大的障礙是條件依賴關係並不能完全指定因果圖——可能存在多個對應於相同聯合分佈但在因果干預下表現不同的圖。然而,實際的因果圖非常豐富。因此,如果 X 實際上不導致 Y,我們大概可以找到一個證明這一點的依賴關係(參見這篇文章)。
  • ^([3]) 更寬鬆地說:如果擁有 A 的證明有助於你寫出 B 的證明,那麼這兩個事實就是非獨立的。
  • ^([4]) 因為我們的邏輯 do-算子能夠「撤銷」位於我們行動下游的邏輯事實,所以 FDT 不需要邏輯無更新就能在帕菲特的搭便車者問題中付錢。我認為它仍然需要它來在邏輯反事實搶劫中付錢。
  • ^([5]) 或者如果不切斷,如果你在這一節中更傾向於「選項 4」。
  • ^([6]) 另一方面,即使某個假設被證明在邏輯上是不可能的,我們也可能拒絕拒絕該假設。根據這種觀點,我們關於什麼是「正確」的判斷不應依賴於某個可想像的情景最終被證明是不可能的這一事實。
  • ^([7]) 注意:你可以用「CDT 之子」式的承諾來修補未來的案例。在我看來,這不是你應該合作的「真正」原因,而且如果你之前未能做出某種「承諾」,那麼背叛也是不合理的。
  • ^([8]) (同前一條注意)
  • ^([9]) 這是一個比雙胞胎 PD 更弱的反對意見。顯然,這僅在你發現 ECL 在直覺上具有說服力(而不是 EDT 的中性或非直覺後果)時才適用。我個人在特定背景下覺得 ECL 很有說服力,但仍能想像在反思後拒絕它。與雙胞胎 PD 相比,ECL 對人類來說更具實際意義,且無法使用承諾來解決(因為你「生來如此」)。
  • ^([10]) 公平地說,FDT 也考慮邏輯上不可能的反事實。然而,它在特定案例中的處理方式在我看來更合理,而這個案例在我主觀看來完全不合理。
https://lesswrong.com/posts/RyDkpWGLQsCnABE78/operationalizing-fdt