日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

强化学习笔记:Policy-based Approach

發(fā)布時(shí)間:2025/4/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强化学习笔记:Policy-based Approach 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

主要內(nèi)容來(lái)自李宏毅老師的視頻:【李宏毅】2020 最新課程 (完整版) 強(qiáng)化學(xué)習(xí) - 71.作業(yè)十五 ML Lecture 23-1 - Deep Re_嗶哩嗶哩_bilibili

1 強(qiáng)化學(xué)習(xí)概念復(fù)習(xí)

?2 像深度學(xué)習(xí)一樣分析強(qiáng)化學(xué)習(xí)

2.1 深度學(xué)習(xí)三部曲

這是李宏毅教授之前在介紹深度學(xué)習(xí)的時(shí)候說(shuō)提到的三部曲。

step1相當(dāng)于是深度學(xué)習(xí)model,step2相當(dāng)于是損失函數(shù),step3相當(dāng)于梯度下降等參數(shù)更新方法?

2.2 強(qiáng)化學(xué)習(xí)的“step1”

我們以一款類似于“雷霆戰(zhàn)機(jī)”的游戲?yàn)槔?/p>

輸入是當(dāng)前的游戲界面(被表示成一個(gè)向量或者一個(gè)矩陣)

輸出是我們執(zhí)行每個(gè)動(dòng)作的概率

2.3 強(qiáng)化學(xué)習(xí)的“step 2”

給定agent看到的狀態(tài)s,模型的參數(shù)θ,agent會(huì)做出一系列的決策

?

但是,就像2.2中說(shuō)的那樣,我們模型返回的是選擇不同action的概率,所以即便是一個(gè)agent,選擇的action組成的路徑也很有可能是不同的

?所以我們認(rèn)為Rθ的平均值是我們的衡量標(biāo)準(zhǔn)

某個(gè)軌跡出現(xiàn)的概率,這個(gè)的總獎(jiǎng)勵(lì)。 對(duì)所有的按照出現(xiàn)的概率進(jìn)行加權(quán)求和,這個(gè)就是平均的reward。

我們還可以寫(xiě)成上式那樣,從這個(gè)分布采樣一個(gè)軌跡?,然后計(jì)算R(τ)?的期望值,就是你的期望的獎(jiǎng)勵(lì)。 我們要做的事情就是最大化期望獎(jiǎng)勵(lì)。?

?對(duì)于一個(gè)agent,“玩一遍游戲”過(guò)程中的status、action、reward,連起來(lái)就是軌跡

?如果我們選擇一個(gè)agent去“玩游戲”,那么每一種軌跡都有可能會(huì)被采樣到,只不過(guò)是概率問(wèn)題。

?

而某一條軌跡出現(xiàn)的概率是:

?這個(gè)概率取決于兩部分:環(huán)境的行為和 agent 的行為

?

2.4 強(qiáng)化學(xué)習(xí)的“step 3”

同樣地,也是使用梯度下降(但這里我們希望R是越大越好,所以是梯度上升)

?

R(τ)?這個(gè)獎(jiǎng)勵(lì)函數(shù)不需要是可微分的(differentiable),這個(gè)不影響我們解接下來(lái)的問(wèn)題。

舉例來(lái)說(shuō),如果是在 GAN 里面,R(τ)?其實(shí)是一個(gè) discriminator,它就算是沒(méi)有辦法微分,也無(wú)所謂,你還是可以做接下來(lái)的運(yùn)算。

最右邊的一項(xiàng)(分式)就是logP的微分

這個(gè)在2.3中講過(guò),我們通過(guò)采樣N次來(lái)近似這個(gè)求和操作

?注意這里是整個(gè)路徑的R,也就是說(shuō)這里的的計(jì)算不涉及的微分。所以哪怕不可微也可以?

那么,怎么算呢?

我們假設(shè)路徑為

那么我們有:

兩個(gè)黃顏色的式子,是由environment決定的,只有紅顏色的一個(gè)是由agent決定

取log,我們有:

??

