2021 重啟強(qiáng)化學(xué)習(xí)(1)

009.jpeg

如果想觀看相關(guān)視頻可以在西瓜視頻(賬號(hào)zidea)或者嗶哩嗶哩(賬號(hào)zidea2015)找到我發(fā)布視頻解說,注意頭像和簡(jiǎn)書使用頭像一致。

Deepmind 自從在圍棋戰(zhàn)勝了圍棋世界冠軍之后就開始著手讓 AI 來玩更復(fù)雜游戲 starcraft。我想大家可能和一樣對(duì)于 AI 能夠玩游戲的項(xiàng)目是如何實(shí)現(xiàn)的非常感興趣。興趣歸興趣如果要實(shí)現(xiàn)一個(gè)這樣項(xiàng)目還是具有挑戰(zhàn)性,不過不管有多難,我們還是從基礎(chǔ)做起一步一步。

010.png

概率基礎(chǔ)知識(shí)

首先在開始之前簡(jiǎn)單地回歸一下可能在本次分享中用到一些概率知識(shí)。

隨機(jī)變量以及分布函數(shù)

首先函數(shù)自變量可以從實(shí)數(shù)擴(kuò)展到例如自變量為兩點(diǎn),輸出兩點(diǎn)距離。用大寫字母表示隨機(jī)變量,而用小寫來表示觀測(cè)值。事件用于語言來描述樣本集合,這些樣本具有一定屬性才聚集在一起

\begin{aligned} P(X=0) = 0.5\\ P(X=1) = 0.5 \end{aligned}

概率密度函數(shù)(PDF)

PDF 是 Probability Density Function 的縮寫,表示隨機(jī)變量某一個(gè)確定值出現(xiàn)的可能性,也就是我們熟悉的 PDF。

002.png
003.png

p(x) = \frac{1}{\sqrt{2\pi \sigma^2}}\exp \left(- \frac{(x - \mu)^2}{2 \sigma^2}\right)

期望

對(duì)于連續(xù)分布的期望
E[f(x)] = \int_x p(x)f(x)dx

對(duì)于離散分布的期望
E[f(x)] = \sum_x p(x)f(x)

隨機(jī)抽樣

隨機(jī)采樣就是調(diào)查對(duì)象總體中每個(gè)部分都有同等被抽中的可能,是一種完全依照機(jī)會(huì)均等的原則進(jìn)行的抽樣調(diào)查,被稱為是一種等概率。

術(shù)語

006.png
001.jpg

狀態(tài)(State)

所謂狀態(tài)就是觀測(cè)到游戲畫面的每一幀,也就是從環(huán)境中可以觀察到內(nèi)容,或者理解環(huán)境讓我們觀察到的東西。

012.png

Action

a \in \{left,right,up,down\}

動(dòng)作就是智能體(接下來會(huì)介紹什么是智能體),根據(jù)當(dāng)前狀態(tài)給出的反應(yīng)。隨后我們會(huì)看到

Agent

智能體,在不同強(qiáng)化學(xué)習(xí)任務(wù)中 Agent 就是動(dòng)作(Action)的發(fā)起者,坦克大戰(zhàn)游戲中的 Agent 就是坦克,在無人駕駛中 Agent 就變?yōu)???。

Policy

首先 Policy 是一個(gè)函數(shù),如果是函數(shù),那么就需要有輸入和輸出,在 Policy 函數(shù)中,輸入 State 而輸出是 Agent 執(zhí)行 Action 的概率分布,從而可見即使相同的輸入 State , Policy 也可能輸出不同的 Action,而不是某一個(gè)確定的 Action。

在數(shù)學(xué)上 Policy 函數(shù)表示為 \pi(s,a) \rightarrow [0,1]
\pi(a|s) = P(A=a|S=s)

  • \pi(left|s) = 0.1
  • \pi(right|s) = 0.2
  • \pi(up|s) = 0.6
  • \pi(down|s) = 0.1

從上面公式我們不難發(fā)現(xiàn)強(qiáng)化學(xué)習(xí)主要就是學(xué)習(xí)這個(gè) Policy 函數(shù),只要有了這個(gè) Policy 函數(shù),輸入一個(gè)狀態(tài)后,Policy 就會(huì)做一個(gè)隨機(jī)抽樣來采取動(dòng)作,這里做隨機(jī)抽樣是為來避免對(duì)手通猜透機(jī)器,找到規(guī)律,所以 Policy 策略是隨機(jī)。

reward

R 來表示獎(jiǎng)勵(lì),就是根據(jù)動(dòng)作和狀態(tài)給出一個(gè)分?jǐn)?shù),這個(gè)分?jǐn)?shù)可以理解為獎(jiǎng)勵(lì),如何設(shè)計(jì)獎(jiǎng)勵(lì)這個(gè)一點(diǎn)非常重要,設(shè)計(jì)好的獎(jiǎng)勵(lì)會(huì)事倍功半。

  • 擊毀敵方坦克會(huì)的一定獎(jiǎng)勵(lì)
  • 如果鷹巢被敵方攻破,就會(huì)損失很多獎(jiǎng)勵(lì)

狀態(tài)轉(zhuǎn)移(state transition)

根據(jù)當(dāng)前動(dòng)作和上一個(gè)狀態(tài)我們會(huì)得到新的狀態(tài),
p(s^{\prime}|s,a) = \mathbb{P}(S^{\prime}=s^{\prime}|S=s,A=a)

