表格放不下了
表格式強化學習為每個狀態(或每個狀態-動作對)保留一個估計值:一張你每走一步就微調的巨大查找表。當狀態空間(state space)很小時這很美好——4×4 的格子只有 16 格。但西洋雙陸棋的盤面數量比你手掌裡的原子還多,而一個讀取關節角度的機器人活在一個有無限多狀態的連續空間裡。你無法為每一個都存一個數字。這就是最樸素形式的維度詛咒(curse of dimensionality)。
一个交互式网格世界,Q 学习在每个格子里单独存一个值。
即使表格塞得下,它學得也太慢:每個狀態都是孤島。造訪狀態 9,001 完全不會告訴你任何關於狀態 9,002 的事,即使兩者幾乎一模一樣。你得把每一個狀態都造訪很多次,才能在各處學到東西。函數近似(function approximation)就是那道逃生門。
帶參數的價值函數
我們不用表格,而是把價值函數(value function)寫成一個帶參數的函數 v̂(s, w):你輸入一個狀態,它回傳一個估計價值,而一個權重向量 w 控制它的形狀。關鍵在於 w 遠小於狀態的數量——也許一千個權重涵蓋十億個狀態。學習就是調整這少數權重,使 v̂ 盡可能貼近真實的回報。
监督学习循环:数据输入模型产生预测,计算损失,然后更新模型。
「好」的定義:價值誤差
用表格你可以讓每一格都剛好正確。用有限的權重你做不到——修正某個狀態的價值會擾動它的鄰居。所以我們需要一個目標函數:哪些狀態最值得做對?標準答案是均方價值誤差(mean squared value error),即 v̂(s, w) 與真實價值之間平方差距的平均,並依策略實際造訪每個狀態的頻率加權。你很少看到的狀態可以容許出錯;你常待著的狀態必須準確。
均方价值误差用 μ(s) 给每个状态的误差加权——也就是策略实际访问该状态的频率。
這種以造訪頻率加權的目標,把近似緊緊綁在我們最終真正在意的回報目標(return objective)上,也正因如此,訓練狀態的分布——同策略(on-policy)或異策略(off-policy)——最終會極度重要(這是第 4 篇的主題)。理論把這些差距打包成近似誤差界(approximation-error bounds),限制最終策略能有多好。
最簡單的近似器:把狀態歸堆
縮小表格最溫和的方法是狀態聚合(state aggregation):把狀態切成幾組,每組存一個共享的價值。一輛自駕車可能把「與前車距離」分成近/中/遠三桶,而不是追蹤公分。同一組裡的每個狀態都得到相同的估計,而對任一成員的更新會一次更新整組——立即泛化。
聚合其實是線性近似的一個特例,其中每個狀態的特徵向量只是一個「我在哪一桶」的指示器。它很粗糙——價值在桶的邊界處跳變——但它已經展現了整個權衡:較粗的桶泛化更多、學得更快,卻無法表示細節。如何切割這個世界,就是下一篇的特徵設計問題。
偏差—方差权衡曲线,在记忆与泛化之间取舍。