是旋鈕,不是按鈕
電玩遊戲的智能體按下幾顆按鈕的其中一顆。但機械手臂、汽車或步行機器人做的是另一回事:它在每個馬達上設定一個實數——2.7 牛頓米的扭矩、-0.14 弧度的轉向角。所有這類選擇構成的集合就是連續動作空間(continuous action space),它是物理控制最自然的語言。
把它對比於只有四個動作的離散動作空間(action space)。在離散情況你可以把每個動作列出來,然後問「哪個最好?」。但在連續動作空間(action space)裡有無窮多個動作,而且常常是好幾個旋鈕同時轉(一隻機器手可能有二十個關節),列舉是沒指望的。
為什麼 DQN 的 argmax 會壞掉
離散深度強化學習的主力——深度 Q 網路(Deep Q-Network, DQN)——為每個動作學一個價值 Q(s,a),然後用 argmax 來行動:選價值最高的那個動作。這個 argmax 就是在選單上快速掃一遍。
交互式网格世界:智能体为每个格子学习一个 Q 值,并选择价值最高的动作。
現在把選單變成無窮大。要在連續動作上取 argmax,你得在行動與學習的每一步裡面都解一個最佳化問題。這個內層最佳化本身又難又慢,而且每個狀態都要重做一次。乾淨俐落的 DQN 配方根本搬不過來。
解法:直接輸出動作
與其替每個動作打分再挑最好的,我們改訓練第二個網路——actor——直接輸出一個好動作:動作 = mu(狀態)。argmax 被一次前向傳遞取代。同時還有一個 critic 繼續學 Q(s,a),告訴 actor 它的選擇有多好。這種 actor-critic 的分工,是本軌道裡每個方法的骨幹。
上下限在 actor 的最後一層處理。常見技巧是把原始輸出通過 tanh,它把任何實數壓進 [-1, 1] 區間,再縮放到馬達的限值。這保證了合法指令,但帶來了 動作飽和(action saturation):把 tanh 推得太用力它就攤平,梯度便縮向零,於是在極端值附近的學習慢到像在爬。
Actor(执行者)网络直接输出动作,经 tanh 压缩再重新缩放,使其始终落在电机的取值范围内。
練功場
連續控制有一組共享的測試平台,讓不同方法能公平比較。經典的套件是 MuJoCo 基準(MuJoCo benchmarks):HalfCheetah、Hopper、Walker2d、Ant、Humanoid 等模擬物理任務。其中大多是移動任務(locomotion tasks)——智能體學一種步態,讓身體又快又穩地往前走。
强化学习回路:智能体执行一个动作,环境返回新的状态和奖励。