智慧教育深度學習推薦系統---1.2.合成推薦演算法CKE解讀和演算法實現1

最老程式設計師閆濤發表於2018-08-26

在推薦系統構建中,人們最常用的方法當屬協同過濾推薦演算法。協同過濾推薦演算法僅需要考慮使用者和待推薦條目的互動關係,演算法可以處理毫不費力地同時應用於電影推薦、圖書推薦、音樂推薦等,而無需研究待推薦具體的內容。但是協同過濾演算法在實際應用也存在很多問題,例如對新條目,由於沒有與使用者的互動資料,所以就無法推薦,並且很多時候,由於某個意外事件會使某個條目遭到爆炒,使熱度爆表,但是實際質量並不好,依據這些資訊的推薦自然效果不會太好。除了這些小問題之外,協同過濾推薦演算法還有一個致命的缺陷,就是如果使用者與待推薦條目互動非常稀疏的話,協同過濾推薦演算法的效能將急劇惡化,推薦效果非常不理想。
以我們智慧教育自適應題庫系統為例,我們通常會有數百萬道題目,而系統中真實有效地學生,不過就是幾萬人,而每個學生做的題目也就是幾百道題而已,我們假設題庫中有100萬道題目,我們有10萬學生,每個學生做1萬道題,這時我們題目與學生的表格為100萬行10萬列,共有1000億單元格,學生做過相應題目的單元格數為10億,從這裡可以看出,該表格中僅有1%的表格有資料,這裡會遇到嚴重的資料稀疏的問題。如果直接採用協同過濾推薦演算法的話,推薦效果肯定不會很理想。
怎樣來解決這一問題呢?我們自然需要求助基於內容的推薦演算法。在我們的題庫系統中,一道題目通常由三部分組成,首先是題目的文字資訊,其次是題目的影象資訊,例如數學中的幾何題中的圖形,最後也是最重要的是我們對每道題目通過人工建立的知識圖譜,將該題所涉及的知識點、解題技巧、易錯點等,按照知識圖譜三元組形式組合起來。如果我們能夠有效地利用這些資訊,結合學生做題情況,那麼就有可能做出一個比協同過濾推薦演算法更好的推薦系統。這就是我要向大家介紹的Collaborative Knowledge Base Embedding for Recommender Systems (CKE)演算法。
在CKE演算法體系下,系統架構如下所示:
這裡寫圖片描述
如圖所示,整個系統架構由資料集層,知識庫嵌信層和協同過濾層構成。
在資料集層,包括使用者與題目互動資料,以及題目內容相關的知識圖譜資料。每道題目的知識圖譜包括該題目對應的知識點,以知識圖譜有向圖形式表示,題目本身的文字資訊,還可能包括題目對應的圖。
在我知識庫嵌入層,首先採用TransR演算法將知識圖譜中的實體和關係表示為圖譜向量,對於題目的文字資訊,採用基於貝葉斯的堆疊去噪自動編碼機(SDAE)生成文字向量,對於影象資訊採用堆疊卷積自動編碼機(SCAE)生成影象向量,結合題目自身向量,將這四個向量組合成統一的題目向量,隨機確定學生向量,然後根據學生與題目的互動資料,採用協同過濾演算法,求出最終的學生向量和題目向量,從而最終產生符合我們要求的推薦結果。
在下一節中,我們將具體向大家分別介紹圖譜嵌入、文字嵌入和影象嵌入技術,最後將向大家展示如何通過TensorFlow來實現這些演算法。

相關文章