###好好好##知識圖譜與推薦系統

文章目錄

    知識圖譜與個性化推薦
        1、推薦系統的任務和難點
        2、知識圖譜的優勢
        3、知識圖譜與推薦系統的結合方法
            3.1 基於特徵的推薦方法
            3.2 基於路徑的推薦方法
            3.3 知識圖譜特徵學習(Knowledge Graph Embedding)
        4、結合知識圖譜特徵學習的推薦系統
    算法模型
        DKN(Deep Konwledge-aware Network)
            知識圖譜特徵學習
            基於CNN的句子特徵提取
            問題描述
            模型框架
                知識提取
                新聞特徵提取 KCNN(Knowledge-aware CNN)
                基於注意力機制的用戶興趣預測
            DKN模型tensorflow實現


參考鏈接:https://www.jianshu.com/p/6a5e796499e8

知識圖譜與個性化推薦
1、推薦系統的任務和難點

推薦系統一般分爲兩類:

    評分預測: 預測用戶對物品的評價。
    例如:電影推薦中,系統需要預測用戶對電影的評分,並以此爲根據推送用戶可能喜歡的電影。使用的數據爲用戶的評分,能反應喜好程度,稱爲顯示反饋。

    點擊率預估: 預測用戶對於物品是否點擊。
    例如:新聞推薦,預測用戶點擊某新聞的概率優化推薦方案。使用的數據爲用戶點擊/未點擊,不能反應喜好程度,稱爲隱式反饋。

在這裏插入圖片描述

傳統的推薦系統存在的問題:

    稀疏性:

    實際場景中,用戶和物品的交互信息往往是非常稀疏的。如電影推薦中,電影往往成千上萬部,但是用戶打過分的電影往往只有幾十部。使用如此少的觀測數據來預測大量的未知信息,會極大增加過擬合的風險。

    冷啓動:

    對於新加入的用戶或者物品,其沒有對應的歷史信息,因此難以準確的進行建模和推薦。

解決以上問題常引入一些輔助信息,常見的輔助信息:

    社交網絡:
    一個用戶對某個物品感興趣,他的朋友可能也會對該物品感興趣

    用戶/物品的屬性

    擁有同種屬性的用戶可能會對同一類物品感興趣

    視頻/圖像/音頻/文本等多媒體信息:

    上下文信息:

    用戶-物品交互的時間、地點、當前會話信息等

    知識圖譜

