策略就是智能體的行動方針
如果回報是智能體想要什麼,那麼策略(policy)就是它如何行動以取得回報。策略寫作 π(pi),是一條把每個狀態對應到一個動作——或對應到動作機率分布——的規則。把一個狀態交給智能體,問它「現在怎麼辦?」,策略就會作答。智能體所做的一切都源自 π;歸根結柢,學習就是改進策略。
確定性策略:一個狀態,一個動作
最簡單的一種是確定性策略(deterministic policy):每個狀態恰好對應一個動作,a = π(s)。恆溫器(「若低於 20°C 就開暖氣」)就是確定性策略。它們容易推理,也是價值法以及像 DDPG 這類連續控制行動者的自然輸出。
它們的弱點:一個純確定性、總是挑同樣動作的智能體,永遠無法發現別的動作是不是更好。少了一些變化,它就會卡住——這正是探索與利用權衡(exploration–exploitation tradeoff)的一個例子。
隨機策略:動作上的機率分布
隨機策略(stochastic policy)為每個動作輸出一個機率 π(a | s),智能體再從中抽樣。這與馬可夫決策過程形式裡的隨機策略是同一個東西。隨機並非草率——它很有用。它把探索直接內建進行為,在「被看穿就會輸」的賽局裡(剪刀石頭布)不可或缺,也讓目標函數平滑到足以用梯度最佳化——這正是策略梯度(policy-gradient)法學習隨機策略的原因。
随机策略可写成对动作价值的 softmax:每个动作都有一个概率,随着温度 τ 降低而逐渐向最优动作集中。
在整個訓練過程中,隨機策略通常一開始很分散(嘗試許多動作,actions),隨著智能體愈來愈有把握,再逐漸朝最好的那些動作收斂、變得尖銳。
貪婪策略:照你的信念行動
有一種特別重要、從價值估計推導出策略的方法:貪婪策略(greedy policy)在每個狀態都挑估計價值最高的動作。如果你早已知道每個動作的價值,貪婪行為就會是最優的。問題在於,學習初期你的價值估計是錯的,所以純粹貪婪會把錯誤鎖死——這也是為何在估計值夠可靠之前,我們會用探索(例如 ε-greedy)把它軟化。
交互式网格世界:学习 Q 值,箭头显示每个格子中选择的贪婪动作。
從策略到行為:推演軌跡
把策略放進環境裡跑,你就產生一條軌跡(trajectory,又稱推演 rollout):狀態、動作、獎勵、下一個狀態,反覆直到回合結束。軌跡是每個強化學習演算法所消耗的原始經驗——用來估計回報、評估策略,以及判斷該讓哪些動作更常、哪些更少出現。
强化学习回路示意图:智能体向环境发送动作,环境返回奖励和下一状态。
- 觀察當前狀態 s。
- 向策略要一個動作:確定性的 a = π(s),或抽樣 a ~ π(·|s)。
- 把 a 送進環境;收到一個獎勵與下一個狀態。
- 重複進行,每一步都記下 (s, a, r)——這份紀錄就是軌跡。
# A stochastic policy as a probability table, then one action
import random
def act(policy, state):
actions, probs = zip(*policy[state].items()) # actions and probabilities
return random.choices(actions, weights=probs)[0] # sample one action