有關(guān)狀態(tài)轉(zhuǎn)移我們隱馬爾可夫鏈分享以圖解方式已經(jīng)說很清楚,那么狀態(tài)轉(zhuǎn)移是由環(huán)境決定的,游戲中的環(huán)境就是系統(tǒng)。

016.png

Agent 和 Environment 的交互

接下來我們來看一看 Agent 是如何環(huán)境交互的

007.jpg

強(qiáng)化學(xué)習(xí)的隨機(jī)性

  • Policy 根據(jù) state 給出了 Action 隨機(jī)


    017.png
  • Enviroment 根據(jù) Action 和 state 給出下一個(gè)狀態(tài)是隨機(jī)的
018.png
019.png
  • Policy 根據(jù) s_1 給出 a_1
  • Enviroment 根據(jù) s_1,a_1 給出 s_1r_1
  • Policy 繼續(xù)根據(jù) s_2 給出 a_2
    迭代重復(fù)上面的步驟形成一條路徑
    s_1,a_1,r_1,s_2,a_2,r_2,\cdots,s_T,a_T,r_T

回報(bào)(Return)

我們來對(duì)比獎(jiǎng)勵(lì)來說回報(bào),回報(bào)是以當(dāng)前時(shí)刻起向后一系列動(dòng)作得到狀態(tài)的獎(jiǎng)勵(lì)的累加,一直將獎(jiǎng)勵(lì)累積加到游戲結(jié)束最后一個(gè)獎(jiǎng)勵(lì)。

U_t = R_t + R_{t+1} + R_{t+2} + \cdots +

  • 有關(guān) R_tR_{t+1} 之間差異,他們獎(jiǎng)勵(lì)的價(jià)值會(huì)隨著時(shí)間而其價(jià)值會(huì)降低,這個(gè)問題我們來舉一個(gè)例子來簡(jiǎn)單說明一下,由于未來的獎(jiǎng)勵(lì)沒有當(dāng)下獎(jiǎng)勵(lì)更有價(jià)值,所以可以加了一個(gè) discounted 來進(jìn)行調(diào)整,也就是折扣回報(bào)這里 \gamma 表示 \gamma \in [0,1]

那么添加了 \gamma 的回報(bào)也就是折扣回報(bào),如下

U_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \cdots +

還需要說明一下折扣率 \gamma 是一個(gè)超參數(shù),需要認(rèn)為來設(shè)置, \gamma 的設(shè)置會(huì)對(duì)強(qiáng)化學(xué)習(xí)有所影響。當(dāng)某一個(gè)時(shí)刻結(jié)束了,R_t 也就計(jì)算得到小寫 r_t 因?yàn)?U_t 依賴的獎(jiǎng)勵(lì)是一個(gè)隨機(jī)變量,所以 U_t 也是隨機(jī)變量。

我們知道 Policy 生成 \pi(a|s) 而環(huán)境根據(jù)當(dāng)前狀態(tài)和動(dòng)作給出下一個(gè)狀態(tài) s^{\prime} 也就是 p(s^{\prime}|a,s),那么當(dāng)前獎(jiǎng)勵(lì) R_t 是與當(dāng)前 S_t 和動(dòng)作 A_t 有關(guān)。

那么對(duì)于 U_t 就與未來所有時(shí)刻 A_t,A_{t+1},A_{t+2},\cdotsS_t,S_{t+1},S_{t+2},\cdots 都有關(guān)系了

上面介紹什么是回報(bào),對(duì)回報(bào)有了一定了解。我們就可以開始介紹什么是價(jià)值函數(shù),價(jià)值函數(shù)是用來衡量某一狀態(tài)或動(dòng)作狀態(tài)的好壞的,即對(duì)智能體來說是否值得選擇某一狀態(tài)或在某一狀態(tài)下執(zhí)行某一動(dòng)作。

動(dòng)作價(jià)值函數(shù)(Value)

U_t = R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \cdots +
U_t 是一個(gè)隨機(jī)變量,依賴未來所有的動(dòng)作和狀態(tài),U_t 在 t 時(shí)刻并不知道,

Q_{\pi}(s_t,a_t) = E[U_t|S_t=s_t,A_t=a_t]

可以對(duì)U_t 求期望,把里面的隨機(jī)性都用積分積掉,例如雖然我們不知道下一個(gè)時(shí)刻會(huì)發(fā)生什么,例如投擲硬幣,我們不知道下一個(gè)時(shí)刻會(huì)是正面還是背面,不過我們知道出現(xiàn)正面或者背面的概率都是 0.5 假設(shè)上面朝上我們將隨機(jī)變量 X 記做 1 反面記做 0 那么期望就是 0.5 \times 1 + 0.5 \times 0 = 0.5,同樣的道理對(duì) U_t 隨機(jī)變量求期望就可以得到一個(gè)數(shù),即 Q_{\pi}

除了 S_tA_t 其他隨機(jī)變量都被積分積掉,求出的 Q_{\pi} 就是動(dòng)作價(jià)值函數(shù),Q_{\pi}(s_t,a_t)

Q^{*} = \max_{\pi} Q_{\pi}(s_t,a_t)

Q^{*}(s_t,a_t)

狀態(tài)價(jià)值函數(shù)V_{\pi}

意義為基于 t 時(shí)刻的狀態(tài) s_t 能獲得的未來回報(bào)(Return)的期望

V_{\pi} = E_{A}[Q_{\pi}(s_t,A)]

  • 將動(dòng)作看作隨機(jī)變量 A 通過積分將其積掉
  • V_{\pi} 只與 s_t\pi 函數(shù)有關(guān)
  • V_{\pi}可以告訴我們當(dāng)前的狀態(tài)好不好
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容