今天跟大家分享一篇比較有意思的文章,將邏輯推理的思路應用在推薦系統中,一起來看下吧。
1、背景協同過濾是推薦系統中一種非常重要的方法。目前協同過濾的方法大都基於相似度匹配的思想,即學習用戶和商品的表示,然後利用相似度函數來進行推薦,如基於矩陣分解的思路(下圖中的(a)),使用內積函數作為匹配函數計算相似度得分。在此基礎上,基於上下文的CF,進一步考慮了上下文信息如時間、地點、文本圖片等信息,如下圖中的(b)方法。
基於相似度匹配思路的協同過濾方法在現實世界許多推薦系統中取得了不錯的效果。但論文認為推薦是認知任務而不是感知任務,不僅僅需要具備模式識別和匹配的能力,還需要認知推理的能力,因為用戶的未來行為可能不會簡單地由其與先前行為的相似性來決定,而是由用戶關於下一步行為的認知推理決定。例如,當用戶買過一個筆記本電腦之後,下一步不會繼續買相似的筆記本電腦,而是有更大的可能去買電腦配件。
用戶認知推理的過程可以表示成邏輯表達式的形式,如(a∨b)∧¬c-->v(其中∨表示或,∧表示與,¬表示非)表達的含義是如果用戶喜歡a或者b,同時不喜歡c,那麼他有可能喜歡v。從把推薦當作一個認知推理任務的角度來說,我們希望推薦模型能夠發現和歸納數據中存在的邏輯關係。
那麼如何讓模型具備更好的推理能力呢?接下來,我們首先介紹下邏輯符號定義,然後再介紹論文提出的NEURAL LOGIC RECOMMENDATION(NLR)框架。
2、邏輯符號&表達式介紹三個基本的邏輯符號分別是邏輯與∧、邏輯或∨和邏輯非¬。進一步,(x∧y)稱為邏輯子式,(x∧y)V(a∧b∧c)稱為邏輯表達式。
邏輯表達式需要滿足一些定律,如兩次取非等於原式:¬(¬x)=x,再比如常用的德摩根定律:¬(x∧y)等價於¬x∨¬y,¬(x∨y)等價於¬x∧¬y。一些常用的邏輯等式關係如下表所示:
另一個常用的邏輯操作稱為material implication(實質蘊含),它等價於下面的邏輯運算:
x-->y的含義是,x為真,則y也為真,而¬x∨y要想為真,在x為真的情況下,y必為真(因為¬x是假),所以二者是等價的。
好了,介紹了邏輯符號和表達式的含義之後,接下來介紹NLR框架。
3、NLR框架本節,我們先介紹基於隱式反饋的推理模型,再介紹基於顯式反饋的推理,二者的過程較為相似,因此基於顯式反饋的推理只會進行粗略的介紹。
3.1 基於隱式反饋的推理隱式反饋的數據中,我們僅能知道用戶與哪些item進行過交互,但並不知道用戶是否真的喜歡這些item,假設用戶交互過a,b,c三個item,接下來我們想要判斷用戶是否對v感興趣,即判斷下面的邏輯表達式是否正確:
基於第二節中的介紹,上式可以進一步轉換成:
image.png
再基於德摩根定律,進行進一步轉換:
ok,那麼我們就可以基於上面兩個公式中任意一個來構造網絡。c出於簡單的考慮,選擇了後一個公式(後一個公式只用到了兩種邏輯運算,而前一個公式包含三種邏輯運算)。由此構造的網絡結構如下圖所示:
假設用戶u1與v1,v2,v3有過交互,並預測用戶是否會與v4進行交互。首先,用戶和item都會轉換為對應的embedding,並進行拼接,得到<u1,v1>,<u1,v2>,<u1,v3>,<u1,v4>。接下來,通過如下的非線性變換進行轉換:
eji表示用戶i和item j的embedding經過轉換後得到的向量。接下來,我們的目標就是計算如下的邏輯表達式是否為真:
這裡,各種邏輯操作均是通過一個多層全連接網絡實現,例如邏輯非¬對應的網絡輸入原始向量,輸出一個表示非關係的向量;邏輯或輸入兩個原始向量,輸出一個表示二者或關係的向量。那麼,上式的網絡結構表示如下:
由於我們需要計算的是多個向量的邏輯或,而邏輯或網絡輸入的是兩個向量,所以需要採用一種循環的方式得到最後的向量。
計算得到邏輯表達式的結果之後,如何計算v4的推薦得分呢?這裡,引入兩個隨機初始化且不會進行梯度更新的向量T和F,分別代表True和False。如果表達式最終計算得到的向量與T接近,則認為v4應該被推薦,反之,則不進行推薦。距離計算使用cosine距離。
到這裡看似已經結束了,但我們仍忽略了一個比較重要的問題,上述將三個基本的邏輯運算定義為了神經網絡的形式,那麼各網絡的輸出是否符合邏輯運算的基本形式呢?邏輯非對應的網絡輸出的結果是否是輸入向量的非呢?這裡我們通過一系列的正則項損失進行約束。
以邏輯非為例,兩次邏輯非的結果和原結果應該相同,那麼很容易以此為條件設計正則項損失,即計算連續經過兩次邏輯非網絡得到的向量,與輸入向量的距離,距離越大,則損失越大:
其餘不同邏輯運算的正則項損失計算如下表所示,本文不再詳述:
模型訓練採用pairwise的形式,即對同一個用戶,同時計算一個正樣本和一個負樣本的推薦得分,並且希望正樣本的得分比負樣本得分儘可能高。而最終的損失包含兩部分,一部分是pairwise的損失(又包括bpr loss和l2 loss),另一部分是邏輯正則項loss。具體計算公式如下:
3.2 基於顯式反饋的推理使用顯式反饋數據進行推理的過程與使用隱式反饋數據過程類似,假設用戶對v1和v2有正向的反饋,對v3有負向反饋,那麼是否給用戶推薦v4可以表示成如下的邏輯表達式:
進一步轉換得到:
這裡使用兩次邏輯非運算而非直接使用原始向量,其目的是為了使邏輯非網絡學習得更好。其餘過程與使用隱式反饋數據計算過程相似,不再贅述。
4、實驗結果及分析最後來簡單看一下實驗結果。首先是本文提出的NLR框架與baseline模型的對比,其中NLR-I代表基於隱式反饋數據訓練的模型,NLR-E代表基於顯式反饋模型訓練的模型,從下表數據看,NLR效果遠好於各baseline模型,而NLR-E效果好於NLR-I。
再來看一下邏輯正則損失對於模型的提升效果,NLR-Emod代表沒有加入邏輯正則損失訓練得到的模型,可以看到,其效果是差於NLR-E的,因此邏輯正則損失對於模型效果的提升,具有正向的作用。
好了,論文還是比較有意思的,感興趣的同學可以翻閱原文喲~
想了解更多關於深度學習的內容,歡迎掃碼關注公眾號淺夢的學習筆記。回復加群可以加入我們的交流群一起學習!
碼字很辛苦,有收穫的話就請分享、點讚、在看三連吧👇