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