現在拿獎勵,還是之後拿更多?
強化學習從單一訊號出發:獎勵(reward),也就是環境在每一步交給智能體的一個數字。但好的智能體不會追逐下一個獎勵——它追逐的是延伸到未來的獎勵總和。這正是序列決策(sequential decision making)的核心:此刻看來很棒的動作(搶下餅乾)日後可能很糟(沒胃口吃晚餐)。要做出好選擇,智能體需要一個量,能夠捕捉「整個未來有多好,而不只是這一步有多好?」
循环图:智能体执行动作,环境返回新的状态和奖励。
回報:把未來加總起來
回報就是從現在到結束所收集到的獎勵總和。若此刻之後智能體陸續得到獎勵 r1、r2、r3、…,則回報 Gt 就是它們的加總。在回合式任務(episodic task,會結束的遊戲、能被解開的迷宮)中,這個總和是有限的、容易想像的。把智能體的工作講清楚就是:採取行動,使回報傾向於變大。
這樣的重新表述很有力量。獎勵假說(reward hypothesis)主張:我們在乎的任何目標——獲勝、存活、提供幫助——都可以表達為對期望累積獎勵的最大化。回報就是讓那個「累積」化為具體數字的方式。
折扣:為何遙遠的獎勵份量較輕
對於永不結束的任務(如永遠維持平衡木桿的持續式任務,continuing task),獎勵的無窮加總可能會發散。解法是折扣因子(discount factor)γ(gamma),一個介於 0 與 1 之間的數。我們把 k 步之後的獎勵乘上 γ 的 k 次方,於是折扣回報(discounted return)就是 r1 + γ·r2 + γ²·r3 + …。
折扣回报:把未来所有奖励相加,每个奖励按其距离当前多远以 γ 的幂加权。
γ 有個乾淨的直覺。當 γ 接近 0,智能體很短視——幾乎只在乎眼前的獎勵;當 γ 接近 1,它則很有遠見,看待遙遠的獎勵幾乎與當下一樣重。折扣同時也編碼了不確定性:遙遠處或許能收到的獎勵價值較低,因為在抵達之前世界可能已經改變。
目標函數:期望回報
還有一個細微之處。世界通常是隨機的——轉移動態(transitions)甚至獎勵都可能是隨機的——所以回報本身是一個隨機量。我們無法最大化一次擲硬幣,只能最大化它的平均。因此期望回報目標(expected return objective)才是強化學習真正的標的:選擇能讓期望(平均)折扣回報盡可能大的行為。
交互式马尔可夫链:状态之间由概率转移箭头连接。
這短短一句——「最大化期望折扣回報」——就是每一個強化學習演算法背後的正式目標,從表格法到深度強化學習(deep RL)皆然。其餘的一切,都是為了估計與改進它而打造的機制。
分解回報:未來回報
回報有一個我們會不斷倚賴的優美遞迴結構。回報分解(return decomposition)說:時間 t 的回報,等於此刻的獎勵,加上從下一步起算的折扣回報——Gt = r(t+1) + γ·G(t+1)。未來俐落地摺疊成「一步」加上「其餘」。
回报的递归形式:当前回报等于即时奖励加上下一步的折扣回报。
那個「其餘」有個名字:未來回報(reward-to-go)。當我們問「時間 t 的某個動作該得多少功勞?」時,只有出現在它之後的獎勵才算數——過去已是沉沒成本。聚焦於未來回報、而非整段回合的完整回報,是日後讓信用分配(credit assignment)更銳利、並削減策略梯度法雜訊的關鍵想法。
- 寫出某次決策後的未來獎勵串:r(t+1)、r(t+2)、…
- 依各自距離多遠來折扣:γ⁰、γ¹、γ²…
- 把它們加總得到回報 Gt——智能體希望變大的那個數字。
- 注意 Gt = r(t+1) + γ·G(t+1):這個遞迴是一切價值函數的種子。
# Discounted return from a list of future rewards
def discounted_return(rewards, gamma=0.99):
G = 0.0
for r in reversed(rewards): # walk backward
G = r + gamma * G # G_t = r + gamma * G_{t+1}
return G