本文用了強化學習,在知識圖譜上游走,尋找目標節點。
一、簡介
大概意思就是,在知識圖譜上,給出一個起始節點和查詢(query),然後找到目標節點。
圖G包含節點和邊。
如下圖,給出起始節點Obama,query:citizenship,目標節點是USA。
我們要學習一個方法來預測。
我們我們將f作爲強化學習力的agent。他要學習搜索策略(search policy)
訓練的時候,我們給出,讓f自己學習路徑,如果他走到,就給他一個正的reward,或者0分。學完後只給出,預測。
所以設計了一個神經網絡的agent,叫M-walk。用RNN將歷史路徑轉化爲一個向量,用來學policy和Q function 。reward稀疏,所以用帶蒙特卡洛樹搜索的RNN,生成路徑。
二、用馬爾科夫決策過程來進行圖的遊走
(S,A,R,P) s是state,a是action,r是reward function,p是state transition probability
初始狀態s0和下一個狀態的表示,如上圖所示。
是連接點nt的所有邊,是nt的所有鄰居節點。
si由1)該節點和連接它的邊、它的鄰居 2)t-1時刻的動作 3)初始query q構成。
集合S由所有可能出現的st構成。
在狀態st,agent有以下動作可以選擇:1)選擇中的一條邊,他連接到點 2)選擇STOP,則就是要預測的。
動作集合由下圖表示
輸出
如果輸出是(即輸出了正確的答案),則reward=1,否則爲0.
這可以看出來,reward是非常稀疏的,只有走到正確的位置纔有reward。但是由於圖是已知靜態確定的,所以如果確定了上一個狀態和動作,那麼下一個狀態時確定的。(文中說這有助於解決reward稀疏。)
π是policy(給出狀態s,選擇動作a),Q是Q function(在狀態s下選擇動作a,它的Q value是多少,即之後的長期收益是多少)
三、M-walk agent
3.1π和Q的神經網路結構
用RNN獲得當前狀態st的表達ht
ht分爲三個部分:
1) 將上個時間的狀態、動作、當前節點,綜合。
2)綜合了nt的鄰居n'節點,以及nt和n'之間的邊e,代表第n'個候選動作(包括STOP動作)
3) 綜合了和,用來判斷STOP的概率。
所以π和Q的計算。
u0是將hst,hAt通過一個full-connected neural network。(這裏沒說這兩個h要怎麼整合到一起,可能是拼接吧)
un'是hst和hn't做內積(即點乘,對應位相乘,求和)
u0(STOP的分數),un'(鄰居的分數)都是一個數字
Q是對每個數字做sigmoid
π是做溫度參數爲τ的softmax
關於溫度參數
3.2 訓練算法
傳統的使用蒙特卡羅方法的REINFORCE,需要sample一個完整的序列,sample的效率很低,而且reward稀疏。所以sample的時候使用PUCT算法的變體。
π是上面提到的策略分數(softmax算的),c和β用來控制探索的程度。N是visit count。W是走(s-a)這條邊上的蒙特卡羅樹的total action reward。
PUCT算法最開始傾向於選擇在狀態s下出現少的action(式子的前半部分), 後來傾向於選擇分數高的(式子的後半部分)。
當PUCT算法選擇了STOP,或者到達了最大探索數(應該是強行選擇STOP),則停止。使用
用下面的式子,更新上一個式子中的N和W。γ是衰減因子(discount factor).
主要目標就是多生成reward爲正的路徑。
然後用DQN網絡,尋找更好的π就是max Q
3.3預測算法
已知(ns,q)求nT。利用π在G上尋找nT。
我們利用上面已經生成好的蒙特卡羅樹。但是可能有多路徑到達同一個節點n。走不同路徑,就有不同的
這些路徑上各個葉子狀態sT。怎麼比較選擇哪個n(n需要綜合多條路徑),需要算一個分數,排序。
N是蒙特卡羅樹的總模擬數量
求和是在所有有關同一個節點n上的子狀態sT,是對於同一個候選n的平均權重。
在所有的候選節點中,我們選擇score最大的。
3.4 RNN encoder
qt約等於右邊的(因爲s0的原因)
所以st大約可以寫成
st由兩部分組成 1) 代表候選動作(包括STOP) 2)qt代表歷史
所以用兩個不同的神經網絡去編碼他們
前面說過,ht分爲三個部分:
1) 將上個時間的狀態、動作、當前節點,綜合。
2)綜合了nt的鄰居n'節點,以及nt和n'之間的邊e,代表第n'個候選動作(包括STOP動作)
3) 綜合了和,用來判斷STOP的概率。
求 2)的方法很簡單,就是邊和點的表達通過full-connected neural network
求 3) 的方法,就是max 2)的結果,因爲每一次的節點數可能都不一樣,這樣可以得到統一的結果
求1) 就是編碼qt 使用gru的思想