JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

核心難題:分佈偏移

為什麼把一般的離策略 Q 學習直接套在固定資料集上會悄悄爆掉——而解藥只有一個詞:悲觀。

回顧:危險的 max

大多數以價值為基礎的強化學習,會把 Q 值更新朝向 `r + γ · maxₐ′ Q(s′, a′)`——也就是貝爾曼最優(Bellman optimality)目標。在線上,這之所以有效,是因為當 `max` 選到一個過度樂觀的動作時,代理人最終會真的去那裡、看到現實、然後修正估計。這個修正迴路靠的是能持續收集新資料。一旦離線,這條迴路就被切斷了。

Q(s,a) \leftarrow Q(s,a) + \alpha\left[\, r + \gamma \max_{a'} Q(s',a') - Q(s,a)\,\right]

Q 学习更新:自举目标依赖 maxₐ′ Q(s′,a′),正是这个「max」在离线时变得危险。

外插誤差

函數近似器對於它從未見過的動作,並不會回傳 `0` 或「未知」——它會自信地外插出一個數字,常常是個錯得離譜的數字。當 `max` 在所有動作上取最大時,它會欣然抓住那個剛好誤差最大(而非真實價值最大)的分佈外動作。這就是外插誤差(extrapolation error),而在離線設定下,它永遠不會被沖刷掉。

就像过拟合曲线在数据之外乱飞,Q 网络也会对从未见过的动作给出离谱的外推值。

欠拟合、良好拟合与过拟合曲线;过拟合曲线在训练点之外剧烈摆动。

# Naive off-policy Q-learning, run OFFLINE on a fixed dataset D
for (s, a, r, s_next) in D:
    # The target maxes over ALL actions a' -- including ones never in D
    target = r + gamma * max_over_a_prime(Q(s_next, a_prime))
    Q(s, a) += alpha * (target - Q(s, a))

# The max keeps selecting the action with the LARGEST estimation error,
# not the action with the largest true value. There is no new data in D
# that can ever push those phantom over-estimates back down.
四行就能看出失敗:max 吃的是資料集無法修正的誤差。

把分佈偏移講精確

整條因果鏈是這樣:你學出的策略被訓練成偏好高 Q 值的動作;而被高估的動作,恰恰就是那些沒見過的動作;於是你的策略會漂向行為策略(behavior policy)很少或從未造訪過的狀態與動作。但那裡的 Q 值從來沒有資料支撐——所以它們是錯的——所以策略更用力地去追它們。這種「資料分佈」與「策略所誘導的分佈」之間自我強化的發散,就是分佈偏移,也是離線強化學習最具代表性的危險。

网格世界上的交互式 Q 学习:策略被高 Q 值格子吸引——离线时,这种吸引会漂移到数据从未覆盖的状态。

一个网格世界,Q 学习为各格子赋值,智能体朝高价值状态移动。

解藥只有一個詞:悲觀

每一個離線強化學習方法,本質上都是在回答同一個問題:*對於資料從未展示過的動作,我們該抱持什麼信念?* 普遍勝出的答案是悲觀主義(pessimism)——在未被證明為好之前,先假設未知是壞的。具體來說,這意味著要嘛 (a) 禁止策略偏離行為策略太遠,要嘛 (b) 刻意低估未見動作的價值。下一篇就把這兩種直覺變成有名字的演算法。

\max_{\pi}\ \mathbb{E}_{(s,a)\sim\pi}\!\left[\,\hat{Q}(s,a)-\lambda\,U(s,a)\,\right]

把悲观写成公式:最大化价值减去对缺乏支撑动作的惩罚 λ·U(s,a),让不确定性把策略拉回数据覆盖的范围。