首次引入!用因果推理做部分可觀測強化學習
這篇《Fast Counterfactual Inference for History-Based Reinforcement Learning》提出一種快速因果推理演算法,使得因果推理的計算複雜度大幅降低-降低到可以和online 強化學習結合的程度。
本文理論貢獻主要有兩點:
1、提出了時間平均因果效應的概念;
#2、將著名的後門準則從單變量介入效應估計推廣到多變量介入效應估計,稱為步進後門準則。
背景
需要準備關於部分可觀測強化學習和因果推理的基礎知識。這裡不做太多介紹,給幾個傳送門:
部分可觀測強化學習:
##POMDP解說https:// www.zhihu.com/zvideo/1326278888684187648
##因果推理:深度神經網路中的因果推理https://zhuanlan.zhihu .com/p/425331915
動機
從歷史資訊中擷取/編碼特徵是解決部分可觀測強化學習的基本手段。主流方法是使用sequence-to-sequence(seq2seq)模型來編碼歷史,例如領域內流行使用的LSTM/GRU/NTM/Transformer的強化學習方法都屬於這一類。這一類方法的共同之處在於,根據歷史資訊和學習訊號(環境獎勵)的相關性來編碼歷史,即一個歷史資訊的相關性越大所分配的權重也就越高。
然而,這些方法不能消除由取樣導致的混雜相關性。舉一個撿鑰匙開門的例子,如下圖:
去除這種混雜的相關性。
這種混雜相關性可以透過因果推理中的do-calculus來去除[1]:分離可能造成混淆的後門變數鑰匙和球,從而切斷後門變數(鑰匙/球)和電視機之間的統計相關性,然後將p(Open| ,鑰匙/球)的條件機率關於後門變數(鑰匙/球)進行積分(Figure 1右圖),得到真實的效果p(Open|do( ))=0.5。由於有因果效應的歷史狀態相對稀疏,當我們去除混雜的相關性以後,可以大幅壓縮歷史狀態的規模。
因此,我們希望用因果推理來去除歷史樣本中混雜的相關性,然後再用seq2seq來編碼歷史,從而獲得更緊湊的歷史表徵。(本文動機)
[1]註:這裡考慮的是使用後門調整的do-calculus,附一個科普連結https://blog.csdn .net/qq_31063727/article/details/118672598# 在歷史序列中執行因果推理,不同於一般的因果推理問題。歷史序列中的變數既有時間維也有空間維度,即觀測-時間組合 以往的因果推理方法是基於單變量介入檢測,一次只能do一個變數。在具有龐大規模的歷史狀態上進行因果推理,將造成極高的時間複雜度,難以和online RL演算法結合。 [2]註:單變量介入因果效應的正式定義如下 如上圖所示,給定歷史 ,要估計對轉移變數 ##的因果效應,做以下兩步驟:1)幹預歷史狀態do ,2)以先前的歷史狀態 #為後門變量,為反應變量,計算如下積分即為所要求取的因果效應 既然單變量幹預檢測難以和online RL結合,那麼開發多變量幹預檢測方法就是必須的了。 本文的核心觀察(假設)是,因果狀態在空間維上稀疏。這個觀察是自然而普遍的,例如拿鑰匙開門,過程中會觀測到很多狀態,但鑰匙這個觀測值才決定了是否能開門,這個觀測值在所有觀測取值中佔比稀疏。利用這個稀疏性我們可以透過多變量幹預一次就篩選出大量沒有因果效應的歷史狀態。 但是時間維上因果效應並不稀疏,同樣是拿鑰匙開門,鑰匙可以被agent在絕大部分時刻都觀測到。時間維上因果效應的稠密性會妨礙我們進行多變量幹預──無法一次去除大量沒有因果效應的歷史狀態。 基於上述兩點觀察,我們的核心思路是,先在空間維上做推理,再在時間維上做推理。 利用空間維上的稀疏性大幅減少介入的次數。 為了單獨估計空間因果效應,我們提出先求取時間平均因果效應,就是把多個歷史狀態的因果效用在時間上進行平均(具體定義請見原文)。 基於這個idea,我們將問題聚焦:要解決的核心問題是如何計算幹預多個不同時間步上取值相同的變數(記作 ,可以看到,時間步靠後的 方法我們改進後門準則,提出一個適用於估計多變量聯合幹預效應估計的準則。對於任兩個被幹預的變數 (i 和 的
#上式使用了更一般的變數表示符X 。 具體到部分可觀測強化學習問題上,用觀測o取代上式的x後,有以下因果效應計算公式: Theorem 2. Given #至此,論文給出了計算空間因果效應(即時間平均因果效應)的公式,這一段方法將乾預的次數由O( 演算法結構圖如下 #演算法包含兩個loops,一個是T-HCI loop,一個是策略學習loop,兩者交換進行:在策略學習loop裡,agent被採樣學習一定回合數量,並將樣本存在replay pool中;在T-HCI loop中,利用儲存的樣本進行上述的因果推理過程。 Limitations:空間維上的因果推理對歷史規模的壓縮幅度已經夠大了。儘管時間維上做因果推理可以進一步壓縮歷史規模,但考慮到計算複雜度需要平衡,本文在時間維上保留了相關性推理(在有空間因果效應的歷史狀態上端到端使用LSTM),沒有使用因果推理。 實驗上驗證了三個點,回應了前面的claims:1) Can T-HCI improve the sample efficiency of RL methods? 2) Is the computational overhead of T-HCI acceptable in practice? 3) Can T-HCI mine observations with causal effects? 詳見論文的實驗章節,這裡就不佔用篇幅了。當然,有興趣的小夥伴還可私訊我/留言哦。 未來可拓展的方向 #說兩點,以拋磚引玉: 1、HCI不限於強化學習的類型。雖然本文研究的是online RL,但HCI也能自然地拓展到offline RL、model-based RL等等,甚至於可以考慮將HCI應用於模仿學習; 2.HCI可視為一種特殊的hard attention方法-有因果效性的序列點獲注意力權值1,反之獲注意力權值0。從這個角度來看,有些序列預測問題也可能嘗試使用HCI來處理。 困難
,其中o是觀測,t是時間戳(相較之下MDP就很友善了,馬可夫狀態只有空間維)。兩個維度的交疊,使得歷史觀測的規模相當龐大-以
表示每個時間戳上的觀測取值個數,用T來表示時間總長度,則歷史狀態的值有
種(其中正體O( )為複雜度符號)。 [2]
)的聯合因果效應。這是因為後門準則不適用於多個歷史變數的聯合幹預:如下圖所示,考慮聯合幹預雙變量
和
的一部分後門變數裡包含了
,兩者不存在公共的後門變數。
和
步進後門調整準則(step-backdoor adjustment formula)
該準則分離了,介於相鄰兩個時間步的變數之間的其他變量,稱為步進後門變數。在滿足這個準則的因果圖中,我們可以估計任兩個被幹預變數的聯合因果效應。包括兩個步驟:step 1、以時間步上小於i的變數作為後門變量,估計do
#因果效應;step 2、以取定的
後門變數與取定的
為條件,以介於
與之間的變數為新的關於
的後門變數(即關於
條件因果效應。則聯合因果效應為這兩部分的乘積積分。步進後門準則將普通的後門準則使用了兩步,如下圖所示
and
, the causal effect of Do(o) can be estimated by
)降低為O(
)。接下來,就是利用(本章開頭提及)空間因果效應的稀疏性,進一步對介入次數完成指數級縮減。將對一個觀測的干預替換為對一個觀測子空間的干預——這是一個利用稀疏性加速計算的通常思路(請見原文)。在本文中,發展了一個稱為Tree-based history counterfactual inference (T-HCI)的快速反事實推理演算法,這裡不作贅述(詳見原文)。其實基於步進後門準則後續還可以開發很多歷史因果推理演算法,T-HCI只是其中的一個。最後的結果是Proposition 3 (Coarse-to-fine CI). If
, the number of interventions for coarse-to-fine CI is
#)。
驗證
以上是首次引入!用因果推理做部分可觀測強化學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

C 中使用字符串流的主要步驟和注意事項如下:1.創建輸出字符串流並轉換數據,如將整數轉換為字符串。 2.應用於復雜數據結構的序列化,如將vector轉換為字符串。 3.注意性能問題,避免在處理大量數據時頻繁使用字符串流,可考慮使用std::string的append方法。 4.注意內存管理,避免頻繁創建和銷毀字符串流對象,可以重用或使用std::stringstream。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。
