兩種悲觀的方式
幾乎每個實用的離線演算法,都在兩種策略中選一種。策略約束:讓學出的策略貼近行為策略(behavior policy),使它只會提出資料支撐得起的動作——這一家族就是策略約束法(policy-constraint methods)。價值悲觀:策略隨它去,但把價值函數訓練成主動不信任分佈外動作,使那些動作永遠看起來不吸引人。有些現代方法則悄悄地兩者並用。
BCQ——只考慮合理的動作
批次約束 Q 學習 (BCQ) 是把分佈偏移問題真正搬上檯面的方法。它的訣竅是:訓練一個資料的生成模型,只提出該模型認為「可能出現」的動作,然後在那個受限集合上取 `max`,而不是在所有動作上取。如此一來,危險的未見動作根本連候選都不是,因此外插誤差從源頭就被掐斷了。
變分自編碼器:編碼器將輸入映射到潛空間,解碼器再重建,此處用於生成符合分布的動作。
CQL——把幻影價值壓下去
保守 Q 學習 (CQL) 攻擊的是價值這一側。在一般的貝爾曼損失之外,它加上一個正則項,壓低目前策略會挑選的動作(很可能是分佈外)的 Q 值,並抬高資料中確實出現過的動作的 Q 值。結果是一個可被證明為「真實價值下界」的 Q 函數——高估根本無從形成。
CQL 所依據的貝爾曼更新;對下一動作取最大值之處,正是未見動作高估悄然潛入之處——所以 CQL 加了一項把這些值壓低。
# Conservative Q-Learning (CQL): Bellman loss + a pessimism penalty bellman_loss = (Q(s, a) - (r + gamma * V(s_next))) ** 2 # Push DOWN Q on actions the policy samples (likely OOD); # pull UP Q on the action actually logged in the data. pessimism = logsumexp_over_a(Q(s, a)) - Q(s, a_in_data) loss = bellman_loss + alpha * pessimism
IQL 與 AWR——根本不去查未見的動作
隱式 Q 學習 (IQL) 採取最乾淨的立場:絕不對任何資料集以外的動作評估 `Q`。它用狀態價值的「分位期望(expectile)回歸」來逼近資料中最佳動作的價值,使貝爾曼目標永遠只用真正發生過的動作。接著它用優勢加權回歸 (AWR)萃取策略——這是一種加權的行為複製:當某個資料動作的估計優勢愈高,就愈用力地去複製它。簡單、穩定,而且經常勝出。
互動式網格世界,逐格學習 Q 值;只評估資料中出現過的動作。
共通的主軸
把這四個方法再看一遍,你會發現同一種直覺穿著不同的外衣:對未知的悲觀。BCQ 限制動作集合、CQL 給價值設下界、IQL 拒絕看資料外、AWR 倚賴模仿。不論你選哪一個,都是用一點點保守換取安全——而這筆交易,正是讓離線強化學習值得信賴的原因。