?對(duì)于梯度下降,我們有:

?

?

?

我們可以直觀地來(lái)理解上面這個(gè)式子,也就是在你采樣到的數(shù)據(jù)里面, 你采樣到在某一個(gè)狀態(tài) st??要執(zhí)行某一個(gè)動(dòng)作at?, 這個(gè) st??跟 at??它是在整個(gè)軌跡τ?的里面的某一個(gè)狀態(tài)和動(dòng)作的對(duì)。

  • 假設(shè)你在 st??執(zhí)行at?,最后發(fā)現(xiàn)τ?的獎(jiǎng)勵(lì)是正的, 那你就要增加這一項(xiàng)的概率,你就要增加在 st??執(zhí)行 at??的概率。
  • 反之,在 st??執(zhí)行at??會(huì)導(dǎo)致τ?的獎(jiǎng)勵(lì)變成負(fù)的, 你就要減少這一項(xiàng)的概率。

?3 基于策略的強(qiáng)化學(xué)習(xí)

?

?類似于SGD,每一我跑一些agent,然后用這些agent的結(jié)果(s,a的pair)更新模型。再用更新的模型跑另外的一些agent,再更新模型。。。。如此迭代

一般?policy gradient(PG) 采樣的數(shù)據(jù)就只會(huì)用一次。你把這些數(shù)據(jù)采樣起來(lái),然后拿去更新參數(shù),這些數(shù)據(jù)就丟掉了。接著再重新采樣數(shù)據(jù),才能夠去更新參數(shù)

?

?這里用一種方式解釋了為什么前面我們梯度下降的時(shí)候需要加log

我們把強(qiáng)化學(xué)習(xí)看成一個(gè)分類問(wèn)題,那么我們的損失函數(shù)就是交叉熵。(最小化交叉熵就是最大化對(duì)數(shù)似然)

上圖是一個(gè)分類問(wèn)題的示意圖,假設(shè)我們最終希望是執(zhí)行“l(fā)eft”選項(xiàng),那么在分類問(wèn)題中,就是這一個(gè)的item為1,其他的為0。

?

?對(duì)于梯度下降的式子,我們不妨這么看:先遮去R

那么這就是一個(gè)分類問(wèn)題

?

?現(xiàn)在我們是強(qiáng)化學(xué)習(xí)問(wèn)題,有了一個(gè)reward在里面。

我們假設(shè)路徑1的reward為2,路徑2的reward為1

那么可以想象成,選擇left的結(jié)果,我們會(huì)看到兩次;選擇fire的結(jié)果,我們會(huì)看到一次

所以大體框架和分類差不多,只不過(guò)加了一個(gè)權(quán)重罷了

?4 幾個(gè)tips

4.1 加一個(gè)baseline

?????????第一個(gè) tip 是 add 一個(gè) baseline。?如果給定狀態(tài) s 采取動(dòng)作 a 會(huì)給你整場(chǎng)游戲正的獎(jiǎng)勵(lì),就要增加它的概率。如果狀態(tài) s 執(zhí)行動(dòng)作 a,整場(chǎng)游戲得到負(fù)的獎(jiǎng)勵(lì),就要減少這一項(xiàng)的概率。

?????????但在很多游戲里面,獎(jiǎng)勵(lì)總是正的,就是說(shuō)最低都是 0。比如說(shuō)打乒乓球游戲, 你的分?jǐn)?shù)就是介于 0 到 21 分之間,所以 R 總是正的。假設(shè)你直接套用這個(gè)式子, 在訓(xùn)練的時(shí)候告訴模型說(shuō),不管是什么動(dòng)作你都應(yīng)該要把它的概率提升。

???????? 在理想上,這么做并不一定會(huì)有問(wèn)題。因?yàn)殡m然說(shuō) R 總是正的,但它正的量總是有大有小,你在玩乒乓球那個(gè)游戲里面,得到的獎(jiǎng)勵(lì)總是正的,但它是介于 0~21分之間,有時(shí)候你采取某些動(dòng)作可能是得到 0 分,采取某些動(dòng)作可能是得到 20 分。

