一、本文概要:
actor是策略網(wǎng)絡,用來控制agent運動,你可以把他看作是運動員,critic是價值網(wǎng)絡,用來給動作打分,你可以把critic看作是裁判,這節(jié)課的內(nèi)容就是構造這兩個神經(jīng)網(wǎng)絡,然后通過環(huán)境給的獎勵來學習這兩個網(wǎng)絡
1、首先看一下如何構造價值網(wǎng)絡value network:
Π 和QΠ這兩個函數(shù)我們都不知道,應該怎么辦呢?
》可以用兩個神經(jīng)網(wǎng)絡分別近似這兩個函數(shù),然后用actor-critic方法同時學習這兩個神經(jīng)網(wǎng)絡?
策略網(wǎng)絡:Policy network(actor):
我們用策略網(wǎng)絡來控制agent做運動,決策是由策略網(wǎng)絡做的
價值網(wǎng)絡:Value network(critic):
這里的價值網(wǎng)絡不控制agent運動,價值網(wǎng)絡只是給動作打分而已,所以價值網(wǎng)絡被稱為critic,它相當于裁判,來給運動員的表現(xiàn)打分
你可以這樣理解:actor是一個體操運動員,它可以做動作,如果它想讓自己做的更好,就得改進自己的技術,可是它不知道怎樣改進自己,這就需要裁判,裁判給運動員打分,運動員就知道什么樣的動作得分高,什么樣的動作得分低,這樣一來運動員就會改進自己,讓自己的分數(shù)越來越高
我們用策略網(wǎng)絡來近似Π函數(shù),用價值網(wǎng)絡來近似QΠ函數(shù),Π是策略網(wǎng)絡,相當于運動員,q是價值網(wǎng)絡相當于裁判?
我們現(xiàn)在來搭建這兩個神經(jīng)網(wǎng)絡:
1、策略網(wǎng)絡
2、價值網(wǎng)絡:
價值網(wǎng)絡有兩個輸入:一個是狀態(tài)s,一個是動作a,如果動作是離散的,就可以使用onehot-encoding獨熱編碼來表示一個動作, 比如向左可以表示成100,向右可以表示成010,向上表示成001,分別用卷積層和全連接層從輸入中提取特征,得到兩個特征向量,然后把這兩個特征向量給拼接起來,得到一個更高的特征向量,最后用全連接層輸出一個實數(shù)q(s,a;w),這個數(shù),就是裁判給運動員打的分數(shù),這個分數(shù)說明,出在狀態(tài)s的情況下,做出動作a是好還是壞
這個價值網(wǎng)絡可以和策略網(wǎng)絡共享卷積層的參數(shù),也可以跟策略網(wǎng)絡完全獨立,各自有各自的參數(shù)
同時訓練策略網(wǎng)絡和價值網(wǎng)絡,就被稱為是Actor-Critic Method,可以這樣理解Actor-Critic Method:策略網(wǎng)絡用來控制agent運動,所以叫做actor,你可以把策略網(wǎng)絡當成是一個體操運動員,他要做一連串的動作,價值網(wǎng)絡的用途是評價動作的好壞,所以把他叫做critic,你可以把價值網(wǎng)絡當作是裁判,他給運動員的動作打分,學習這兩個網(wǎng)絡的目的是讓運動員的平均分越來越高,并且讓裁判的打分越來越精準
下面我們來訓練這兩個神經(jīng)網(wǎng)絡:
我們用了策略網(wǎng)絡來近似策略函數(shù)Π,用了價值網(wǎng)絡來近似動作價值函數(shù)QΠ,這樣一來,狀態(tài)價值函數(shù)就可以用V(s;θ,w)來近似,θ是策略網(wǎng)絡的參數(shù),w是價值網(wǎng)絡的參數(shù),訓練的時候要更新兩個神經(jīng)網(wǎng)絡的參數(shù)θ和w,但是更新θ和w的目標是不同的,更新策略網(wǎng)絡Π的參數(shù)θ,是為了讓V函數(shù)的值增加,V函數(shù)是對策略Π和狀態(tài)s的評價,如果固定s,V越大則說明策略Π越好,所以很顯然我們需要更新參數(shù)θ使得V的平均值(期望)增加,學習策略網(wǎng)絡Π的時候,監(jiān)督是由價值網(wǎng)絡Q提供的,怎么理解呢?
策略網(wǎng)絡Π 相當于體操運動員,它做出動作之后,裁判會給動作打分,裁判相當于價值網(wǎng)絡Q,運動員努力改進自己的技術,爭取讓裁判打的分數(shù)更高,裁判打的分數(shù)就是監(jiān)督信號,運動員靠裁判打的分數(shù)來改進自己的技術。更新價值網(wǎng)絡q的參數(shù)w是為了讓q的打分更精準,從而更好地估計未來得到的獎勵的總和,價值網(wǎng)絡q相當于是裁判,一開始是隨機初始化的,所以一開始裁判沒有判斷能力,裁判會逐漸改善自己的水平,讓打分越來越精準。裁判是靠什么改進自己的呢?
裁判靠的是環(huán)境給的獎勵reward,你可以把環(huán)境給的獎勵理解成是上帝給打的分數(shù),但是上帝不會輕易把他的分數(shù)告訴別人,直到運動會結束了,上帝才會把他的打分全部公開,裁判要做的就是要讓它的打分越來越接近上帝的打分
通過學習兩個神經(jīng)網(wǎng)絡,運動員的得分越來越高,裁判員的打分越來越精準
?
我們通過如下5個步驟來對兩個神經(jīng)網(wǎng)絡做一次更新
1、觀測到當前狀態(tài)st
2、?把狀態(tài)st當作輸入,用策略網(wǎng)絡Π來計算概率分布,然后隨機抽樣得到動作at
3、agent執(zhí)行動作at,這時候環(huán)境會更新狀態(tài)st+1,并給agent一個獎勵rt
4、有了獎勵rt,就可以用TD算法來更新價值網(wǎng)絡的參數(shù)w,也就是讓裁判變得更準確
5、最后用policy gradient策略梯度算法,來更新策略網(wǎng)絡的參數(shù)θ,這會讓運動員的技術更好
更新策略網(wǎng)絡的參數(shù)要用到裁判對動作at的打分,下面具體來講如何更新這兩個神經(jīng)網(wǎng)絡的參數(shù):
1)價值網(wǎng)絡q可以用TD算法來更新
1、首先用價值網(wǎng)絡q來給動作at和at+1打分,這里的動作是根據(jù)策略網(wǎng)絡Π隨機抽樣得到的
2、然后算一下TD target,把計算出來的數(shù)值記作yt,其中γ是折扣率,他讓未來的獎勵沒有當前獎勵的權重更高
3、用梯度下降更新w,使得yt-qt的值越來越小
2)使用策略梯度算法來更新策略網(wǎng)絡Π,讓運動員的得分更高:
這里的函數(shù)V是狀態(tài)價值函數(shù),相當于是這位運動員所有動作的平均分(V是動作價值函數(shù)的期望也即平均值),策略梯度是函數(shù)V關于參數(shù)θ的導數(shù),我們直接用一個g(a,θ)就行了,一個g(a,θ)就是對這個期望的蒙特卡洛近似,既然g(a,θ)是對策略梯度的無偏估計,我們就拿g函數(shù)來代替策略梯度,具體是這樣做的:
首先拿策略網(wǎng)絡Π來隨機抽樣得到動作a,這個隨機抽樣的目的是為了保證樣本的無偏性,必須要根據(jù)Π來做隨機抽樣,否則保證不了無偏性,有了隨機梯度g,就可以做一次梯度上升,其中β是學習率,由于梯度是函數(shù)V關于θ的導數(shù),所以梯度上升可以增加V函數(shù)的值
我們來總結一下Actor-Critic Method:
策略網(wǎng)絡actor觀測到當前的狀態(tài)s,它控制agent做出動作a,這個actor就相當于一個體操運動員,他會做出一個動作,它的目標是讓自己的動作越來越好,所以他要通過學習來讓自己進步,問題是什么樣的動作才算更好呢?
運動員自己并不知道什么樣的動作才算是更好,所以它很難改進自己的技術,為了讓運動員表現(xiàn)的更好,我們請裁判來幫忙,運動員做出動作之后,裁判會根據(jù)狀態(tài)s和動作a來打一個分數(shù),記作q,裁判把分數(shù)q告訴運動員,這樣運動員就有辦法改進自己了
這位運動員要靠裁判打分q來改進自己的技術,這里的技術指的是神經(jīng)網(wǎng)絡里的參數(shù),它通過狀態(tài)s,自己的動作a,以及裁判打分q來近似算出策略梯度,然后做梯度上升來更新參數(shù),通過改善自己的技術,運動員會獲得越來越高的平均分,其實運動員這樣做只是在迎合裁判的喜好而已,運動員獲得的平均分越來越高,原因是運動員在迎合裁判的喜好,使得裁判的打分q越來越高了,更高的q未必能說明這個運動員變得越來越優(yōu)秀了,裁判的水平也很重要,迎合一個二流的裁判并不會讓一個運動員成為一個頂尖的運動員,這就需要一個頂尖的裁判,來打出最準確的分數(shù),所以為了讓運動員變得越來越優(yōu)秀,還需要裁判不斷改進他的打分能力
裁判要靠獎勵r來提高它的打分水平,獎勵r相當于是上帝的判斷,相當于是ground truth,裁判基于狀態(tài)s和動作a來打分,計算出分值q,可以比較兩次相鄰打分qt和qt+1,以及獎勵rt,然后用TD算法來更新價值網(wǎng)絡參數(shù),這樣可以讓裁判打分越來越精準
最后我們過一遍算法:
1、觀測到舊的狀態(tài)st,用策略網(wǎng)絡Π來計算概率分布,再根據(jù)算出的概率,來隨機抽樣得到動作at
2、執(zhí)行動作at,然后環(huán)境會更新st+1并給出一個獎勵rt
3、拿新的狀態(tài)st+1作為輸入,用策略網(wǎng)絡Π計算出新的概率,然后隨機抽樣得到新的動作~at+1,這個動作~at+1只是一個假想的動作而已,拿來算一下q值,agent并不會真正去做~at+1(tiuta)這個動作,算法的每一輪循環(huán)里面agent只做一次動作,agent這一輪已經(jīng)做了動作at,所以就不會再做~at+1了
4、算2次價值網(wǎng)絡的輸出:用st和at作為輸入算出裁判打分qt,用st+1和~at+1算出裁判打分qt+1,這里的~at+1用完就丟掉了,agent并不會真正執(zhí)行~at+1這個動作
5、計算出TD error(預測與TD target之間的差)
6、對價值網(wǎng)絡求導,tensorflow和pytorch系統(tǒng)都可以自動做反向傳播,自動算出q網(wǎng)絡關于參數(shù)w的梯度(這里的梯度是q函數(shù)的梯度),記作dw,t他的形狀和w是完全一樣的,是同樣大小的矩陣或者張量
7、用TD算法來更新價值網(wǎng)絡,讓裁判打分變得更精準這里的δt*dw,t是損失函數(shù)Loss的梯度,做梯度下降,可以讓預測離TD target變得更近
8、對策略網(wǎng)絡Π求導,軟件系統(tǒng)會自動幫你求導,只要你調(diào)用一下gardient函數(shù)就行了,這里的dθ,t和θ的形狀也是一樣的
9、最后一步:用梯度上升來更新策略網(wǎng)絡,讓運動員的平均分更高這里的qt*dθ,t是策略梯度的蒙特卡洛近似
每一輪迭代都做這9個步驟,每一輪迭代都只做一次動作?,觀測一個獎勵,更新一次神經(jīng)網(wǎng)絡的參數(shù)論文和書中在這一步大多數(shù)使用δt而不是qt,使用qt是標準算法,使用δt叫做policy gradien with baseline,這兩種策略梯度的期望完全相等,實際上用baseline效果更好,原因是雖然用不用baseline不影響期望,但是用個好的baseline可以降低方差,讓算法收斂的更快
那么baseline是什么呢?
事實上任何接近qt的數(shù)都可以被認為是baseline,但是這個baseline不能是動作at的函數(shù)
我們可以使用:
來作為baseline
最后總結一下actor-critic這部分的內(nèi)容:
我們的目標函數(shù)是V(Π)的期望,我們希望學到策略Π ,讓V(Π)的期望越大越好,但是直接學Π函數(shù)不容易,所以我們用神經(jīng)網(wǎng)絡來近似Π函數(shù)這個神經(jīng)網(wǎng)絡叫做policy network策略網(wǎng)絡,當時我們計算策略梯度的時候有個困難,就是我們不知道動作價值函數(shù)Q(Π),所以要用神經(jīng)網(wǎng)絡來近似Q(Π)這個神經(jīng)網(wǎng)絡叫做value network價值網(wǎng)絡actor-critic method里面有兩個神經(jīng)網(wǎng)絡,策略網(wǎng)絡Π叫做actor,價值網(wǎng)絡q叫做critic
價值網(wǎng)絡q的作用是輔助訓練策略網(wǎng)絡Π,裁判打的分數(shù)就相當于監(jiān)督學習中的標簽,運動員就是靠裁判打的分數(shù)來改進自己的動作
訓練結束之后,價值網(wǎng)絡q就沒用了,總之呢,actor-critic method的終極目的是用來學習策略網(wǎng)絡,而價值網(wǎng)絡只是作為裁判員起輔助作用,幫助學習,學完了就不需要這個裁判了
該怎么樣訓練這兩個神經(jīng)網(wǎng)絡呢?
策略網(wǎng)絡Π要用到策略梯度算法來訓練, 學習策略網(wǎng)絡Π的目標是讓狀態(tài)價值函數(shù)V的平均值變大
補充一點:使用actor-critic method我們最終既能夠學習策略網(wǎng)絡Π參數(shù)θ使得狀態(tài)價值函數(shù)V的平均值變大,同時也能夠使得價值網(wǎng)絡q打分越來越準(誤差越來越?。?/p>
文章來源:http://www.zghlxwxcb.cn/news/detail-782396.html
接下來我們將探索AlphaGo的基本原理,看看深度強化學習是如何解決實際問題的!文章來源地址http://www.zghlxwxcb.cn/news/detail-782396.html
到了這里,關于深度強化學習——actor-critic算法(4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!