2、知識圖譜的優勢

    精準性:
    引入更多的語義關係,深層次的發現用戶興趣
    [外鏈圖片轉存失敗(img-ReF0jRN0-1567568472554)(en-resource://database/2697:1)]

    多樣性:

通過知識圖譜中不同的關係鏈接種類,有利於推薦結果的發散
[外鏈圖片轉存失敗(img-hZjRKnbe-1567568472558)(en-resource://database/2699:1)]

    可解釋性:

[外鏈圖片轉存失敗(img-D8VH9jjC-1567568472560)(en-resource://database/2701:1)]
3、知識圖譜與推薦系統的結合方法
3.1 基於特徵的推薦方法

主要是從知識圖譜中抽取一些用戶和物品的屬性作爲特徵,放入到傳統的模型中,之引入了實體特徵,沒有引入關係特徵。
3.2 基於路徑的推薦方法

基於路徑的推薦方法,以港科大KDD 2017的錄用論文《Meta-Graph Based Recommendation Fusion over Heterogeneous Information Networks》爲代表。
該類方法將知識圖譜視爲一個異構信息網絡(heterogeneous information network),然後構造物品之間的基於meta-path或meta-graph的特徵。簡單地說,meta-path是連接兩個實體的一條特定的路徑,比如“演員->電影->導演->電影->演員”這條meta-path可以連接兩個演員,因此可以視爲一種挖掘演員之間的潛在關係的方式。這類方法的優點是充分且直觀地利用了知識圖譜的網絡結構,缺點是需要手動設計meta-path或meta-graph,這在實踐中難以到達最優;同時,該類方法無法在實體不屬於同一個領域的場景(例如新聞推薦)中應用,因爲我們無法爲這樣的場景預定義meta-path或meta-graph。
3.3 知識圖譜特徵學習(Knowledge Graph Embedding)

即爲實體和關係學習得到一個低維向量。兩類模型:基於距離的模型和基於語義的匹配模型。

    基於距離的翻譯模型(distance-based translational models)

    這類模型使用基於距離的評分函數評估三元組的概率,將尾節點視爲頭結點和關係翻譯得到的結果。這類方法的代表有TransE、TransH、TransR等;
    在這裏插入圖片描述

    在空間中,三元組的頭節點h、關係r、尾節點t都有對應的向量,我們希望的是h + r = t,如果h + r的結果和t越接近,那麼我們認爲這些向量能夠很好的表示知識圖譜中的實體和關係。

    基於語義的匹配模型(semantic-based matching models)

    類模型使用基於相似度的評分函數評估三元組的概率,將實體和關係映射到隱語義空間中進行相似度度量。這類方法的代表有SME、NTN、MLP、NAM等。
    在這裏插入圖片描述

    上述方法的核心是構造一個二分類模型,將h、r和t輸入到網絡中,如果(h,r,t)在知識圖譜中真實存在,則應該得到接近1的概率,如果不存在,應該得到接近0的概率。
    4、結合知識圖譜特徵學習的推薦系統

知識圖譜特徵學習與推薦系統相結合,往往有以下幾種方式:依次訓練、聯合訓練、交替訓練。
在這裏插入圖片描述

依次訓練的方法主要有:Deep Knowledge-aware Network(DKN)
聯合訓練的方法主要有:Ripple Network
交替訓練主要採用multi-task的思路,主要方法有:Multi-task Learning for KG enhanced Recommendation (MKR)
算法模型

https://www.jianshu.com/p/2e3cade31098
DKN(Deep Konwledge-aware Network)
知識圖譜特徵學習

常見的模型:

    基於距離的模型
        1

    基於語義的匹配模型
        1

基於CNN的句子特徵提取

DKN中提取句子特徵的CNN,用句子所包含詞的詞向量組成的二維矩陣,經過一層卷積操作之後再做一次max-over-time的pooling得到句子的向量,如下所示:
在這裏插入圖片描述
問題描述

在這裏插入圖片描述
模型框架

在這裏插入圖片描述

可以看到,DKN的網絡輸入有兩個:候選新聞集合,用戶點擊過的新聞標題序列。輸入數據通過KCNN來提取特徵,之上是一個attention層,計算候選新聞向量與用戶點擊歷史向量之間的attention權重,在頂層拼接兩部分向量之後,用DNN計算用戶點擊此新聞的概率。接下來,我們介紹一下DKN模型中的一些細節。
知識提取

知識提取過程的三方面:

1、標題中每個單詞的Embedding(可以通過預訓練的word2vec模型得到)
2、獲取標題中每個單詞對應的實體的Embedding
3、得到每個單詞的上下文Embedding

    1
    2
    3

實體embedding

    實體特徵即標題中每個單詞對應的實體的特徵表示,通過下面四個步驟得到:
    識別出標題中的實體並利用實體鏈接技術消除歧義
    根據已有知識圖譜,得到與標題中涉及的實體鏈接在一個step之內的所有實體所形成的子圖。
    構建好知識子圖以後,利用基於距離的翻譯模型得到子圖中每個實體embedding。
    得到標題中每個單詞對應的實體embedding。
    在這裏插入圖片描述

上下文Embedding

儘管目前現有的知識圖譜特徵學習方法得到的向量保存了絕大多數的結構信息,但還有一定的信息損失,爲了更好地利用一個實體在原知識圖譜的位置信息,文中還提到了利用一個實體的上下文來進一步的刻畫每個實體,具體來說,即用每個實體相連的實體embedding的平均值來進一步刻畫每個實體,計算公式如下:
在這裏插入圖片描述
在這裏插入圖片描述
新聞特徵提取 KCNN(Knowledge-aware CNN)

在知識抽取部分,我們得到了三部分的embedding,一種最簡單的使用方式就是直接將其拼接:

但這樣做存在幾方面的限制:

    連接策略打破了單詞和相關實體之間的聯繫,並且不知道它們的對齊方式。
    單詞的embedding和對應實體的embedding是通過不同的方法學習的,這意味着它們不適合在單個向量空間中將它們一起進行卷積操作。
    連接策略需要單詞的embedding和實體的embedding具有相同的維度,這在實際設置中可能不是最優的,因爲詞和實體embedding的最佳維度可能彼此不同。
    在這裏插入圖片描述

基於注意力機制的用戶興趣預測

在這裏插入圖片描述
DKN模型tensorflow實現

本文的代碼鏈接:https://github.com/princewen/tensorflow_practice/tree/master/recommendation/Basic-DKN-Demo

參考的代碼地址爲:https://github.com/hwwang55/DKN
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章