DDPG算法
基本概念:
離散動作與連續(xù)動作是相對的概念,一個是可數(shù)的,一個是不可數(shù)的。
在 CartPole 環(huán)境中,可以有向左推小車、向右推小車兩個動作。在 Frozen Lake 環(huán)境中,小烏龜可以有上下左右四個動作。在 Atari 的 Pong 游戲中,游戲有 6 個按鍵的動作可以輸出。
但在實際情況中,經(jīng)常會遇到連續(xù)動作空間的情況,也就是輸出的動作是不可數(shù)的。比如說推小車力的大小、 選擇下一時刻方向盤的轉(zhuǎn)動角度或者四軸飛行器的四個螺旋槳給的電壓的大小等等。
對于這些連續(xù)的動作控制空間,Q-learning、DQN 等算法是沒有辦法處理的,這時候就可以使用DDPG算法進行實現(xiàn)。
DDPG(Deep Deterministic Policy Gradient): 在連續(xù)控制領(lǐng)域經(jīng)典的RL算法,是DQN在處理連續(xù)動作空間的一個擴充。具體地,從命名就可以看出,Deep是使用了神經(jīng)網(wǎng)絡(luò);Deterministic 表示 DDPG 輸出的是一個確定性的動作,可以用于連續(xù)動作的一個環(huán)境;Policy Gradient 代表的是它用到的是策略網(wǎng)絡(luò),并且每個 step 都會更新一次 policy 網(wǎng)絡(luò),也就是說它是一個單步更新的 policy 網(wǎng)絡(luò)。其與DQN都有目標網(wǎng)絡(luò)和經(jīng)驗回放的技巧,在經(jīng)驗回放部分是一致的,在目標網(wǎng)絡(luò)的更新有些許不同。
DDPG 的特點可以從它的名字當中拆解出來,拆解成 Deep、Deterministic 和 Policy Gradient。
Deep 是因為用了神經(jīng)網(wǎng)絡(luò);
Deterministic 表示 DDPG 輸出的是一個確定性的動作,可以用于連續(xù)動作的一個環(huán)境;
Policy Gradient 代表的是它用到的是策略網(wǎng)絡(luò)。REINFORCE 算法每隔一個 episode 就更新一次,但 DDPG 網(wǎng)絡(luò)是每個 step 都會更新一次 policy 網(wǎng)絡(luò),也就是說它是一個單步更新的 policy 網(wǎng)絡(luò)。
思考題
請解釋隨機性策略和確定性策略。
答:
對于隨機性的策略 πθ?(at?∣st?) ,我們輸入某一個狀態(tài) s,采取某一個 action 的可能性并不是百分之百,而是有一個概率 P 的,就好像抽獎一樣,根據(jù)概率隨機抽取一個動作。
對于確定性的策略 μθ?(st?) ,其沒有概率的影響。當神經(jīng)網(wǎng)絡(luò)的參數(shù)固定下來了之后,輸入同樣的state,必然輸出同樣的 action,這就是確定性的策略。
對于連續(xù)動作的控制空間和離散動作的控制空間,如果我們都采取使用Policy網(wǎng)絡(luò)的話,分別應(yīng)該如何操作?
答:首先需要說明的是,對于連續(xù)的動作控制空間,Q-learning、DQN等算法是沒有辦法處理的,所以我們需要使用神經(jīng)網(wǎng)絡(luò)進行處理,因為其可以既輸出概率值 πθ?(at?∣st?) ,也可以輸出確定的策略 μθ?(st?) 。
要輸出離散動作的話,最后的output的激活函數(shù)使用 softmax 就可以實現(xiàn)。其可以保證輸出是的動作概率,而且所有的動作概率加和為 1。
要輸出連續(xù)的動作的話,可以在輸出層這里加一層 tanh激活函數(shù)。其作用可以把輸出限制到 [-1,1] 之間。我們拿到這個輸出后,就可以根據(jù)實際動作的一個范圍再做一下縮放,然后再輸出給環(huán)境。比如神經(jīng)網(wǎng)絡(luò)輸出一個浮點數(shù)是 2.8,然后經(jīng)過 tanh 之后,它就可以被限制在 [-1,1] 之間,它輸出 0.99。然后假設(shè)說小車的一個速度的那個動作范圍是 [-2,2] 之間,那我們就按比例從 [-1,1] 擴放到 [-2,2],0.99 乘 2,最終輸出的就是1.98,作為小車的速度或者說推小車的力輸出給環(huán)境。