????????假設(shè)你在某一個(gè)狀態(tài)有 3 個(gè)動(dòng)作 a/b/c可以執(zhí)行。根據(jù)下式,

????????

????????

? ? ? ? 我們要把這 3 項(xiàng)的概率,對(duì)數(shù)概率都拉高。

???????? 但是它們前面權(quán)重的 R 是不一樣的。 R 是有大有小的,權(quán)重小的,它上升的就少,權(quán)重多的,它上升的就大一點(diǎn)。

???????? 因?yàn)檫@個(gè)對(duì)數(shù)概率是一個(gè)概率,所以動(dòng)作 a、b、c 的對(duì)數(shù)概率的和要是 0。 所以上升少的,在做完歸一化(normalize)以后, 它其實(shí)就是下降的,上升的多的,才會(huì)上升。

????????這是一個(gè)理想上的狀況,我們做采樣理論上是希望求出 對(duì)所有可能的 s 跟 a 的pair 進(jìn)行求和。?

? ? ? ? 實(shí)際上,我們真正在訓(xùn)練的時(shí)候不可能是這么做的,只是采樣了少量的 s 跟 a 的pair而已。

????????因?yàn)槲覀冏龅氖遣蓸?#xff0c;有一些動(dòng)作可能從來(lái)都沒(méi)有采樣到。在某一個(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ù)這個(gè)式子,它的每一項(xiàng)的概率都應(yīng)該要上升。

????????會(huì)遇到的問(wèn)題是,因?yàn)?a 沒(méi)有被采樣到,其它動(dòng)作的概率如果都要上升,a 的概率就下降。?

????????所以 a 不一定是一個(gè)不好的動(dòng)作, 它只是沒(méi)被采樣到。但只是因?yàn)樗鼪](méi)被采樣到, 它的概率就會(huì)下降,這個(gè)顯然是有問(wèn)題的。

????????

????????要怎么解決這個(gè)問(wèn)題呢?你會(huì)希望你的獎(jiǎng)勵(lì)不要總是正的。

?????????為了解決獎(jiǎng)勵(lì)總是正的這個(gè)問(wèn)題,你可以把獎(jiǎng)勵(lì)減掉一項(xiàng)叫做 b,這項(xiàng) b 叫做 baseline。你減掉這項(xiàng) b 以后,就可以讓?這一項(xiàng)有正有負(fù)。

????????所以如果得到的總獎(jiǎng)勵(lì)?大于 b 的話,就讓它的概率上升。如果這個(gè)總獎(jiǎng)勵(lì)小于 b,就算它是正的,也是不好的,你就要讓這一項(xiàng)的概率下降。

?4.2?給每一個(gè)動(dòng)作合適的分?jǐn)?shù)(credit)

????????我們?cè)瓉?lái)會(huì)做的事情是,在某一個(gè)狀態(tài),假設(shè)你執(zhí)行了某一個(gè)動(dòng)作 a,它得到的獎(jiǎng)勵(lì),它前面乘上的這一項(xiàng)。

????????這件事情顯然是不公平的,因?yàn)樵谕粓?chǎng)游戲里面 也許有些動(dòng)作是好的,有些動(dòng)作是不好的。 假設(shè)整場(chǎng)游戲的結(jié)果是好的, 并不代表這個(gè)游戲里面每一個(gè)行為都是對(duì)的。若是整場(chǎng)游戲結(jié)果不好, 但不代表游戲里面的所有行為都是錯(cuò)的。

????????所以我們希望可以給每一個(gè)不同的動(dòng)作前面都乘上不同的權(quán)重。每一個(gè)動(dòng)作的不同權(quán)重, 它反映了每一個(gè)動(dòng)作到底是好還是不好。

?????????舉個(gè)例子, 假設(shè)這個(gè)游戲都很短,只有 3~4 個(gè)互動(dòng)。

