離散動作與連續動作是相對的概念,一個是可數的,一個是不可數的。
-
在 CartPole 環境中,可以有向左推小車、向右推小車兩個動作。在 Frozen Lake 環境中,小烏龜可以有上下左右四個動作。在 Atari 的 Pong 游戲中,游戲有 6 個按鍵的動作可以輸出。
-
但在實際情況中,經常會遇到連續動作空間的情況,也就是輸出的動作是不可數的。比如說推小車力的大小、 選擇下一時刻方向盤的轉動角度或者四軸飛行器的四個螺旋槳給的電壓的大小等等。
對於這些連續的動作控制空間,Q-learning、DQN 等算法是沒有辦法處理的,這時候就可以使用DDPG算法進行實現。

DDPG(Deep Deterministic Policy Gradient): 在連續控制領域經典的RL算法,是DQN在處理連續動作空間的一個擴充。具體地,從命名就可以看出,Deep是使用了神經網絡;Deterministic 表示 DDPG 輸出的是一個確定性的動作,可以用於連續動作的一個環境;Policy Gradient 代表的是它用到的是策略網絡,並且每個 step 都會更新一次 policy 網絡,也就是說它是一個單步更新的 policy 網絡。其與DQN都有目標網絡和經驗回放的技巧,在經驗回放部分是一致的,在目標網絡的更新有些許不同。
DDPG 的特點可以從它的名字當中拆解出來,拆解成 Deep、Deterministic 和 Policy Gradient。
-
Deep 是因為用了神經網絡;
-
Deterministic 表示 DDPG 輸出的是一個確定性的動作,可以用於連續動作的一個環境;
-
Policy Gradient 代表的是它用到的是策略網絡。REINFORCE 算法每隔一個 episode 就更新一次,但 DDPG 網絡是每個 step 都會更新一次 policy 網絡,也就是說它是一個單步更新的 policy 網絡。
思考題
-
請解釋隨機性策略和確定性策略。
答:
- 對於隨機性的策略 \pi_\theta(a_t|s_t)πθ(at∣st) ,我們輸入某一個狀態 s,采取某一個 action 的可能性並不是百分之百,而是有一個概率 P 的,就好像抽獎一樣,根據概率隨機抽取一個動作。
- 對於確定性的策略 \mu_{\theta}(s_t)μθ(st) ,其沒有概率的影響。當神經網絡的參數固定下來了之后,輸入同樣的state,必然輸出同樣的 action,這就是確定性的策略。
-
對於連續動作的控制空間和離散動作的控制空間,如果我們都采取使用Policy網絡的話,分別應該如何操作?
答:首先需要說明的是,對於連續的動作控制空間,Q-learning、DQN等算法是沒有辦法處理的,所以我們需要使用神經網絡進行處理,因為其可以既輸出概率值 \pi_\theta(a_t|s_t)πθ(at∣st) ,也可以輸出確定的策略 \mu_{\theta}(s_t)μθ(st) 。
- 要輸出離散動作的話,最后的output的激活函數使用 softmax 就可以實現。其可以保證輸出是的動作概率,而且所有的動作概率加和為 1。
- 要輸出連續的動作的話,可以在輸出層這里加一層 tanh激活函數。其作用可以把輸出限制到 [-1,1] 之間。我們拿到這個輸出后,就可以根據實際動作的一個范圍再做一下縮放,然后再輸出給環境。比如神經網絡輸出一個浮點數是 2.8,然后經過 tanh 之后,它就可以被限制在 [-1,1] 之間,它輸出 0.99。然后假設說小車的一個速度的那個動作范圍是 [-2,2] 之間,那我們就按比例從 [-1,1] 擴放到 [-2,2],0.99 乘 2,最終輸出的就是1.98,作為小車的速度或者說推小車的力輸出給環境。
