2016的paper
利用知識庫中的異構信息來提高推薦系統質量。主要貢獻是在推薦系統中引入了結構信息、文本數據、圖像數據等知識庫中的信息來提升推薦系統的質量。
論文是基於什么問題提出來的?
CF(協同過濾)方法由於user-item矩陣的稀疏性,效果受限。
論文提出了什么方法
使用輔助信息提高性能。
具體來說是 利用了知識庫中的異構信息來提高推薦系統的質量,給定結構信息,文本信息,視覺信息的知識庫以及user的隱式反饋,產生一個用戶感興趣的ranked list。
本文設計了三個組件:結構內容、文本內容和視覺內容。
隱式反饋(user implicit feedback):
有交互為1,沒有交互或者不知道為0.(注意,為1不表示用戶實際上喜歡,只能說對它感興趣。為0只能說不感興趣或者是潛在交互(用戶不知道這些內容),不代表不喜歡。)
知識庫(knowledge base)
- 結構信息:實體和實體之間的聯系
- 文本信息:電影或書本的文本信息
- 視覺信息:封面海報之類的
結構特征:用戶隱式反饋和結構信息
內容特征:文本和視覺信息
OverView
CKE模型包含兩個步驟:
- 知識庫嵌入(knowledge base embedding)
- 協作聯合學習(collaborative joint learning)
Structural Embedding
具體來說,就是采用了異構網絡嵌入的方法,稱為TransR(2015 AAAI),通過考慮節點和關系的異構型來提取項目的結構表示。
結構化信息表現為一個network,因為一個實體有很多個實體相連,需要把這個網絡映射到向量空間。
TransR
通過關系矩陣來鏈接不同語義空間。
以這種方式訓練表征向量:
- 通過將實體映射到關系空間中
- 在兩個投影實體之間構建翻譯關系
對於每個關系,有一個變換矩陣Mr和一個它在自己的關系空間的表示向量r。通過變換矩陣將entities從實體空間投影到關系空間。
目標函數
加入貝葉斯先驗之后的TransR生成過程:
這里的話就是使參數符合特定的正太分布(下同)
那慕達是調整正太分布里 瘦胖 的參數
Textual Embedding
堆疊去噪自動編碼器(SDAE)
https://blog.csdn.net/zbzcDZF/article/details/86570761
https://www.cnblogs.com/neopenx/p/4370350.html
Wl是權重參數,bl是偏差參數
SDAE總共6層,前三層位置是Encoder部分(1-3),X0表示的是帶有噪音的矩陣
后三層是Decoder部分(3-6),X6是無噪音的輸出矩陣。
引入貝葉斯SDAE:
Visual Embedding
堆疊卷積自動編碼器(SCAE)
Encoder 由兩個卷積層(z0到z2)和一個完全連接層(z2到z3)組成。
Decoder又一個完全連接層(z3到z4)和兩個解卷積層(z4到z6)組成。
中間隱藏層z3輸出的使一個矩陣,其他層的輸出通常稱為特征映射,它是由卷積層生成的四維張量。
卷積層映射如下:
Q*表示卷積算子,用來保持先前輸出的局部連通性(?)
引入貝葉斯SCAE:
Collaborative joint learning
將協同過濾(collaborative filtering)與知識庫中的items embedding結合。在CKE框架中,提出了協作聯合學習過程。
為同時獲取協同過濾中的item的潛在表示和知識庫中的representation,有
其中,η代表CF中的物品隱含含量。其他三個分別代表從知識庫提取出來的特征。
再使用pair-wise 偏好概率表示,有
這個式子意思是對於用戶i來說,相比j',更喜歡j物品。θ表示模型參數。
參數學習,最大對數似然函數
論文中使用了隨機梯度下降(SGD)算法,最大化等式7.
損失函數第二塊:個人感覺是對文本embedding的正則化,防止過擬合。
Experiments
兩個不同領域的數據集(電影和書籍)
- MovieLens-1M:有100w名用戶和3706部電影組成。
- IntentBooks:微軟Bing搜索引擎和Satori知識庫組成。
“#sk nodes”表示提取結構信息中的節點總數
“#tk items”表示具有文本信息的items總數
“#vk items”表示具有視覺信息的items總數
實驗總結:CKE(S)、CKE(T)、CKE(V)分別表示只用Structure,Texture或Visual的CKE模型
- CKE(S)、CKE(T)、CKE(V)都能beat掉baseline
- 相較CKE(S)、CKE(T)、CKE(V)提升的效果沒有CKE(S)好,不過也是可以beat掉baseline
- CKE(STV)效果最好