????????在 sa??執(zhí)行a1??得到 5 分。在sb??執(zhí)行 a2??得到 0 分。在?sc??執(zhí)行?a3??得到 -2 分。 整場(chǎng)游戲下來(lái),你得到 +3 分。

????????那你得到 +3 分 代表在?sb??執(zhí)行動(dòng)作?a2??是好的嗎?

????????并不見(jiàn)得代表?sb??執(zhí)行?a2??是好的。因?yàn)檫@個(gè)正的分?jǐn)?shù),主要來(lái)自于在?sa??執(zhí)行了?a1?,跟在?sb??執(zhí)行 a2??是沒(méi)有關(guān)系的,也許在?sb??執(zhí)行?a2??反而是不好的, 因?yàn)樗鼘?dǎo)致你接下來(lái)會(huì)進(jìn)入?sc?,執(zhí)行?a3??被扣分,所以整場(chǎng)游戲得到的結(jié)果是好的, 并不代表每一個(gè)行為都是對(duì)的。

????????

?????????如果按照我們剛才的講法,整場(chǎng)游戲得到的分?jǐn)?shù)是 3 分,那到時(shí)候在訓(xùn)練的時(shí)候, 每一個(gè)狀態(tài)跟動(dòng)作的對(duì),都會(huì)被乘上 +3。

????????在理想的狀況下,這個(gè)問(wèn)題,如果你采樣夠多就可以被解決。因?yàn)榧僭O(shè)你采樣夠多,在?sb??執(zhí)行?a2??的這件事情,被采樣到很多。

????????就某一場(chǎng)游戲,在?sb??執(zhí)行?a2?,你會(huì)得到 +3 分。 但在另外一場(chǎng)游戲,在?sb??執(zhí)行?a2?,你卻得到了 -7 分。

????????

????????為什么會(huì)得到 -7 分呢? 因?yàn)樵?sb??執(zhí)行?a2??之前, 你在?sa??執(zhí)行?a2??得到 -5 分,-5 分這件事可能也不是在?sb??執(zhí)行?a2??的錯(cuò),這兩件事情,可能是沒(méi)有關(guān)系的,因?yàn)樗劝l(fā)生了,這件事才發(fā)生,所以它們是沒(méi)有關(guān)系的。

?????????假設(shè)我們今天采樣到這項(xiàng)的次數(shù)夠多,把所有發(fā)生這件事情的情況的分?jǐn)?shù)通通都集合起來(lái), 那可能不是一個(gè)問(wèn)題。

????????但現(xiàn)在的問(wèn)題就是,我們采樣的次數(shù)是不夠多的。在采樣的次數(shù)不夠多的情況下,你要給每一個(gè)狀態(tài)跟動(dòng)作對(duì)合理的分?jǐn)?shù),你要讓大家知道它合理的貢獻(xiàn)。

????????怎么給它一個(gè)合理的貢獻(xiàn)呢?

????????一個(gè)做法是計(jì)算這個(gè)對(duì)的獎(jiǎng)勵(lì)的時(shí)候,不把整場(chǎng)游戲得到的獎(jiǎng)勵(lì)全部加起來(lái),只計(jì)算從這一個(gè)動(dòng)作執(zhí)行以后所得到的獎(jiǎng)勵(lì)

????????因?yàn)檫@場(chǎng)游戲在執(zhí)行這個(gè)動(dòng)作之前發(fā)生的事情是跟執(zhí)行這個(gè)動(dòng)作是沒(méi)有關(guān)系的, 所以在執(zhí)行這個(gè)動(dòng)作之前得到多少獎(jiǎng)勵(lì)都不能算是這個(gè)動(dòng)作的功勞。

????????跟這個(gè)動(dòng)作有關(guān)的東西, 只有在執(zhí)行這個(gè)動(dòng)作以后發(fā)生的所有的獎(jiǎng)勵(lì)把它加起來(lái),才是這個(gè)動(dòng)作真正的貢獻(xiàn)。

