【EasyRL学习笔记】第九章 Actor-Critic 演员-评论员算法
文章目錄
- 一、前言
- 二、策略梯度回顧
- 三、深度Q網絡回顧
- 四、優(yōu)勢演員-評論員算法
- 五、異步優(yōu)勢演員-評論員算法
- 六、路徑衍生策略梯度
- 七、與生成對抗網絡的聯系
- 八、關鍵詞總結
- 九、習題
- 十、面試題
一、前言
- 演員-評論員算法是一種結合策略梯度和時序差分學習的強化學習方法
- 演員是指策略函數 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ?(a∣s) ,即學習一個策略以得到盡可能高的回報。
- 評論員是指價值函數 V π ( s ) V_\pi(s) Vπ?(s) ,對當前策略的值函數進行估計,即評估演員的好壞。
- 借助于價值函數,演員-評論員算法可以進行單步參數更新,不需要等到回合結束才進行更新。
- 在演員-評論員算法里面,最知名的算法就是異步優(yōu)勢演員-評論員算法。如果我們去掉異步,則為優(yōu)勢演員-評論員 (advantage actor-critic,A2C) 算法。如果我們加了異步,變成異步優(yōu)勢演員-評論員算法。
二、策略梯度回顧
我們復習一下策略梯度,在更新策略參數 θ \theta θ 的時候,我們可以通過
? R ˉ θ ≈ 1 N ∑ n ? 1 N ∑ t ? 1 T n ( ∑ t ′ ? t T n γ t ′ ? t r t ′ n ? b ) ? log ? p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n-1}^N \sum_{t-1}^{T_n}\left(\sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) ?Rˉθ?≈N1?n?1∑N?t?1∑Tn??(t′?t∑Tn??γt′?trt′n??b)?logpθ?(atn?∣stn?)
來計算梯度。上式表示我們首先通過智能體與環(huán)境的交互。
- 可以計算出在某一個狀態(tài) s s s 采取某一個動作 a a a 的概率 p θ ( a t ∣ s t ) p_\theta\left(a_t \mid s_t\right) pθ?(at?∣st?) 。
- 接下來,我們計算在某一個狀態(tài) s s s 采取某一個動作 a a a 之后直到游戲結束的累積獎勵。
- ∑ t ′ ? t T n γ t ′ ? t r t ′ n \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n ∑t′?tTn??γt′?trt′n? 表示我們把從時間 t t t 到時間 T T T 的獎勵相加,并且在前面乘一個折扣因子,通常將折扣因子 設置為 0.9 0.9 0.9 或 0.99 0.99 0.99 等數值
- 與此同時也會減去一個基線值 b b b ,減去值 b b b 的目的是希望括號里面這一項是有正有負的。如果括號里面這一項是正的,我們就要增大在這個狀態(tài)采取這個動作的概率; 如果括號里面是負的,我們就要減小在這個狀態(tài)采取這個動作的概率。
我們使用 G G G 表示累積獎勵, G G G 是非常不穩(wěn)定的。因為交互的過程本身具有隨機性,所以在某一個狀態(tài) s s s 采 取某一個動作 a a a 時計算得到的累積獎勵,每次結果都是不同的,因此 G G G 是一個隨機變量。對于同樣的狀態(tài) s s s 和同樣的動作 a , G a , G a,G 可能有一個固定的分布。但由于我們采取采樣的方式,因此我們在某一個狀態(tài) s s s 采取 某一個動作 a a a 一直到游戲結束,統(tǒng)計一共得到了多少的獎勵,我們就把它當作 G G G 。
如下圖所示,如果我們把 G G G 想成一個隨機變量,實際上是在對 G G G 做采樣,用這些采樣的結果去更新參數。但實際上在某一個狀態(tài) s s s 采取某一個動作 a a a ,接下來會發(fā)生什么事,其本身是有隨機性的。雖然說有一個固定的分布,但其方差可能會非常大。智能體在同一個狀態(tài)采取同一個動作時,最后得到的結果可能會是很不一樣的。當然,假設我們在每次更新參數之前,都可以采樣足夠多次,那當然就沒有以上的問題了。但 我們每次做策略梯度,每次更新參數之前都要做一些采樣時,采樣的次數是不可能太多的,我們只能夠做非常少量的采樣。如果我們正好采樣到差的結果,比如采樣到 G = 100 G=100 G=100 、采樣到 G = ? 10 G=-10 G=?10 ,顯然結果會是很差的。
三、深度Q網絡回顧
Q:我們能不能讓整個訓練過程變得穩(wěn)定,能不能直接估測隨機變量 G G G 的期望值?
A: 我們直接用一個網絡去估測在狀態(tài) s s s 采取動作 a a a 時 G G G 的期望值。如果這樣是可行的,那么在隨后的訓 練中我們就用期望值代替采樣的值,這樣就會讓訓練變得更加穩(wěn)定。
Q:怎么使用期望值代替采樣的值呢?
A: 這里就需要引入基于價值的 (value-based) 的方法。基于價值的方法就是 深度 Q \mathrm{Q} Q 網絡。深度 Q \mathrm{Q} Q 網絡有兩 種函數,有兩種評論員。如下圖所示,第一種評論員是 V π ( s ) V_\pi(s) Vπ?(s) 。即假設演員的策略是 π \pi π ,使用 π \pi π 與環(huán)境交 互,當智能體看到狀態(tài) s s s 時,接下來?積獎勵的期望值是多少。第二種評論員是 Q π ( s , a ) Q_\pi(s, a) Qπ?(s,a) 。 Q π ( s , a ) Q_\pi(s, a) Qπ?(s,a) 把 s s s 與 a a a 當作輸入,它表示在狀態(tài) s s s 采取動作 a a a ,接下來用策略 π \pi π 與環(huán)境交互,累積獎勵的期望值是多少。 V π V_\pi Vπ? 接收輸入 s s s ,輸出一個標量。 Q π Q_\pi Qπ? 接收輸入 s s s ,它會給每一個 a a a 都分配一個 Q \mathrm{Q} Q 值。
四、優(yōu)勢演員-評論員算法
如下圖所示,隨機變量 G G G 的期望值正好就是 Q 值,即
E [ G t n ] = Q π θ ( s t n , a t n ) \mathbb{E}\left[G_t^n\right]=Q_{\pi_\theta}\left(s_t^n, a_t^n\right) E[Gtn?]=Qπθ??(stn?,atn?)
此也為 Q \mathrm{Q} Q 函數的定義。 Q \mathrm{Q} Q 函數的定義就是在某一個狀態(tài) s s s ,采取某一個動作 a a a ,假設策略是 π \pi π 的情況下所能 得到的累積獎勵的期望值,即 G G G 的期望值。累積獎勵的期望值就是 G G G 的期望值。所以假設用 E [ G t n ] \mathbb{E}\left[G_t^n\right] E[Gtn?] 來代 表 ∑ t ′ ? t T n γ t ′ ? t r t ′ η \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^\eta ∑t′?tTn??γt′?trt′η? 這一項,把Q函數套在這里就結束了,我們就可以把演員與評論員這兩個方法結合起來。
有不同的方法表示基線,一個常見的方法是用價值函數 V π θ ( s t n ) V_{\pi \theta}\left(s_t^n\right) Vπθ?(stn?) 來表示基線。價值函數的定義為,假設策略是 π \pi π ,其在某個狀態(tài) s s s 一直與環(huán)境交互直到游戲結束,期望獎勵有多大。 V π θ ( s t n ) V_{\pi_\theta}\left(s_t^n\right) Vπθ??(stn?) 沒有涉及動作, Q π θ ( s t n , a t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right) Qπθ?(stn?,atn?) 涉及動作。 V π θ ( s t n ) V_{\pi_\theta}\left(s_t^n\right) Vπθ??(stn?) 是 Q π θ ( s t n , a t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right) Qπθ?(stn?,atn?) 的期望值, Q π θ ( s t n , a t n ) ? V π θ ( s t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right)-V_{\pi_\theta}\left(s_t^n\right) Qπθ?(stn?,atn?)?Vπθ??(stn?) 會有正有負,所 以 ∑ t ′ ? t T n γ t ′ ? t r t ′ n ? b \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b ∑t′?tTn??γt′?trt′n??b 這一項就會有正有負。所以我們就把策略梯度里面 ∑ t ′ ? t T n γ t ′ ? t r t ′ n ? b \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b ∑t′?tTn??γt′?trt′n??b 這一項換成了優(yōu)勢函數 A θ ( s t n , a t n ) A^\theta\left(s_t^n, a_t^n\right) Aθ(stn?,atn?) ,即 Q π θ ( s t n , a t n ) ? V π θ ( s t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right)-V_{\pi_\theta}\left(s_t^n\right) Qπθ?(stn?,atn?)?Vπθ??(stn?) 。因此該算法稱為優(yōu)勢演員-評論員算法。
如果我們這么實現,有一個缺點,即我們需要估計兩個網絡 : Q Q Q 網絡和 V \mathrm{V} V 網絡,估計不準的風險就變成原來的兩倍。所以我們何不只估計一個網絡呢? 事實上,在演員-評論員算法中,我們可以只估計網絡 V \mathrm{V} V ,并利用 V V V 的值來表示 Q Q Q 的值, Q π ( s t n , a t n ) Q_\pi\left(s_t^n, a_t^n\right) Qπ?(stn?,atn?) 可以寫成 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn?+Vπ?(st+1n?) 的期望值,即
Q π ( s t n , a t n ) = E [ r t n + V π ( s t + 1 n ) ] Q_\pi\left(s_t^n, a_t^n\right)=\mathbb{E}\left[r_t^n+V_\pi\left(s_{t+1}^n\right)\right] Qπ?(stn?,atn?)=E[rtn?+Vπ?(st+1n?)]
在狀態(tài) s s s 采取動作 a a a ,我們會得到獎勵 r r r ,進入狀態(tài) s t + 1 s_{t+1} st+1? 。但是我們會得到什么樣的獎勵 r r r ,進入什么樣的 狀態(tài) s t + 1 s_{t+1} st+1? ,這件事本身是有隨機性的。所以要把 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn?+Vπ?(st+1n?) 取期望值才會等于Q函數的值。但我們現在把取期望值去掉,即
Q π ( s t n , a t n ) = r t n + V π ( s t + 1 n ) Q_\pi\left(s_t^n, a_t^n\right)=r_t^n+V_\pi\left(s_{t+1}^n\right) Qπ?(stn?,atn?)=rtn?+Vπ?(st+1n?)
我們就可以把Q函數的值用 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn?+Vπ?(st+1n?) 取代,可得
r t n + V π ( s t + 1 n ) ? V π ( s t n ) r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right) rtn?+Vπ?(st+1n?)?Vπ?(stn?)
把取期望值去掉的好處就是我們不需要估計 Q Q Q 了,只需要估計 V V V 。但與此同時我們會引入一個隨機的參數 r r r 。 r r r 是有隨機性的,它是一個隨機變量,但是 r r r 相較于累積獎勵 G G G 是一個較小的值,因為它是某一個步驟得到的獎勵,而 G G G 是所有末來會得到的獎勵的總和, G G G 的方差比較大。 r r r 雖然也有一些方差,但它的方差 比 G G G 的要小。所以把原來方差比較大的 G G G 換成方差比較小的 r r r 也是合理的。
Q \mathrm{Q} Q :為什么我們可以直接把取期望值去掉?
A: 原始的異步優(yōu)勢演員-評論員算法的論文嘗試了各種方法,最后發(fā)現這個方法最好。當然有人可能會有疑問,說不定估計 Q Q Q 和 V V V 也可以估計得很好,但實際做實驗的時候,最后結果就是這個方法最好,所以后來大家都使用了這個方法。
優(yōu)勢演員-評論員算法的流程如下圖所示,我們有一個 π \pi π ,有個初始的演員與環(huán)境交互,先收集資料。在策略梯度方法里收集資料以后,就來更新策略。但是在演員-評論員算法里面,我們不是直接使用那些資料來 更新策略。我們先用這些資料去估計價值函數,可以用時序差分方法或蒙特卡洛方法來估計價值函數。接下來,我們再基于價值函數,使用下式更新 π \pi π 。
? R ˉ θ ≈ 1 N ∑ n ? 1 N ∑ t ? 1 T n ( r t n + V π ( s t + 1 n ) ? V π ( s t n ) ) ? log ? p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n-1}^N \sum_{t-1}^{T_n}\left(r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right)\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) ?Rˉθ?≈N1?n?1∑N?t?1∑Tn??(rtn?+Vπ?(st+1n?)?Vπ?(stn?))?logpθ?(atn?∣stn?)
有了新的 π \pi π 以后,再與環(huán)境交互,收集新的資料,去估計價值函數。再用新的價值函數更新策略,更新演員。整個優(yōu)勢演員-評論員算法就是這么運作的。
實現優(yōu)勢演員-評論員算法的時候,有兩個一定會用到的技巧。
-
第一個技巧是,我們需要估計兩個網絡: V V V 網絡和策略的網絡(也就是演員)。評論員網絡 V π ( s ) V_\pi(s) Vπ?(s) 接收一個狀態(tài),輸出一個標量。演員的策略 π ( s ) \pi(s) π(s) 接 收一個狀態(tài),如果動作是離散的,輸出就是一個動作的分布。如果動作是連續(xù)的,輸出就是一個連續(xù)的向量。
下圖所示為離散動作的例子,連續(xù)動作的情況也是一樣的。輸入一個狀態(tài),網絡決定現在要采取哪一個動 作。演員網絡和評論員網絡的輸入都是 s s s ,所以它們前面幾個層 (layer) 是可以共享的。
尤其當我們在玩雅達利游戲時,輸入都是圖像。輸入的圖像非常復雜,通常我們在前期都會用一些卷積神經網絡來處理它們,把圖像抽象成高級(high level) 的信息。把像素級別的信息抽象成高級信息的特征提取 器,對于演員與評論員來說是可以共用的。所以通常我們會讓演員與評論員共享前面幾層,并且共用同一組 參數,這一組參數大部分都是卷積神經網絡的參數。先把輸入的像素變成比較高級的信息,再讓演員決定要 采取什么樣的動作,讓評論員即價值函數計算期望獎勵。 -
第二個技巧是我們需要探索的機制。在演員-評論員算法中,有一個常見的探索的方法是對 π \pi π 輸出的分布設 置一個約束。這個約束用于使分布的熵 (entropy) 不要太小,也就是希望不同的動作被采用的概率平均一 些。這樣在測試的時候,智能體才會多嘗試各種不同的動作,才會把環(huán)境探索得比較好,從而得到比較好的 結果。
五、異步優(yōu)勢演員-評論員算法
異步優(yōu)勢演員-評論員算法同時使用很多個進程(worker),每一個進程就像一個影分身,最后這些影分身會把所有的經驗值集合在一起。如果我們沒有很多 CPU,不好實現異步優(yōu)勢演員-評論員算法,但可以實現優(yōu)勢演員-評論員算法。
異步優(yōu)勢演員-評論員算法的運作流程,如下圖所示,異步優(yōu)勢演員-評論員算法一開始有一個全局網絡 (global network)。全同網絡包含策略網絡和價值網絡,這兩個網絡是綁定(tie)在一起的,它們的前幾 個層會被綁在一起。假設全局網絡的參數是 θ 1 \theta_1 θ1? ,我們使用多個進程,每個進程用一張 CPU 去跑。比如我們有 8 個進程,則至少 8 張 CPU。每一個進程在工作前都會把全局網絡的參數復制過來。接下來演員就與環(huán)境 交互,每一個演員與環(huán)境交互的時候,都要收集到比較多樣的數據。例如,如果是走迷宮,可能每一個演員 起始的位置都會不一樣,這樣它們才能夠收集到比較多樣的數據。每一個演員與環(huán)境交互完之后,我們就會計算出梯度。計算出梯度以后,要用梯度去更新參數。我們就計算一下梯度,用梯度去更新全同網絡的參 數。就是這個進程算出梯度以后,就把梯度傳回給中央的控制中心,中央的控制中心就會用這個梯度去更新 原來的參數。
注意,A3C使用了平行探索的方法,所有的演員都是平行跑的,每一個演員各做各的,不管彼此。所以每個 演員都是去要了一個參數以后,做完就把參數傳回去。當第一個進程做完想要把參數傳回去的時候,本來它要的參數是 θ 1 \theta_1 θ1? ,等它要把梯度傳回去的時候,可能別人已經把原來的參數覆蓋掉,變成 θ 2 \theta_2 θ2? 了。但是沒有關 系,它一樣會把這個梯度就覆蓋過去。
六、路徑衍生策略梯度
接下來我們來了解路徑衍生策略梯度(pathwise derivative policy gradient)方法。這個方法可以看成 深度Q網絡 解連續(xù)動作的一種特別的方法,也可以看成一種特別的演員-評論員的方法。
用動漫《棋魂》來比喻,阿光就是一個演員,佐為就是一個評論員。阿光落某一子以后,如果佐為是一般的演員-評論員算法的評論員,他會告訴阿光這時候不應該下小馬步飛。佐為會告訴我們,我們現在采取的這一步算出來的值到底是好還是不好,但這樣就結束了,他只告訴我們好還是不好。因為一般的演員-評論員算法的評論員就是輸入狀態(tài)或輸入狀態(tài)-動作對,給演員一個值,所以對演員來說,它只知道它做的這個動作到底是好還是不好。
但在路徑衍生策略梯度里面,評論員會直接告訴演員采取什么樣的動作才是好的。所以佐為不只是告訴阿光,這個時候不要下小馬步飛,同時還告訴阿光這個時候應該要下大馬步飛,這就是路徑衍生策略梯度中的評論員所做的。評論員會直接告訴演員做什么樣的動作才可以得到比較大的值。
從深度 Q \mathrm{Q} Q 網絡 的觀點來看,深度 Q \mathrm{Q} Q 網絡的一個問題是在使用 深度 Q \mathrm{Q} Q 網絡時,考慮連續(xù)向量會比較麻煩,沒有通用的解決方法 (general solution),那我們應該怎么解這個優(yōu)化問題呢?
我們用一個演員來解決這個優(yōu) 化的問題。本來在深度 Q \mathrm{Q} Q 網絡 里面,如果是一個連續(xù)的動作,我們要解決這個優(yōu)化問題。但是現在這個優(yōu)化 問題由演員來解決,假設演員就是一個解決者(solver),這個解決者的工作就是對于給定的狀態(tài) s s s ,解出 來哪一個動作可以得到最大的 Q Q Q 值,這是從另外一個觀點來看路徑衍生策略梯度。
在生成對抗網絡中也有 類似的說法。我們學習一個判別器 (discriminator) 并用于評估時,是非常困難的,因為我們要解決的 arg max ? \max max 的問題非常的困難,所以用生成器 (generator) 來生成。所以概念是一樣的, Q Q Q 就是那個判別器。根據 這個判別器決定動作非常困難,怎么辦? 另外學習一個網絡來解決這個優(yōu)化問題,這個網絡就是演員。所以 兩個不同的觀點是同一件事。
從兩個不同的觀點來看,
- 一個觀點是: 我們可以對原來的深度 Q \mathrm{Q} Q 網絡加以改 進,學習一個演員來決定動作以解決 arg ? max ? \arg \max argmax 不好解的問題。
- 另外一個觀點是: 原來的演員-評論員算法的 問題是評論員并沒有給演員足夠的信息,評論員只告訴演員好或不好的,沒有告訴演員什么樣是好,現在有新的方法可以直接告訴演員什么樣的是好的。
路徑衍生策略梯度算法如下圖所示,假設我們學習了一個Q 函數,Q函數的輸入是 s s s 與 a a a ,輸出是 Q π ( s , a ) Q_\pi(s, a) Qπ?(s,a) 。接下來,我們要學習一個演員,這個演員的工作就是解決 arg ? \arg arg max 的問題,即輸入一個狀態(tài) s s s ,希望可以輸出一個動作 a 。 a a 。 a a。a 被代入Q函數以后,它可以讓 Q π ( s , a ) Q_\pi(s, a) Qπ?(s,a) 盡可能大,即
π ′ ( s ) = arg ? max ? a Q π ( s , a ) \pi^{\prime}(s)=\underset{a}{\arg \max } Q_\pi(s, a) π′(s)=aargmax?Qπ?(s,a)
實際上在訓練的時候,我們就是把 Q \mathrm{Q} Q 與演員連接起來變成一個比較大的網絡。 Q \mathrm{Q} Q 是一個網絡,接收輸入 s s s 與 a a a ,輸出一個值。演員在訓練的時候,它要做的事就是接收輸入 s s s ,輸出 a a a 。把 a a a 代入 Q \mathrm{Q} Q 中,希望輸出的值 越大越好。我們會固定住 Q Q Q 的參數,只調整演員的參數,用梯度上升的方法最大化 Q Q Q 的輸出,這就是一個 生成對抗網絡,即有條件的生成對抗網絡(conditional GAN)。Q 就是判別器,但在強化學習里就是評論 員,演員在生成對抗網絡里面就是生成器。
我們來看一下路徑衍生策略梯度算法。如下圖所示,一開始會有一個策略 π \pi π ,它與環(huán)境交互并估計 Q Q Q 值。 估計完 Q Q Q 值以后,我們就把 Q Q Q 值固定,只去學習一個演員。假設這個 Q Q Q 值估得很準,它知道在某一個狀態(tài) 采取什么樣的動作會得到很大的Q值。接下來就學習這個演員,演員在給定 s s s 的時候,采取了 a a a ,可以讓最 后Q函數算出來的值越大越好。我們用準則(criteria) 去更新策略 π \pi π ,用新的 π \pi π 與環(huán)境交互,再估計 Q \mathrm{Q} Q 值, 得到新的 π \pi π 去最大化 Q \mathrm{Q} Q 值的輸出。
深度 Q \mathrm{Q} Q 網絡 里面的技巧,在這里也幾乎都用得上,比如經驗回放、探索等技巧。
下圖所示為原來深度 Q \mathrm{Q} Q 網絡的算法。
- 我們有一個 Q \mathrm{Q} Q 函數 Q Q Q 和另外一個目標 Q \mathrm{Q} Q 函數 Q ^ \hat{Q} Q^? 。
- 每一次訓練,在每一 個回合的每一個時間點,我們會看到一個狀態(tài) s t s_t st? ,會采取某一個動作 a t a_t at? 。至于采取哪一個動作是由 Q \mathrm{Q} Q 函數所 決定的。如果是離散動作,我們看哪一個動作 a a a 可以讓 Q \mathrm{Q} Q 值最大,就采取哪一個動作。
- 當然,我們需要加 一些探索,這樣表現才會好。我們會得到獎勵 r t r_t rt? ,進入新的狀態(tài) s t + 1 s_{t+1} st+1? ,然后把 ( s t , a t , r t , s t + 1 ) \left(s_t, a_t, r_t, s_{t+1}\right) (st?,at?,rt?,st+1?) 放到回放緩 沖區(qū)里。
- 接下來,我們會從回放緩沖區(qū)中采樣一個批量的數據,在這個批量數據里面,可能某一筆數據是 ( s i , a i , r i , s i + 1 ) \left(s_i, a_i, r_i, s_{i+1}\right) (si?,ai?,ri?,si+1?) 。
- 接下來我們會算一個目標 y , y = r i + max ? a Q ^ ( s i + 1 , a ) y , y=r_i+\max _a \hat{Q}\left(s_{i+1}, a\right) y,y=ri?+maxa?Q^?(si+1?,a) 。怎么學習 Q \mathrm{Q} Q 呢? 我們希望 Q ( s i , a i ) Q\left(s_i, a_i\right) Q(si?,ai?) 與 y y y 越接近越好,這是一個回歸問題,最后每 C C C 步,要用 Q Q Q 替代 Q ^ \hat{Q} Q^? 。
接下來我們把深度 Q Q Q 網絡 改成路徑衍生策略梯度,需要做 4 個改變,如下圖所示:
- 第一個改變是,我們要把 Q Q Q 換成 θ \theta θ ,本來是用 Q Q Q 來決定在狀態(tài) s t s_t st? 執(zhí)行一個動作 a t a_t at? ,現在直接用 θ \theta θ 來執(zhí)行動作。我們直接學習了一個演員。這個演員的輸入 s t s_t st? 會告訴我們應該采取哪一個 a t a_t at? 。所以本來輸入 s t s_{t} st?采取哪一個 a t a_t at?是 Q 決定的,而在路徑衍生策略梯度里面,我們會直接用 θ \theta θ來決定。
- 第二個改變是,本來我們要計算在 s i + 1 s_{i+1} si+1? ,根據策略采取某一個動作 a a a 會得到的 Q \mathrm{Q} Q 值,我們會采取讓 Q ^ \hat{Q} Q^? 最大的那個動作 a 。? a_{\text {。 }} a。?? 現在因為我們直接把 s i + 1 s_{i+1} si+1? 代入 θ \theta θ ,就會知道給定 s i + 1 s_{i+1} si+1? ,哪個動作會給我們最大的 Q Q Q 值,就采取哪個動作。在 Q Q Q 函數里面,有兩個 Q \mathrm{Q} Q 網絡:真正的 Q \mathrm{Q} Q 網絡和目標 Q \mathrm{Q} Q 網絡。實際上我們在實現路徑衍生策略梯度算法的時候,也有兩個演員: 真正要學習的演員 θ \theta θ 和目標演員 θ ^ \hat{\theta} θ^ 。這個原理就與為什么要有目 標 Q Q Q 網絡一樣,我們在算目標值的時候,并不希望它一直的變動,所以我們會有一個目標演員和一個目標 Q Q Q 函數,它們平常的參數就是固定住的,這樣可以讓目標的值不會一直地變化。
總結一下,第二個改變是我們用策略取代原來要解 arg max 的地方。 - 第三個改變是,之前只要學習 Q \mathrm{Q} Q 函數,現在我們多學習了一個 θ \theta θ ,學習 θ \theta θ 的目的是最大化 Q \mathrm{Q} Q 函數,希望得到的演員可以讓 Q Q Q 函數的輸出盡可能大,這與學習生成對抗網絡 里面的生成器的概念是類似的。
- 第四個改變是,我們不僅要取代目標的 Q Q Q 網絡,還要取代目標策略。
七、與生成對抗網絡的聯系
如下表所示,GAN 與演員-評論員的方法是非常類似的。如果大家感興趣,可以參考一篇論文: “Connecting Generative Adversarial Network and Actor-Critic Methods”。
生成對抗網絡與演員-評論員都挺難訓練,所以在文獻上就有各式各樣的方法,告?我們怎么樣可以訓練 生成對抗網絡。知道生 成對抗網絡與演員-評論員非常相似后,我們就可以知道怎樣訓練演員-評論員。但是因為做生成對抗網絡與演員-評論員的人是 兩群人,所以這篇論文里面就列出說在生成對抗網絡上面有哪些技術是有人做過的,在演員-評論員上面,有哪些技術是有人做 過的。也許訓練 生成對抗網絡 的技術,我們可以試著應用在演員-評論員上,在演員-評論員上用過的技術,也可以試著應用在 生成對抗網絡上。
八、關鍵詞總結
- 優(yōu)勢演員-評論員 (advantage actor-critic, A2C) 算法:一種改進的演員-評論員 (actor-critic) 算法。
- 異步優(yōu)勢演員-評論員 (asynchronous advantage actor-critic, A3C) 算法:一種改進的演員-評論員算 法, 通過異步的操作, 實現強化學習模型訓練的加速。
- 路徑衍生策略梯度 (pathwise derivative policy gradient):一種使用 Q \mathrm{Q} Q 學習來求解連續(xù)動作的算法, 也是一種演員-評論員算法。其會對演員提供價值最大的動作, 而不僅僅是提供某一個動作的好壞程度。
九、習題
9-1 完整的優(yōu)勢演員-評論員算法的工作流程是怎樣的?
9-2 在實現演員-評論員算法的時候有哪些技巧?
9-3 異步優(yōu)勢演員-評論員算法在訓練時有很多的進程進行異步的工作, 最后再將他們所獲得的 “結 果” 集合到一起。那么其具體是如何運作的呢?
9-4 對比經典的 Q Q Q 學習算法, 路徑衍生策略梯度有哪些改進之處?
十、面試題
9-1 友善的面試官:請簡述一下異步優(yōu)勢演員-評論員算法 (A3C), 另外 A3C 是同策略還是異策略的 模型呀?
9-2 友善的面試官:請問演員-評論員算法有何優(yōu)點呢?
9-3 友善的面試官:請問異步優(yōu)勢演員-評論員算法具體是如何異步更新的?
9-4 友善的面試官:演員-評論員算法中, 演員和評論員兩者的區(qū)別是什么?
9-5 友善的面試官:演員-評論員算法框架中的評論員起了什么作用?
9-6 友善的面試官:簡述異步優(yōu)勢演員-評論員算法的優(yōu)勢函數。
總結
以上是生活随笔為你收集整理的【EasyRL学习笔记】第九章 Actor-Critic 演员-评论员算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天池O2O优惠券预测之后的一些个人思考
- 下一篇: 最近网上比较火的虎年西游记金钱豹头像制作