基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
論文鏈接:http://people.csail.mit.edu/branavan/papers/acl2011.pdf
文章目錄
- 1. 背景介紹
- 2. 將攻略文本引入值函數(shù) Q(s,a)Q(s, a)Q(s,a) 評價(jià)
- 2.1 復(fù)雜環(huán)境下使用傳統(tǒng) Q(s,a)Q(s, a)Q(s,a) 函數(shù)的缺陷
- 2.2 設(shè)計(jì) Q(s,a,d)Q(s, a, d)Q(s,a,d) 神經(jīng)網(wǎng)絡(luò)
- 2.3 模型訓(xùn)練流程
- 3. 在《文明》游戲中進(jìn)行算法驗(yàn)證
- 3. 1 狀態(tài)-行為設(shè)置
- 3. 2 效用設(shè)置
- 3. 3 關(guān)鍵句提取函數(shù)?→\overrightarrow\varnothing??、詞性分類函數(shù)ψ→\overrightarrow\psiψ?、效用值計(jì)算函數(shù)fk→\overrightarrow{f_k}fk??
論文主旨:本文設(shè)計(jì)了一種能夠讀懂 “游戲攻略” 并根據(jù) “游戲攻略” 進(jìn)行行為決策的算法框架。其中游戲攻略是指前人總結(jié)出來的游戲經(jīng)驗(yàn),以文字的形式表達(dá)。該算法將 “游戲攻略” 融入到行為值函數(shù) Q(s,a)Q(s, a)Q(s,a) 的評價(jià)中,使得在算法在評價(jià)狀態(tài) sss 下采取行為 aaa 的效用 Q(s,a)Q(s, a)Q(s,a) 時(shí)會參考人類的先驗(yàn)知識(游戲攻略),即 Q(s,a,d)Q(s, a, d)Q(s,a,d),ddd 代表游戲指引 documentdocumentdocument。
1. 背景介紹
大多數(shù)在我們玩游戲時(shí)都會接觸到游戲指引,它告訴你這個(gè)游戲的基本規(guī)則或是游戲的基本操作方法,不僅如此,每個(gè)游戲都會存在一些獨(dú)特的游戲攻略,這些攻略大多由一些玩過數(shù)百個(gè)小時(shí)的玩家們總結(jié)經(jīng)驗(yàn)得到。通過這些游戲指引,每個(gè)新手玩家都能從中學(xué)習(xí)到不少經(jīng)驗(yàn)從而快速提升。那么,當(dāng)我們想訓(xùn)練一個(gè) Agent 模型來玩一款新游戲時(shí),我們同樣期望這些 “游戲指引” 能在我們 Agent 學(xué)習(xí)的時(shí)候起到啟發(fā)的作用,在有了先驗(yàn)知識輔助的情況下,Agent 便能夠更加快速和更加擬人化的進(jìn)行行為決策。
但使用人類先驗(yàn)知識的一大難題在于,人們之間溝通常使用文字交流,攻略指引也大多使用文字進(jìn)行記載,機(jī)器如何能看懂文本形式的游戲指引呢?本文通過蒙特卡洛學(xué)習(xí)的方法來解決該難題,使得經(jīng)過訓(xùn)練后的模型能夠具備:“語義分析” + ”行為決策“ 這兩大能力。
- 語義分析是指模型能夠提取出一句話中對狀態(tài)和行為的描述詞,并將這些詞準(zhǔn)確的對應(yīng)到游戲狀態(tài)中去。例如,“在游戲的初始階段盡量選擇礦產(chǎn)資源豐富的地區(qū)建造基地” 這一句游戲攻略中,模型需要提取出 “游戲初期” 這一代表狀態(tài)的詞語和 “在礦產(chǎn)資源豐富的地區(qū)建造基地” 這一代表行為的詞語。
- 行為決策是指在提取到了攻略中的關(guān)鍵詞后相應(yīng)地在游戲初期的狀態(tài)下采取在建議地區(qū)進(jìn)行基地建造的行為。
一種最直觀完成上述任務(wù)的方法是訓(xùn)練一種 “直譯” 模型,能夠?qū)θ祟惖恼Z句進(jìn)行翻譯,提取出語句中狀態(tài)關(guān)鍵詞并與游戲中的狀態(tài)建立一對一的關(guān)系——這也是前人們大多的工作。但這種方法對于復(fù)雜的游戲環(huán)境來說是無法實(shí)現(xiàn)的,例如想要建立 “礦產(chǎn)資源豐富的地區(qū)” 這個(gè)狀態(tài)描述詞和游戲中的某個(gè)具體狀態(tài)之間的聯(lián)系就非常復(fù)雜,如何定義礦產(chǎn)資源封不豐富?這對于同一局游戲中的不同時(shí)刻的定義都應(yīng)該有所不同。再例如,“進(jìn)攻敵方基地” 這一個(gè)詞語包含了許多原子行為,要想與游戲內(nèi)的某一個(gè)具體的行為建立一對一的關(guān)系也是非常困難的。因此,本文并不采取 “直譯” 再 “映射” 的方法,而是直接將整個(gè)攻略文本作為一個(gè)參考輸入,在計(jì)算行為值函數(shù) Q(s,a)Q(s, a)Q(s,a) 的時(shí)候會去參考攻略文本中的內(nèi)容,將 Q(s,a)Q(s, a)Q(s,a) 轉(zhuǎn)變?yōu)?Q(s,a,d)Q(s, a, d)Q(s,a,d),通過人類先驗(yàn)知識來輔助行為值函數(shù)進(jìn)行效用評判。
2. 將攻略文本引入值函數(shù) Q(s,a)Q(s, a)Q(s,a) 評價(jià)
2.1 復(fù)雜環(huán)境下使用傳統(tǒng) Q(s,a)Q(s, a)Q(s,a) 函數(shù)的缺陷
在介紹該小節(jié)之前,我們先來回顧一下行為值函數(shù)(action-value function)Q(s,a)Q(s, a)Q(s,a) 的定義,行為值函數(shù)的輸入是一個(gè) <行為 - 狀態(tài)> 的組合,是評價(jià)在某一特定狀態(tài)下采取某個(gè)特定行為得到的效用值。但在一些復(fù)雜游戲中,直接學(xué)習(xí) Q(s,a)Q(s, a)Q(s,a) 函數(shù)會存在兩個(gè)致命的缺陷:
引入 “游戲攻略” 能很好的解決以上兩個(gè)問題:由于將 “游戲攻略” 作為了一個(gè)參考輸入,當(dāng) Q(s,a,d)Q(s, a, d)Q(s,a,d) 在進(jìn)行效用評判時(shí),攻略 ddd 中的內(nèi)容會對狀態(tài) sss 和行為 aaa 起到約束的作用,即引導(dǎo)評價(jià)函數(shù)參考人類的先驗(yàn)知識來評價(jià)行為的效用值;另外,引入 “游戲攻略” 能夠幫助模型找到狀態(tài)之間的 “相似性”,例如 “盡量在河邊建立基地” 這一句話語中,對于一張復(fù)雜地圖來說,河邊包含了若干個(gè)不同的地點(diǎn),但倘若沒有攻略信息,模型會再每一個(gè)河邊嘗試不同的行為得到 <s, a> 的效用集,但加入了攻略后,模型再訓(xùn)練過程后會意識到雖然有這么多不同的狀態(tài),但它們都有一個(gè)相似之處——都在河邊,這樣在一些相似的狀態(tài)下模型就會采取相似的動作行為了。
2.2 設(shè)計(jì) Q(s,a,d)Q(s, a, d)Q(s,a,d) 神經(jīng)網(wǎng)絡(luò)
針對較為復(fù)雜的游戲環(huán)境,我們通常無法枚舉所有可能狀態(tài),因此本文使用近似擬合的手段來搭建評價(jià)函數(shù)模型。本文使用多層神經(jīng)網(wǎng)絡(luò)搭建模型,其中隱藏層用于分析攻略文本中各句子之間的關(guān)系以及所包含的行為和狀態(tài),整個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下:
- 輸入層 x→\overrightarrow{x}x:輸入 (s,a,d)(s, a, d)(s,a,d) 向量,分別代表當(dāng)前狀態(tài)、決策行為、文本攻略。
- 隱藏層1:該層包含兩個(gè)子集 y→,z→\overrightarrow{y}, \overrightarrow{z}y?,z,這兩個(gè)子集對文本攻略進(jìn)行分析,提取出狀態(tài)、行為的關(guān)鍵詞。
- 隱藏層2:該層接收輸入(s,a,d,yi,zjs, a, d, y_i, z_js,a,d,yi?,zj?),通過映射關(guān)系 fff 計(jì)算最后結(jié)果。
- 輸出層:輸出最終效用值 QQQ。
其中,隱藏層的設(shè)計(jì)是本文中最重要的設(shè)計(jì)環(huán)節(jié),接下來我們著重剖析兩個(gè)隱藏層的設(shè)計(jì)。
隱藏層1 —— 提取攻略文本中關(guān)鍵詞信息
隱藏層1的主要作用是為了提取攻略文本中包含 “狀態(tài)”、“行為” 的關(guān)鍵詞信息,該層一共分為兩個(gè)子集 y→,z→\overrightarrow{y}, \overrightarrow{z}y?,z。其中,y→\overrightarrow{y}y? 用于判斷整段攻略文本中哪一句話和當(dāng)下的狀態(tài)-行為最貼切,本文使用線性log函數(shù)來計(jì)算攻略文本中第iii句話的貼切程度:
p(yi∣st,at,d)∝eu→??(yi,st,at,d)p(y_i|s_t, a_t, d) \propto e^{\overrightarrow{u}·\varnothing(y_i, s_t, a_t, d)} p(yi?∣st?,at?,d)∝eu??(yi?,st?,at?,d)
note: ?(yi,st,at,d)\varnothing(y_i, s_t, a_t, d)?(yi?,st?,at?,d)是一個(gè)特征函數(shù)(見3.3),我們需要學(xué)習(xí)的參數(shù)是向量 u→\overrightarrow{u}u。
通過上述計(jì)算我們能夠選擇出整段攻略中最符合當(dāng)前狀態(tài)的一句話,隱藏層的第二個(gè)子集 z→\overrightarrow{z}z 用于判斷該句子中每一個(gè)單詞的詞性,將每個(gè)歸類為以下三類中的一類:狀態(tài)描述詞、行為描述詞、背景詞。具體分類方法使用 “語法樹” 的結(jié)構(gòu)進(jìn)行詞性歸類,在給定分類規(guī)則 qi→\overrightarrow{q_i}qi?? 的情況下,句子中第 iii 個(gè)單詞的分類標(biāo)簽計(jì)算如下:
p(ei→∣yi,qi)=∏jp(ei∣j,e1:j?1→,yi,qi)p(ei∣j,e1:j?1→,yi,qi)=ev→?ψ(ej,j,e1:j?1→,yi,qi)p(\overrightarrow{e_i}|y_i, q_i) = \prod_j p(e_i|j, \overrightarrow{e_{1:j-1}},y_i, q_i )\\ p(e_i|j, \overrightarrow{e_{1:j-1}},y_i, q_i ) = e^{\overrightarrow{v}·\psi(e_j, j, \overrightarrow{e_{1:j-1}},y_i, q_i)} p(ei??∣yi?,qi?)=j∏?p(ei?∣j,e1:j?1??,yi?,qi?)p(ei?∣j,e1:j?1??,yi?,qi?)=ev?ψ(ej?,j,e1:j?1??,yi?,qi?)
note: ψ(ej,j,e1:j?1→,yi,qi)\psi(e_j, j, \overrightarrow{e_{1:j-1}},y_i, q_i)ψ(ej?,j,e1:j?1??,yi?,qi?)是一個(gè)特征函數(shù)(見3.3),我們需要學(xué)習(xí)的參數(shù)是向量 v→\overrightarrow{v}v。
其中,e1:j?1→\overrightarrow{e_{1:j-1}}e1:j?1?? 代表在目前到第 jjj 個(gè)單詞之前,根據(jù)前面的單詞判斷出來的詞性標(biāo)簽。z→\overrightarrow{z}z 中包含了攻略段落中每一句話每一個(gè)單詞的詞性標(biāo)簽,但由于我們只需要整個(gè)攻略段落中最符合當(dāng)前v狀態(tài)的句子,因此 z→\overrightarrow{z}z 會根據(jù) y→\overrightarrow{y}y? 判斷出的最符合語句輸出相應(yīng)句子的單詞詞性標(biāo)簽。
隱藏層2 —— 根據(jù)關(guān)鍵詞、狀態(tài)、行為進(jìn)行效用評價(jià)
在獲得了第一個(gè)隱藏層的輸出 yiy_iyi? 和 ziz_izi? 后我們就可以進(jìn)行效用計(jì)算了,計(jì)算公式如下:
Q(st,at,d)=w→?fk(st,at,d,yi,zi)Q(s_t, a_t, d) = \overrightarrow{w} · f_k(s_t, a_t, d, y_i, z_i) Q(st?,at?,d)=w?fk?(st?,at?,d,yi?,zi?)
note: fk(st,at,d,yi,zi)f_k(s_t, a_t, d, y_i, z_i)fk?(st?,at?,d,yi?,zi?)是一個(gè)固定的值函數(shù)(見3.3),我們需要學(xué)習(xí)的參數(shù)是向量 w→\overrightarrow{w}w。
2.3 模型訓(xùn)練流程
對于上述神經(jīng)網(wǎng)絡(luò)模型,文中采取在線學(xué)習(xí)的策略:
- 對于每一個(gè)當(dāng)前狀態(tài) sts_tst?:
- 根據(jù) Q(s,a,d)Q(s, a, d)Q(s,a,d) 函數(shù)選擇行為,并與環(huán)境互動
- 得到環(huán)境反饋分?jǐn)?shù)(在文明游戲中,玩家會得到根據(jù)當(dāng)前態(tài)勢評價(jià)的實(shí)時(shí)分?jǐn)?shù),因此不用等到游戲結(jié)束)
- 更新神經(jīng)網(wǎng)絡(luò)模型中 u→,v→,w→\overrightarrow{u}, \overrightarrow{v}, \overrightarrow{w}u,v,w 三個(gè)參數(shù)
對于游戲中的每一個(gè)狀態(tài)都會重復(fù)以上3個(gè)步驟若干次,由于對每個(gè)游戲狀態(tài)都枚舉計(jì)算了一遍所以論文題目中才提到的是基于Monte-Carlo法進(jìn)行學(xué)習(xí)。
如何進(jìn)行參數(shù)更新呢?由于該問題是一個(gè)非線性的問題,因此文中使用隨機(jī)梯度下降法來進(jìn)行參數(shù)更新,損失函數(shù)選擇 mean-square error,通過 Q(s,a,d)Q(s, a, d)Q(s,a,d) 和 R(sτ)R(s_\tau)R(sτ?) 之間的差值來求解梯度:
KaTeX parse error: No such environment: align at position 8: \begin{?a?l?i?g?n?}? \bigtriangleup…
note: α\alphaα 是代表學(xué)習(xí)率。
更進(jìn)一步的,我們更直觀的寫出對三個(gè)參數(shù) u→,v→,w→\overrightarrow{u}, \overrightarrow{v}, \overrightarrow{w}u,v,w 的更新式子:
w→←w→+αw[Q?R]f→(s,a,d,yi,zi)ui→←ui→+αu[Q?R]Qx→[1?p(yi∣x→)]vi→←vi→+αv[Q?R]Qx→[1?p(zi∣x→)]\overrightarrow{w} \leftarrow \overrightarrow{w} + \alpha_w[Q - R]\overrightarrow{f}(s, a, d, y_i, z_i) \\ \overrightarrow{u_i} \leftarrow \overrightarrow{u_i} + \alpha_u[Q - R]Q\overrightarrow{x}[1 - p(y_i|\overrightarrow{x})] \\ \overrightarrow{v_i} \leftarrow \overrightarrow{v_i} + \alpha_v[Q - R]Q\overrightarrow{x}[1 - p(z_i|\overrightarrow{x})] \\ w←w+αw?[Q?R]f?(s,a,d,yi?,zi?)ui??←ui??+αu?[Q?R]Qx[1?p(yi?∣x)]vi??←vi??+αv?[Q?R]Qx[1?p(zi?∣x)]
3. 在《文明》游戲中進(jìn)行算法驗(yàn)證
論文中使用 Civilization 2 游戲作為測試環(huán)境,該游戲是一種戰(zhàn)旗式游戲,由多個(gè)玩家在地圖上建立屬于子集的國家。游戲地圖是由一格一格組成的,每一格土地?fù)碛胁煌膶傩浴Q?、陸地或是其他資源等,玩家需要盡快占領(lǐng)資源并發(fā)展自己的國家并侵略和吞并其余玩家的領(lǐng)土。在該實(shí)驗(yàn)中,使用一張1000塊格子的地圖,訓(xùn)練模型與游戲內(nèi)置AI進(jìn)行對抗,直到有一方完全占領(lǐng)整個(gè)地圖獲勝為止。
3. 1 狀態(tài)-行為設(shè)置
實(shí)驗(yàn)中將狀態(tài)定義為3個(gè)部分組成:
舉個(gè)例子,部分屬性如下所示:
| - 領(lǐng)土類型(草地、山脈等等) |
| - 資源類型(小麥、煤礦等) |
| 城市屬性 |
| - 城市人口 |
| - 食物產(chǎn)量 |
| 單位屬性 |
| - 兵種(工人、建筑師等) |
| - 該單位是否在城市里? |
在游戲中,每一個(gè)單位在對應(yīng)的狀態(tài)下可采取的行為空間可以通過游戲直接獲取。由于一個(gè)玩家可以同時(shí)操作它所有的城市和士兵,因此,實(shí)驗(yàn)中把屬于同一個(gè)玩家的所有對象可采取的行為空間合并為該玩家的行為空間。在該實(shí)驗(yàn)中每個(gè)玩家可以同時(shí)控制約18個(gè)單位,每個(gè)單位能選擇15種行為,如果做組合的話,行為空間將有 102110^{21}1021 種。為了減小行為空間,實(shí)驗(yàn)種假定同一玩家的所有單位之間的行為互不影響,在相互獨(dú)立的前提下就不用將所有可能的行為進(jìn)行組合,極大縮減了玩家的行為空間。
3. 2 效用設(shè)置
通常Monte-Carlo法需要直到游戲結(jié)束得到評分之后再反向計(jì)算,考慮到文明游戲的復(fù)雜性,該實(shí)驗(yàn)直接通過文明游戲的 “實(shí)時(shí)評分系統(tǒng)” 進(jìn)行 reward 的獲取。該游戲中會根據(jù)玩家此刻的單位分布態(tài)勢對玩家進(jìn)行一個(gè)目前狀態(tài)的評分,這個(gè)評分就被選為即時(shí)匯報(bào) RRR。
3. 3 關(guān)鍵句提取函數(shù)?→\overrightarrow\varnothing??、詞性分類函數(shù)ψ→\overrightarrow\psiψ?、效用值計(jì)算函數(shù)fk→\overrightarrow{f_k}fk??
在2.2節(jié)中提到有幾個(gè)特定的固定函數(shù)——關(guān)鍵句子提取函數(shù)、詞性分類的函數(shù)以及最終效用計(jì)算的函數(shù)。其中?→\overrightarrow\varnothing??、fk→\overrightarrow{f_k}fk?? 函數(shù)主要考慮狀態(tài)、行為的屬性和文本單詞之間的關(guān)系,ψ→\overrightarrow\psiψ? 函數(shù)旨在對一個(gè)獨(dú)立的句子進(jìn)行詞性分類。下圖是利用文明2游戲中的生存手冊(游戲攻略)計(jì)算出的特征以及這些特征的屬性值。
在整個(gè)實(shí)驗(yàn)中,?→\overrightarrow\varnothing??、ψ→\overrightarrow\psiψ?、fk→\overrightarrow{f_k}fk?? 分別計(jì)算了 306800、158500、7900306800、158500、7900306800、158500、7900個(gè)特征值。
總結(jié)
以上是生活随笔為你收集整理的基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CLion 中使用 C++ 版本的 Op
- 下一篇: 被AI人机疯狂单杀?王者荣耀AI“绝悟”