????????所以在這個(gè)例子里面,在 sb??執(zhí)行a2??這件事情,也許它真正會(huì)導(dǎo)致你得到的分?jǐn)?shù)應(yīng)該是 -2 分而不是 +3 分,因?yàn)榍懊娴?+5 分 并不是執(zhí)行?a2??的功勞。

????????實(shí)際上執(zhí)行?a2??以后,到游戲結(jié)束前, 你只有被扣 2 分而已,所以它應(yīng)該是 -2。

????????那一樣的道理,今天執(zhí)行?a2??實(shí)際上不應(yīng)該是扣 7 分,因?yàn)榍懊婵?5 分,跟在?sb??執(zhí)行?a2??是沒(méi)有關(guān)系的。

?????????在?sb??執(zhí)行?a2?,只會(huì)讓你被扣兩分而已,所以也許在?sb??執(zhí)行?a2?, 你真正會(huì)導(dǎo)致的結(jié)果只有扣兩分而已。

如果要把它寫(xiě)成式子的話是什么樣子呢?如下式所示:

?本來(lái)的權(quán)重是整場(chǎng)游戲的獎(jiǎng)勵(lì)的總和,現(xiàn)在改成從某個(gè)時(shí)間?t開(kāi)始,假設(shè)這個(gè)動(dòng)作是在?t?這個(gè)時(shí)間點(diǎn)所執(zhí)行的,從?t這個(gè)時(shí)間點(diǎn)一直到游戲結(jié)束所有獎(jiǎng)勵(lì)的總和,才真的代表這個(gè)動(dòng)作是好的還是不好的。

4.2.1 折扣回報(bào)

?????????接下來(lái)再更進(jìn)一步,我們把未來(lái)的獎(jiǎng)勵(lì)做一個(gè)折扣(discount),由此得到的回報(bào)被稱為?Discounted Return(折扣回報(bào))

????????為什么要把未來(lái)的獎(jiǎng)勵(lì)做一個(gè)折扣呢?

????????因?yàn)殡m然在某一個(gè)時(shí)間點(diǎn),執(zhí)行某一個(gè)動(dòng)作,會(huì)影響接下來(lái)所有的結(jié)果,有可能在某一個(gè)時(shí)間點(diǎn)執(zhí)行的動(dòng)作,接下來(lái)得到的獎(jiǎng)勵(lì)都是這個(gè)動(dòng)作的功勞。

????????但在比較真實(shí)的情況下, 如果時(shí)間拖得越長(zhǎng),影響力就越小。

???????? 比如說(shuō)在第二個(gè)時(shí)間點(diǎn)執(zhí)行某一個(gè)動(dòng)作, 那我在第三個(gè)時(shí)間點(diǎn)得到的獎(jiǎng)勵(lì)可能是在第二個(gè)時(shí)間點(diǎn)執(zhí)行某個(gè)動(dòng)作的功勞,但是在 100 個(gè)時(shí)間點(diǎn)之后又得到獎(jiǎng)勵(lì),那可能就不是在第二個(gè)時(shí)間點(diǎn)執(zhí)行某一個(gè)動(dòng)作得到的功勞。

????????所以我們實(shí)際上在做的時(shí)候,你會(huì)在 R 前面乘上一個(gè)?discount factor?γ, γ∈[0,1]?,一般會(huì)設(shè)個(gè) 0.9 或 0.99。?

? ? ?

  • γ=0?: 只關(guān)心即時(shí)獎(jiǎng)勵(lì);
  • γ=1?: 未來(lái)獎(jiǎng)勵(lì)等同于即時(shí)獎(jiǎng)勵(lì)。

?????????舉一個(gè)例子, 這是游戲的第 1、2、3、4 回合,假設(shè)你在游戲的第二回合的某一個(gè)st??執(zhí)行at??得到 +1 分,在??執(zhí)行得到 +3 分,在執(zhí)行得到 -5 分,然后第二回合結(jié)束。at??的分?jǐn)?shù)應(yīng)該是:

總結(jié)

以上是生活随笔為你收集整理的强化学习笔记:Policy-based Approach的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。