利用知識圖譜讓你知道推薦系統在想什麼
前言:本文將介紹SIGIR 2018論文《Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks》,希望能對大家有所啟發。
本文作者:楊昆霖,2015級本科生,目前研究方向為知識圖譜,推薦系統,來自中國人民大學大數據管理與分析方法研究北京市重點實驗室。
備註:本文首發於知乎[RUC智能情報站],如需轉載請告知作者並註明本專欄文章地址
引言
經常上購物網站時,注意力會被首頁上的推薦吸引過去,往往本來只想買一件小商品,但卻被推薦商品耗費不少時間與金錢。有時候會在想,雖然推薦商品挺吸引人的,但是它究竟為什麼給出這些推薦,背後的原因卻往往不得而知。本文將介紹的這篇SIGIR 2018論文提出了新的序列化推薦模型KSR(Knowledge-enhanced Sequential Recommender),利用了知識圖譜與記憶網路,在提高推薦結果準確性的同時,還能捕捉更為細緻的用戶偏好,提高推薦系統的可解釋性。
問題背景
相信推薦系統對大家並不陌生,眾多互聯網公司也花了大功夫在構建推薦系統上。為了給出精準的推薦,首先需要把握用戶在想什麼,對什麼感興趣,而這往往不是一成不變的,會隨著用戶在平台上的活動而日益變化。鑒於此,相較於以往的協同過濾等推薦方式,學術界提出基於時序神經模型的序列化推薦系統,利用循環神經網路RNN來捕捉用戶興趣點隨著時間的動態變化。
在序列化推薦建模中,通常將用戶過去的交互記錄作為輸入,利用隱狀態向量來編碼各個交互記錄,以此來表示用戶在序列中體現的偏好。但是,這種方法有兩個不足之處:
- 只考慮了用戶序列偏好,卻忽視了細緻的用戶偏好,如用戶具體喜歡某個物品的哪個屬性等;
- 推薦過程中的隱含特徵向量表示過於抽象,難以解釋其推薦結果。
解決思路
本文的主要貢獻在於用使用了融合知識庫信息的記憶網路,通過細緻地刻畫用戶對物品屬性偏好提高準確率的同時,還增強了推薦系統的可解釋性。
為了捕捉用戶對物品屬性偏好與增強可解釋性,本文將知識庫信息與商品信息結合。
為了將知識庫信息與融入推薦系統,本文使用了鍵值對記憶網路(Key-Value Memory Networks)。
具體做法
因為從用戶與商品的交互記錄中只能體現出商品的隱語義模型,還不夠更細粒度地刻畫用戶對商品的偏好,於是,本文藉助知識庫(knowledge base)中的實體(entity)信息來表示推薦物品在不同屬性的特徵,這樣既可以更為細緻地刻畫物品,又可以增強可解釋性。如一首歌曲擁有歌手、專輯等屬性,通過知識庫我們可以得知這些屬性對應的具體實體,來利用embedding的方式(如TransE)可以將這個實體在知識庫中的上下文信息(context)轉化成一個嵌入向量(embeddings),也就是特徵表示向量。本文選用的知識庫是FreeBase,將數據集中的商品與知識庫中已有的實體連接在一起。至此,每個物品除了有由交易歷史得到的一個特徵表示向量之外(此處本文使用bayesian personalized ranking),在其每個屬性之上還會獲得一個特徵表示向量。
至於實體中的特徵表示向量如何得到,這裡以TransE為例進行說明。知識庫中每一條數據都是一個三元組,每個三元組包含兩個實體及實體間的關係,如(頭實體A,關係R,尾實體B)。我們希望實體A+關係R與實體B在空間中的表示儘可能接近,英劇福爾摩斯(頭實體A)+主演(關係R)應該約等於本尼迪(尾實體B)。
與現實理解不同的是,在知識庫中每個實體與關係都是空間中的向量,我們以三元組的誤差最小化為來訓練即可得到對應的特徵表示向量。但現在有個問題,主演不僅包含本尼迪,還有馬丁,那麼這樣如何區分本尼迪與馬丁的不同呢?本文對於每個目標實體,不直接使用目標實體的特徵表示向量,而是使用物體特徵表示向量+關係特徵表示向量的方式。例如,對於本尼迪,不直接使用本尼迪的特徵表示向量,而是使用英劇福爾摩斯+主演的特徵表示向量和來作為阿凡達影片導演屬性的特徵表示向量。如下式就代表物品i的a屬性 由物品i的實體 及其與屬性a 的關係之和來表示。
當然,每個物體擁有那麼多屬性,將每個屬性的特徵表示向量全部都拼接在一起,計算量太大。本文將每個屬性向量加權後求和,得到一個向量 來表示每個用戶的細粒度興趣,這裡的權重
為用戶對每個屬性的關注程度,權重與屬性的鍵 和當前序列偏好有關,如下式所示:
那麼,在解決了細粒度表示與解釋性問題之後,就要開始考慮如何將其與序列化推薦模型結合在一起。本文利用門控循環神經網路(Gated Recurrent Unit,簡稱GRU)來構建序列化推薦模型,然而GRU儘管可以記憶相鄰幾個節點的信息,但對於長期記憶存儲知識庫實體信息來說,GRU的記憶還是過於短暫。因此,本文引入了記憶網路(Memory Networks)來存儲不同屬性的信息,與知識庫交互。
記憶網路利用精確的記憶機制來解決神經網路的信息記憶問題。它使用外部數組來存儲要被「記憶」的數據,這個數組可以被神經網路反覆讀取,存儲在數組中的信息也可以被更新或者擴展。本文使用記憶網路來管理物品屬性時,考慮到物品的每個屬性相對獨立,本擴展了基礎的記憶網路,使用鍵值對記憶網路(Key-Value Memory Networks,KV-MN)來更好的使用信息,其中,鍵為知識庫中的關係(relation),值為對應的實體。需要注意的是,鍵因為表示的是物品與屬性的關係,與用戶無關,因此所有用戶共享相同的鍵矩陣;而不同的用戶對於不同屬性的偏好有著較大差別,故值矩陣為用戶私有,每個用戶都有自己的值矩陣。由此不難發現,推薦模型中的物品,記憶網路中的鍵值對,正好與知識庫的三元組相對應(物品,鍵(屬性),值)。
現在問題轉化為記憶網路與GRU的結合問題。為了同時考慮用戶序列偏好與商品屬性偏好,在GRU推薦的每一個節點,均可以得到一個序列偏好表示向量,利用該向量對鍵值對記憶網路進行查詢,便可得到用戶對每個屬性的偏好表示。將兩個向量拼接在一起得到的新向量,就可以更為全面地刻畫用戶的屬性,既包括用戶在序列中的偏好,又體現用戶對物體屬性的細緻偏好。大致的流程可以參照下圖:
由上圖還可以看到,對於鍵值對記憶網路,有個寫入(write)和讀取(read)的過程,這同時也是記憶網路最基本的操作之二。對於讀取操作,根據之前所說,需要輸入一個查詢,也就是當前時刻的序列偏好向量 ,根據這個向量,按照前文所述,將序列偏好向量與屬性偏好項量加權求和之後即得到最終的偏好向量 。
對於寫入操作,目的是根據當前時刻感興趣的物品來更新對各個屬性的興趣程度,於是就需要同時考慮兩方面因素,當前物品的特徵表示向量和當前用戶的屬性偏好向量。為了決定每個屬性應該更新多少信息,本文先計算得到了一個門向量 z_a ,通過該門向量來對屬性偏好向量進行更新。門向量的考量因素是物品特徵表示向量 與對應屬性的特徵表示向量 ,具體見下式:
經過這樣的更新,本文模型就可以在用戶的屬性級別上長期檢測用戶興趣偏好,並及時更新納入推薦系統。寫入操作具體如下:
本文的模型如下圖所示:
首先,GRU網路根據短程記憶得出用戶序列興趣表示向量;接著,鍵值對記憶網路根據GRU的表示向量與商品本身的特徵表示向量得到細緻的用戶偏好特徵表示向量,並於序列興趣向量連接;最後,根據用戶對各個興趣的權重,即可解釋推薦系統產生推薦的原因。
具體如何體現模型的解釋性可以見下圖:
圖中最上方的代表時間軸;第二行代表每個商品所具有的屬性,也就是記憶網路中的鍵,此處以歌手和專輯為例;第三行為每個屬性所產生的推薦列表。從圖中第二行可以發現,一開始初始化時,推薦系統覺得用戶更喜歡歌曲的專輯(一開始歌手權重較小,方框顏色較淺,專輯權重較大,顏色較深);後來隨著時間的推移,推薦系統漸漸發現用戶更喜歡歌曲的歌手而不是專輯(歌手方框顏色變深,專輯變淺)。從第三行可以發現,一開始推薦系統的判斷是錯誤的,產生的推薦列表也不那麼準確,但是時間越長,判斷也趨向於準確,並且也給出了推薦理由,用戶想聽這個歌手的歌而不是這個專輯的歌。
總結
本文針對序列化推薦系統不具有解釋性,無法獲取用戶細粒度特徵的特點,提出了利用結合知識庫的記憶網路來增強推薦系統的特徵捕獲能力與解釋性,不僅獲得了更高的準確率,還使得推薦系統具有了較強的解釋性。並且實驗結果表面,該模型比以往的模型在準確率與解釋性方面均有顯著突破。
本論文原文鏈接:https://pan.baidu.com/s/1WWhpHBjYpiftLcSAC8w3xA 密碼:v19f
(SIGIR 2018 proceedings還未出 先用網盤代替)
推薦閱讀:
※自黑,怎麼少的了我們搞人工智慧的
※[貝葉斯一]之貝葉斯定理
※基於確定性信息瓶頸的空間聚類(二)
※如何預防AI產生不可控的認知,Open AI提出一種人工智慧安全技術