2023-06-28 02:03:27 來(lái)源 : 博客園
摘要:本文將從實(shí)踐案例角度為大家解讀強(qiáng)化學(xué)習(xí)中的梯度策略、添加基線(baseline)、優(yōu)勢(shì)函數(shù)、動(dòng)作分配合適的分?jǐn)?shù)(credit)。
本文分享自華為云社區(qū)《強(qiáng)化學(xué)習(xí)從基礎(chǔ)到進(jìn)階-案例與實(shí)踐[5]:梯度策略、添加基線(baseline)、優(yōu)勢(shì)函數(shù)、動(dòng)作分配合適的分?jǐn)?shù)(credit)》,作者: 汀丶。
1 策略梯度算法如圖 5.1 所示,強(qiáng)化學(xué)習(xí)有 3 個(gè)組成部分:演員(actor)、環(huán)境和獎(jiǎng)勵(lì)函數(shù)。智能體玩視頻游戲時(shí),演員負(fù)責(zé)操控游戲的搖桿, 比如向左、向右、開火等操作;環(huán)境就是游戲的主機(jī),負(fù)責(zé)控制游戲的畫面、負(fù)責(zé)控制怪獸的移動(dòng)等;獎(jiǎng)勵(lì)函數(shù)就是當(dāng)我們做什么事情、發(fā)生什么狀況的時(shí)候,可以得到多少分?jǐn)?shù), 比如打敗一只怪獸得到 20 分等。同樣的概念用在圍棋上也是一樣的,演員就是 Alpha Go,它要決定棋子落在哪一個(gè)位置;環(huán)境就是對(duì)手;獎(jiǎng)勵(lì)函數(shù)就是圍棋的規(guī)則,贏就是得一分,輸就是負(fù)一分。在強(qiáng)化學(xué)習(xí)里,環(huán)境與獎(jiǎng)勵(lì)函數(shù)不是我們可以控制的,它們是在開始學(xué)習(xí)之前給定的。我們唯一需要做的就是調(diào)整演員里面的策略,使得演員可以得到最大的獎(jiǎng)勵(lì)。演員里面的策略決定了演員的動(dòng)作,即給定一個(gè)輸入,它會(huì)輸出演員現(xiàn)在應(yīng)該要執(zhí)行的動(dòng)作。
(相關(guān)資料圖)
圖 5.1 強(qiáng)化學(xué)習(xí)的組成部分
策略一般記作 ππ。假設(shè)我們使用深度學(xué)習(xí)來(lái)做強(qiáng)化學(xué)習(xí),策略就是一個(gè)網(wǎng)絡(luò)。網(wǎng)絡(luò)里面有一些參數(shù),我們用 θθ來(lái)代表 ππ的參數(shù)。網(wǎng)絡(luò)的輸入是智能體看到的東西,如果讓智能體玩視頻游戲,智能體看到的東西就是游戲的畫面。智能體看到的東西會(huì)影響我們訓(xùn)練的效果。例如,在玩游戲的時(shí)候, 也許我們覺(jué)得游戲的畫面是前后相關(guān)的,所以應(yīng)該讓策略去看從游戲開始到當(dāng)前這個(gè)時(shí)間點(diǎn)之間所有畫面的總和。因此我們可能會(huì)覺(jué)得要用到循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)來(lái)處理它,不過(guò)這樣會(huì)比較難處理。我們可以用向量或矩陣來(lái)表示智能體的觀測(cè),并將觀測(cè)輸入策略網(wǎng)絡(luò),策略網(wǎng)絡(luò)就會(huì)輸出智能體要采取的動(dòng)作。圖 5.2 就是具體的例子,策略是一個(gè)網(wǎng)絡(luò);輸入是游戲的畫面,它通常是由像素組成的;輸出是我們可以執(zhí)行的動(dòng)作,有幾個(gè)動(dòng)作,輸出層就有幾個(gè)神經(jīng)元。假設(shè)我們現(xiàn)在可以執(zhí)行的動(dòng)作有 3 個(gè),輸出層就有 3 個(gè)神經(jīng)元,每個(gè)神經(jīng)元對(duì)應(yīng)一個(gè)可以采取的動(dòng)作。輸入一個(gè)東西后,網(wǎng)絡(luò)會(huì)給每一個(gè)可以采取的動(dòng)作一個(gè)分?jǐn)?shù)。我們可以把這個(gè)分?jǐn)?shù)當(dāng)作概率,演員根據(jù)概率的分布來(lái)決定它要采取的動(dòng)作,比如 0.7 的概率向左走、0.2 的概率向右走、0.1的概率開火等。概率分布不同,演員采取的動(dòng)作就會(huì)不一樣。
圖 5.2 演員的策略
接下來(lái)我們用一個(gè)例子來(lái)說(shuō)明演員與環(huán)境交互的過(guò)程。如圖 5.3 所示,首先演員會(huì)看到一個(gè)視頻游戲的初始畫面,接下來(lái)它會(huì)根據(jù)內(nèi)部的網(wǎng)絡(luò)(內(nèi)部的策略)來(lái)決定一個(gè)動(dòng)作。假設(shè)演員現(xiàn)在決定的動(dòng)作是向右,決定完動(dòng)作以后,它就會(huì)得到一個(gè)獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)代表它采取這個(gè)動(dòng)作以后得到的分?jǐn)?shù)。
我們把游戲初始的畫面記作 s1s1?, 把第一次執(zhí)行的動(dòng)作記作 a1a1?,把第一次執(zhí)行動(dòng)作以后得到的獎(jiǎng)勵(lì)記作 r1r1?。不同的人有不同的記法,有人覺(jué)得在 s1s1? 執(zhí)行 a1a1? 得到的獎(jiǎng)勵(lì)應(yīng)該記為 r2r2?,這兩種記法都可以。演員決定一個(gè)動(dòng)作以后,就會(huì)看到一個(gè)新的游戲畫面s2s2?。把 s2s2? 輸入給演員,演員決定要開火,它可能打敗了一只怪獸,就得到五分。這個(gè)過(guò)程反復(fù)地持續(xù)下去,直到在某一個(gè)時(shí)間點(diǎn)執(zhí)行某一個(gè)動(dòng)作,得到獎(jiǎng)勵(lì)之后,環(huán)境決定這個(gè)游戲結(jié)束。例如,如果在這個(gè)游戲里面,我們控制宇宙飛船去擊殺怪獸,如果宇宙飛船被毀或是把所有的怪獸都清空,游戲就結(jié)束了。
圖 5.3 玩視頻游戲的例子
如圖 5.4 所示,一場(chǎng)游戲稱為一個(gè)回合。將這場(chǎng)游戲里面得到的所有獎(jiǎng)勵(lì)都加起來(lái),就是總獎(jiǎng)勵(lì)(total reward),也就是回報(bào),我們用RR來(lái)表示它。演員要想辦法來(lái)最大化它可以得到的獎(jiǎng)勵(lì)。
圖 5.4 回報(bào)的例子
如圖 5.5 所示,首先,環(huán)境是一個(gè)函數(shù),我們可以把游戲的主機(jī)看成一個(gè)函數(shù),雖然它不一定是神經(jīng)網(wǎng)絡(luò),可能是基于規(guī)則的(rule-based)模型,但我們可以把它看作一個(gè)函數(shù)。這個(gè)函數(shù)一開始先“吐”出一個(gè)狀態(tài)(游戲畫面 s1s1?),接下來(lái)演員看到游戲畫面 s1s1? 以后,它“吐”出動(dòng)作 a1a1?。環(huán)境把動(dòng)作 a1a1? 當(dāng)作它的輸入,再“吐”出新的游戲畫面 s2s2?。演員看到新的游戲畫面s2s2?,再采取新的動(dòng)作 a2a2?。環(huán)境看到 a2a2?,再“吐”出 s3s3? …這個(gè)過(guò)程會(huì)一直持續(xù)下去,直到環(huán)境覺(jué)得應(yīng)該要停止為止。
圖 5.5 演員和環(huán)境
在一場(chǎng)游戲里面,我們把環(huán)境輸出的 ss與演員輸出的動(dòng)作 aa全部組合起來(lái),就是一個(gè)軌跡,即
給定演員的參數(shù) θθ,我們可以計(jì)算某個(gè)軌跡ττ發(fā)生的概率為
我們要窮舉所有可能的軌跡 ττ, 每一個(gè)軌跡 ττ都有一個(gè)概率。
圖 5.6 期望的獎(jiǎng)勵(lì)
比如 θθ對(duì)應(yīng)的模型很強(qiáng),如果有一個(gè)回合 θθ很快就死掉了,因?yàn)檫@種情況很少會(huì)發(fā)生,所以該回合對(duì)應(yīng)的軌跡 ττ的概率就很小;如果有一個(gè)回合 θθ一直沒(méi)死,因?yàn)檫@種情況很可能發(fā)生,所以該回合對(duì)應(yīng)的軌跡 ττ的概率就很大。我們可以根據(jù) θθ算出某一個(gè)軌跡 ττ出現(xiàn)的概率,接下來(lái)計(jì)算 ττ的總獎(jiǎng)勵(lì)。總獎(jiǎng)勵(lì)使用 ττ出現(xiàn)的概率進(jìn)行加權(quán),對(duì)所有的 ττ進(jìn)行求和,就是期望值。給定一個(gè)參數(shù),我們可以計(jì)算期望值為
圖 5.7 策略梯度
更新完模型以后,我們要重新采樣數(shù)據(jù)再更新模型。注意,一般**策略梯度(policy gradient,PG)**采樣的數(shù)據(jù)只會(huì)用一次。我們采樣這些數(shù)據(jù),然后用這些數(shù)據(jù)更新參數(shù),再丟掉這些數(shù)據(jù)。接著重新采樣數(shù)據(jù),才能去更新參數(shù)。
接下來(lái)我們講一些實(shí)現(xiàn)細(xì)節(jié)。如圖 5.8 所示,我們可以把強(qiáng)化學(xué)習(xí)想成一個(gè)分類問(wèn)題,這個(gè)分類問(wèn)題就是輸入一個(gè)圖像,輸出某個(gè)類。在解決分類問(wèn)題時(shí),我們要收集一些訓(xùn)練數(shù)據(jù),數(shù)據(jù)中要有輸入與輸出的對(duì)。在實(shí)現(xiàn)的時(shí)候,我們把狀態(tài)當(dāng)作分類器的輸入,就像在解決圖像分類的問(wèn)題,只是現(xiàn)在的類不是圖像里面的東西,而是看到這張圖像我們要采取什么樣的動(dòng)作,每一個(gè)動(dòng)作就是一個(gè)類。比如第一個(gè)類是向左,第二個(gè)類是向右,第三個(gè)類是開火。
在解決分類問(wèn)題時(shí),我們要有輸入和正確的輸出,要有訓(xùn)練數(shù)據(jù)。但在強(qiáng)化學(xué)習(xí)中,我們通過(guò)采樣來(lái)獲得訓(xùn)練數(shù)據(jù)。假設(shè)在采樣的過(guò)程中,在某個(gè)狀態(tài)下,我們采樣到要采取動(dòng)作 aa, 那么就把動(dòng)作 aa當(dāng)作標(biāo)準(zhǔn)答案(ground truth)。比如,我們?cè)谀硞€(gè)狀態(tài)下,采樣到要向左。因?yàn)槭遣蓸?,所以向左這個(gè)動(dòng)作不一定概率最高。假設(shè)我們采樣到向左,在訓(xùn)練的時(shí)候,讓智能體調(diào)整網(wǎng)絡(luò)的參數(shù), 如果看到某個(gè)狀態(tài),我們就向左。在一般的分類問(wèn)題里面,我們?cè)趯?shí)現(xiàn)分類的時(shí)候,目標(biāo)函數(shù)都會(huì)寫成最小化交叉熵(cross entropy),最小化交叉熵就是最大化對(duì)數(shù)似然(log likelihood)。
圖 5.8 策略梯度實(shí)現(xiàn)細(xì)節(jié)
我們?cè)诮鉀Q分類問(wèn)題的時(shí)候,目標(biāo)函數(shù)就是最大化或最小化的對(duì)象,因?yàn)槲覀儸F(xiàn)在是最大化似然(likelihood),所以其實(shí)是最大化,我們要最大化
我們可在 PyTorch 里調(diào)用現(xiàn)成的函數(shù)來(lái)自動(dòng)計(jì)算損失函數(shù),并且把梯度計(jì)算出來(lái)。這是一般的分類問(wèn)題,強(qiáng)化學(xué)習(xí)與分類問(wèn)題唯一不同的地方是損失前面乘一個(gè)權(quán)重————整場(chǎng)游戲得到的總獎(jiǎng)勵(lì) R(τ)R(τ),而不是在狀態(tài)ss采取動(dòng)作aa的時(shí)候得到的獎(jiǎng)勵(lì),即
我們要把每一筆訓(xùn)練數(shù)據(jù),都使用 R(τ)R(τ) 進(jìn)行加權(quán)。如圖 5.9 所示,我們使用 PyTorch 或 TensorFlow 之類的深度學(xué)習(xí)框架計(jì)算梯度就結(jié)束了,與一般分類問(wèn)題差不多。
圖 5.9 自動(dòng)求梯度
2 策略梯度實(shí)現(xiàn)技巧下面我們介紹一些在實(shí)現(xiàn)策略梯度時(shí)可以使用的技巧。
2.1 技巧 1:添加基線第一個(gè)技巧:添加基線(baseline)。如果給定狀態(tài) ss采取動(dòng)作 aa,整場(chǎng)游戲得到正的獎(jiǎng)勵(lì),就要增加 (s,a)(s,a) 的概率。如果給定狀態(tài) ss執(zhí)行動(dòng)作 aa,整場(chǎng)游戲得到負(fù)的獎(jiǎng)勵(lì),就要減小 (s,a)(s,a) 的概率。但在很多游戲里面,獎(jiǎng)勵(lì)總是正的,最低都是 0。比如打乒乓球游戲, 分?jǐn)?shù)為 0 ~ 21 分,所以R(τ)R(τ)總是正的。假設(shè)我們直接使用式(5.5),在訓(xùn)練的時(shí)候告訴模型,不管是什么動(dòng)作,都應(yīng)該要把它的概率提升。
雖然R(τ)R(τ)總是正的,但它的值是有大有小的,比如我們?cè)谕嫫古仪蛴螒驎r(shí),得到的獎(jiǎng)勵(lì)總是正的,但采取某些動(dòng)作可能得到 0 分,采取某些動(dòng)作可能得到 20 分。
如圖 5.10 所示,假設(shè)我們?cè)谀骋粋€(gè)狀態(tài)有 3 個(gè)動(dòng)作 a、b、c可以執(zhí)行。根據(jù)式(5.6),我們要把這 3 個(gè)動(dòng)作的概率,對(duì)數(shù)概率都提高。 但是它們前面的權(quán)重R(τ)R(τ)是不一樣的。權(quán)重是有大有小的,權(quán)重小的,該動(dòng)作的概率提高的就少;權(quán)重大的,該動(dòng)作的概率提高的就多。 因?yàn)閷?duì)數(shù)概率是一個(gè)概率,所以動(dòng)作 a、b、c 的對(duì)數(shù)概率的和是 0。 所以提高少的,在做完歸一化(normalize)以后,動(dòng)作 b 的概率就是下降的;提高多的,該動(dòng)作的概率才會(huì)上升。
圖 5.10 動(dòng)作的概率的例子
這是一個(gè)理想的情況,但是實(shí)際上,我們是在做采樣本來(lái)這邊應(yīng)該是一個(gè)期望(expectation),對(duì)所有可能的ss與aa的對(duì)進(jìn)行求和。 但我們真正在學(xué)習(xí)的時(shí)候,只是采樣了少量的ss與aa的對(duì)。 因?yàn)槲覀冏龅氖遣蓸?,所以有一些?dòng)作可能從來(lái)都沒(méi)有被采樣到。如圖 5.11 所示,在某一個(gè)狀態(tài),雖然可以執(zhí)行的動(dòng)作有 a、b、c,但我們可能只采樣到動(dòng)作 b 或者 只采樣到動(dòng)作 c,沒(méi)有采樣到動(dòng)作 a。但現(xiàn)在所有動(dòng)作的獎(jiǎng)勵(lì)都是正的,所以根據(jù)式(5.6),在這個(gè)狀態(tài)采取a、b、c的概率都應(yīng)該要提高。我們會(huì)遇到的問(wèn)題是,因?yàn)?a 沒(méi)有被采樣到,所以其他動(dòng)作的概率如果都要提高,a 的概率就要下降。 所以a不一定是一個(gè)不好的動(dòng)作, 它只是沒(méi)有被采樣到。但因?yàn)?a 沒(méi)有被采樣到,它的概率就會(huì)下降,這顯然是有問(wèn)題的。要怎么解決這個(gè)問(wèn)題呢?我們會(huì)希望獎(jiǎng)勵(lì)不總是正的。
圖 5.11 采樣動(dòng)作的問(wèn)題
為了解決獎(jiǎng)勵(lì)總是正的的問(wèn)題,我們可以把獎(jiǎng)勵(lì)減 bb,即
2.2 技巧 2:分配合適的分?jǐn)?shù)第二個(gè)技巧:給每一個(gè)動(dòng)作分配合適的分?jǐn)?shù)(credit)。如式(5.7)所示,只要在同一個(gè)回合里面,在同一場(chǎng)游戲里面,所有的狀態(tài)-動(dòng)作對(duì)就使用同樣的獎(jiǎng)勵(lì)項(xiàng)進(jìn)行加權(quán)。
圖 5.12 分配合適的分?jǐn)?shù)
分配合適的分?jǐn)?shù)這一技巧可以表達(dá)為
原來(lái)的權(quán)重是整場(chǎng)游戲的獎(jiǎng)勵(lì)的總和,現(xiàn)在改成從某個(gè)時(shí)刻 tt開始,假設(shè)這個(gè)動(dòng)作是在 tt開始執(zhí)行的,從 tt一直到游戲結(jié)束所有獎(jiǎng)勵(lì)的總和才能代表這個(gè)動(dòng)作的好壞。
接下來(lái)更進(jìn)一步,我們把未來(lái)的獎(jiǎng)勵(lì)做一個(gè)折扣,即
3 REINFORCE:蒙特卡洛策略梯度如圖 5.13 所示,蒙特卡洛方法可以理解為算法完成一個(gè)回合之后,再利用這個(gè)回合的數(shù)據(jù)去學(xué)習(xí),做一次更新。因?yàn)槲覀円呀?jīng)獲得了整個(gè)回合的數(shù)據(jù),所以也能夠獲得每一個(gè)步驟的獎(jiǎng)勵(lì),我們可以很方便地計(jì)算每個(gè)步驟的未來(lái)總獎(jiǎng)勵(lì),即回報(bào) GtGt? 。GtGt? 是未來(lái)總獎(jiǎng)勵(lì),代表從這個(gè)步驟開始,我們能獲得的獎(jiǎng)勵(lì)之和。$G_1 代表我們從第一步開始,往后能夠獲得的總獎(jiǎng)勵(lì)。代表我們從第一步開始,往后能夠獲得的總獎(jiǎng)勵(lì)。G_2$ 代表從第二步開始,往后能夠獲得的總獎(jiǎng)勵(lì)。
相比蒙特卡洛方法一個(gè)回合更新一次,時(shí)序差分方法是每個(gè)步驟更新一次,即每走一步,更新一次,時(shí)序差分方法的更新頻率更高。時(shí)序差分方法使用Q函數(shù)來(lái)近似地表示未來(lái)總獎(jiǎng)勵(lì) GtGt?。
圖 5.13 蒙特卡洛方法與時(shí)序差分方法
圖 5.14 REINFORCE算法
獨(dú)熱編碼(one-hot encoding)通常用于處理類別間不具有大小關(guān)系的特征。 例如血型,一共有4個(gè)取值(A型、B型、AB型、O型),獨(dú)熱編碼會(huì)把血型變成一個(gè)4維稀疏向量,A型血表示為(1,0,0,0),B型血表示為(0,1,0,0),AB型血表示為(0,0,1,0),O型血表示為(0,0,0,1)。
如圖 5.15 所示,手寫數(shù)字識(shí)別是一個(gè)經(jīng)典的多分類問(wèn)題,輸入是一張手寫數(shù)字的圖片,經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)處理后,輸出的是各個(gè)類別的概率。我們希望輸出的概率分布盡可能地貼近真實(shí)值的概率分布。因?yàn)檎鎸?shí)值只有一個(gè)數(shù)字 9,所以如果我們用獨(dú)熱向量的形式給它編碼,也可以把真實(shí)值理解為一個(gè)概率分布,9 的概率就是1,其他數(shù)字的概率就是 0。神經(jīng)網(wǎng)絡(luò)的輸出一開始可能會(huì)比較平均,通過(guò)不斷地迭代、訓(xùn)練優(yōu)化之后,我們會(huì)希望輸出9 的概率可以遠(yuǎn)高于輸出其他數(shù)字的概率。
圖 5.15 監(jiān)督學(xué)習(xí)例子:手寫數(shù)字識(shí)別
如圖 5.16 所示,我們所要做的就是提高輸出 9 的概率,降低輸出其他數(shù)字的概率,讓神經(jīng)網(wǎng)絡(luò)輸出的概率分布能夠更貼近真實(shí)值的概率分布。我們可以用交叉熵來(lái)表示兩個(gè)概率分布之間的差距。
圖 5.16 提高數(shù)字9的概率
我們看一下監(jiān)督學(xué)習(xí)的優(yōu)化流程,即怎么讓輸出逼近真實(shí)值。如圖 5.17 所示,監(jiān)督學(xué)習(xí)的優(yōu)化流程就是將圖片作為輸入傳給神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)會(huì)判斷圖片中的數(shù)字屬于哪一類數(shù)字,輸出所有數(shù)字可能的概率,再計(jì)算交叉熵,即神經(jīng)網(wǎng)絡(luò)的輸出 YiYi? 和真實(shí)的標(biāo)簽值 Yi′Yi′? 之間的距離 ?∑Yi′?log?(Yi)?∑Yi′??log(Yi?)。我們希望盡可能地縮小這兩個(gè)概率分布之間的差距,計(jì)算出的交叉熵可以作為損失函數(shù)傳給神經(jīng)網(wǎng)絡(luò)里面的優(yōu)化器進(jìn)行優(yōu)化,以自動(dòng)進(jìn)行神經(jīng)網(wǎng)絡(luò)的參數(shù)更新。
圖 5.17 優(yōu)化流程
類似地,如圖 5.18 所示,策略梯度預(yù)測(cè)每一個(gè)狀態(tài)下應(yīng)該要輸出的動(dòng)作的概率,即輸入狀態(tài) stst?,輸出動(dòng)作atat?的概率,比如 0.02、0.08、0.9。實(shí)際上輸出給環(huán)境的動(dòng)作是隨機(jī)選擇一個(gè)動(dòng)作,比如我們選擇向右這個(gè)動(dòng)作,它的獨(dú)熱向量就是(0,0,1)。我們把神經(jīng)網(wǎng)絡(luò)的輸出和實(shí)際動(dòng)作代入交叉熵的公式就可以求出輸出動(dòng)作的概率和實(shí)際動(dòng)作的概率之間的差距。但實(shí)際的動(dòng)作 atat? 只是我們輸出的真實(shí)的動(dòng)作,它不一定是正確的動(dòng)作,它不能像手寫數(shù)字識(shí)別一樣作為一個(gè)正確的標(biāo)簽來(lái)指導(dǎo)神經(jīng)網(wǎng)絡(luò)朝著正確的方向更新,所以我們需要乘一個(gè)獎(jiǎng)勵(lì)回報(bào) GtGt?。GtGt?相當(dāng)于對(duì)真實(shí)動(dòng)作的評(píng)價(jià)。如果 GtGt? 越大,未來(lái)總獎(jiǎng)勵(lì)越大,那就說(shuō)明當(dāng)前輸出的真實(shí)的動(dòng)作就越好,損失就越需要重視。如果 GtGt? 越小,那就說(shuō)明動(dòng)作 atat? 不是很好,損失的權(quán)重就要小一點(diǎn)兒,優(yōu)化力度也要小一點(diǎn)兒。通過(guò)與手寫數(shù)字識(shí)別的一個(gè)對(duì)比,我們就知道為什么策略梯度損失會(huì)構(gòu)造成這樣。
圖 5.18 策略梯度損失
如圖 5.19 所示,實(shí)際上我們?cè)谟?jì)算策略梯度損失的時(shí)候,要先對(duì)實(shí)際執(zhí)行的動(dòng)作取獨(dú)熱向量,再獲取神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的動(dòng)作概率,將它們相乘,我們就可以得到 log?π(at∣st,θ)logπ(at?∣st?,θ),這就是我們要構(gòu)造的損失。因?yàn)槲覀兛梢垣@取整個(gè)回合的所有的軌跡,所以我們可以對(duì)這一條軌跡里面的每個(gè)動(dòng)作都去計(jì)算一個(gè)損失。把所有的損失加起來(lái),我們?cè)賹⑵洹叭印苯o Adam 的優(yōu)化器去自動(dòng)更新參數(shù)就好了。
圖 5.19 損失計(jì)算
圖 5.20 所示為REINFORCE 算法示意,首先我們需要一個(gè)策略模型來(lái)輸出動(dòng)作概率,輸出動(dòng)作概率后,通過(guò)sample()函數(shù)得到一個(gè)具體的動(dòng)作,與環(huán)境交互后,我們可以得到整個(gè)回合的數(shù)據(jù)。得到回合數(shù)據(jù)之后,我們?cè)偃?zhí)行l(wèi)earn()函數(shù),在learn()函數(shù)里面,我們就可以用這些數(shù)據(jù)去構(gòu)造損失函數(shù),“扔”給優(yōu)化器優(yōu)化,更新我們的策略模型。
圖 5.20 REINFORCE算法示意
點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~
世界時(shí)訊:如何在網(wǎng)上發(fā)帖?_如何在網(wǎng)上發(fā)帖
2023-06-28鷁_關(guān)于鷁簡(jiǎn)述-全球熱頭條
2023-06-28【全球播資訊】云南梅里雪山飛來(lái)寺等景點(diǎn)實(shí)...
2023-06-28今年有4個(gè)“伏”!北京多家醫(yī)療機(jī)構(gòu)啟動(dòng)三...
2023-06-28焦點(diǎn)日?qǐng)?bào):良品鋪?zhàn)咏袢沾笞诮灰渍蹆r(jià)成交29...
2023-06-28辟謠!農(nóng)業(yè)農(nóng)村部:從未設(shè)立“農(nóng)商資源整合...
2023-06-28