前言
-
發(fā)表在CIKM2020上的一篇關(guān)于通用CF推薦的論文,引入了邏輯推理的思想!
碼字不易,好心人隨手點個贊
本文為自己的論文閱讀筆記,并非完整的論文翻譯,如有錯誤/問題歡迎評論區(qū)指正,僅為參考,建議首先閱讀原文
如需轉(zhuǎn)載引用,請務(wù)必提前聯(lián)系本人并在文中附上原鏈接及相應(yīng)說明,包括作者信息(阿瑟)
關(guān)于該論文,涉及符號系統(tǒng)等一些概念和思想,可以參考https://blog.csdn.net/weixin_43868020/article/details/107191994
摘要
近年來,深層神經(jīng)網(wǎng)絡(luò)在許多領(lǐng)域取得了成功。大多數(shù)神經(jīng)網(wǎng)絡(luò)設(shè)計背后的基本思想是從數(shù)據(jù)中學(xué)習(xí)相似模式進行預(yù)測和推理,這缺乏認知推理能力。然而,具體的推理能力是許多理論和實踐問題的關(guān)鍵。
另一方面,傳統(tǒng)的符號推理方法在進行邏輯推理方面有很好的效果,但它們大多是直接的基于規(guī)則的推理(Hard rule-based reasoning),這限制了它們對不同任務(wù)的泛化能力,因為不同的任務(wù)需要不同的規(guī)則。
推理和泛化能力對于推薦系統(tǒng)這樣的預(yù)測任務(wù)都很重要,推理提供了用戶歷史和目標物品之間強有力的關(guān)聯(lián)以便精確預(yù)測,泛化能夠幫助模型在噪聲輸入下構(gòu)造健壯的用戶畫像(robust user portrait)。
本文中提出了邏輯集成神經(jīng)網(wǎng)絡(luò)(LINN)來集成深度學(xué)習(xí)和邏輯推理的能力。LINN 是一種動態(tài)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)輸入的邏輯表達式構(gòu)建計算圖。它學(xué)習(xí)基本的邏輯運算,例如OR\AND\NOT作為神經(jīng)模塊,并通過網(wǎng)絡(luò)進行命題邏輯推理。
理論任務(wù)實驗表明,LINN 在求解邏輯方程和變量方面有顯著的性能。此外,我們通過將推薦任務(wù)描述為一個邏輯推理問題,在推薦的實際任務(wù)上對我們的方法進行了驗證。
引言
雖然神經(jīng)網(wǎng)絡(luò)通常對具有相似分布的數(shù)據(jù)具有良好的泛化能力,但這些方法的設(shè)計思想使得神經(jīng)網(wǎng)絡(luò)在許多理論和實際問題上很難進行邏輯推理分析。然而,邏輯推理是一種重要的智能能力,它對許多理論任務(wù),如解決邏輯方程,以及實際任務(wù),如醫(yī)療決策支持系統(tǒng),法律助理,和個性化推薦系統(tǒng)至關(guān)重要。
例如,在推薦任務(wù)中,推理可以幫助建立用戶和項目之間的復(fù)雜關(guān)系模型(例如,用戶喜歡項目 a,但不喜歡項目 b →用戶喜歡項目 c) ,特別是對于那些罕見的模式,這通常是神經(jīng)網(wǎng)絡(luò)難以捕捉的。
進行推理的一種典型方法是通過邏輯推理(logical inference)。事實上,在機器學(xué)習(xí)方法出現(xiàn)之前,基于符號推理(symbolic reasoning)的邏輯推理一直是人工智能的主流方法,它也是傳統(tǒng)人工智能(GOFAI)中許多專家系統(tǒng)的基礎(chǔ)。然而,傳統(tǒng)的邏輯推理的符號推理方法大多是基于規(guī)則的硬推理,由于規(guī)則難以定義,不易適用于現(xiàn)實世界中的許多任務(wù)。
例如,在推薦系統(tǒng)中,如果我們把每個物品都看作一個符號,我們就很難根據(jù)手工設(shè)計的規(guī)則來捕捉物品之間的所有關(guān)系。此外,個性化用戶偏好帶來了各種交互序列,這可能帶來沖突推理規(guī)則,例如,一個用戶可能同時喜歡 a 和 b,而另一個喜歡 a 的用戶可能不喜歡 b。 數(shù)據(jù)中的這種噪聲使得設(shè)計適合于新數(shù)據(jù)的推薦規(guī)則變得非常具有挑戰(zhàn)性。
為了統(tǒng)一利用深度神經(jīng)網(wǎng)絡(luò)的泛化能力和邏輯推理,提出了邏輯集成神經(jīng)網(wǎng)絡(luò)(LINN) ,基于神經(jīng)網(wǎng)絡(luò)進行邏輯推理的神經(jīng)結(jié)構(gòu)。LINN 用向量表示邏輯變量,每個基本邏輯運算(AND/OR/NOT)作為一個基于邏輯正則化的神經(jīng)模塊來學(xué)習(xí)。
由于由同一組變量組成的邏輯表達式可能具有完全不同的邏輯結(jié)構(gòu),因此捕獲邏輯的結(jié)構(gòu)信息對邏輯推理至關(guān)重要。為了解決這個問題,LINN 根據(jù)輸入的邏輯表達式動態(tài)構(gòu)造其神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),這不同于許多固定計算圖形的神經(jīng)網(wǎng)絡(luò)。通過在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中編碼邏輯結(jié)構(gòu)信息,LINN 可以靈活處理指數(shù)級的邏輯表達式。
LINN模型
在 LINN,邏輯表達式中的每個邏輯變量都表示為一個向量嵌入,每個基本邏輯運算(例如,AND/OR/NOT)都學(xué)習(xí)為一個神經(jīng)模塊。大多數(shù)神經(jīng)網(wǎng)絡(luò)都是基于獨立于輸入的固定神經(jīng)結(jié)構(gòu)而開發(fā)的,無論是手動設(shè)計的還是通過神經(jīng)結(jié)構(gòu)搜索學(xué)習(xí)的。 不同的是,我們的 LINN 體系結(jié)構(gòu)的計算圖是依賴于輸入的,并根據(jù)輸入邏輯表達式動態(tài)地構(gòu)建。 我們進一步利用邏輯正則化(Logic Regulaizers)對神經(jīng)模塊,以保證每個模塊進行預(yù)期的邏輯操作。
1. 神經(jīng)模塊的邏輯操作
命題邏輯的表達式由邏輯常量(True 或 False,標記為 T/F)、邏輯變量(v)和基本邏輯運算(否定、合取∧和析取∨)組成。在 LINN 中,邏輯運算被學(xué)習(xí)為三個神經(jīng)模塊。Leshno 等證明了具有非多項式激活函數(shù)的多層前饋網(wǎng)絡(luò)可以逼近任何函數(shù)。這為我們利用神經(jīng)模塊學(xué)習(xí)邏輯操作提供了理論支持。與大多數(shù)將輸入變量作為向量表示學(xué)習(xí)的神經(jīng)模型類似,T、F 和所有邏輯變量都被表示為具有相同維數(shù)的向量。給定邏輯表達式
及其對應(yīng)的值
,一個表達式示例如下:

相關(guān)符號表示可以定義為:下圖展示了LINN的結(jié)構(gòu)示例

圖中下的框顯示了LINN如何構(gòu)造一個邏輯表達式。每個中間向量表示邏輯表達式的一部分,最后得到整個邏輯表達式 e的向量表示。
這樣,雖然嵌入矩陣的大小隨著邏輯變量總數(shù)的線性增長,但算子網(wǎng)絡(luò)中的參數(shù)總數(shù)保持不變。
此外,由于表達式是按樹結(jié)構(gòu)組織的,因此可以從葉子到根遞歸地計算它。
為了計算表達式的 T/F 值,我們計算了表達式向量和 T/F向量之間的相似度,如上面的框所示。這里 Sim (,)也是一個神經(jīng)模塊,用來計算兩個向量之間的相似度,并輸出0到1之間的相似度值。
輸出


2. 神經(jīng)模塊上的邏輯約束 Logical Regularization
到目前為止只學(xué)習(xí)了邏輯運算作為神經(jīng)模塊,但沒有明確保證這些模塊實現(xiàn)預(yù)期的邏輯運算。例如,任何與 False 連接的變量或表達式都應(yīng)得到F,即 w ∧ F= F,雙重否定應(yīng)該等于本身。
我們使用 w 代替 v,因為 w 既可以是單個變量(例如,vi) ,也可以是計算流程中間的表達式。LINN 應(yīng)該滿足基本的邏輯規(guī)則,盡管神經(jīng)結(jié)構(gòu)可能隱式地從數(shù)據(jù)中學(xué)習(xí)邏輯操作,但是如果我們對其加上具體的邏輯約束會更好指導(dǎo)學(xué)習(xí)邏輯。為了實現(xiàn)這一目標,文中定義了邏輯正則化(Logical Regularization)來規(guī)范模塊的行為,使它們能夠執(zhí)行一定的邏輯操作。完整的定義如下表所示:

在 LINN 中,常量True的向量T在訓(xùn)練和測試過程中是隨機初始化并且固定的,作為定義T向量的邏輯空間中的標準向量(Anchor vector)。因此可以用 NOT (t)來計算False向量 F。
最后的損失函數(shù)可以定義為:



沒有明確的方法約束其他邏輯規(guī)則的模塊,這些規(guī)則對應(yīng)于更復(fù)雜的表達式變量,如分配律和摩根定律(非(P 且 Q) = (非 P) 或 (非 Q)
非(P 或 Q) = (非 P) 且 (非 Q))。
為了解決這個問題,我們確保輸入表達式具有相同的規(guī)范形式-- 例如,析取范式-- 因為任何命題邏輯表達式都可以轉(zhuǎn)換為析取范式(DNF)或合取范式(CNF) ,而且每個表達式都對應(yīng)于一個計算圖。這樣就避免了對分配律和摩根定律的神經(jīng)模塊進行規(guī)范化的必要性。
3. 長度正則化 Length Regularization over Logic Variables
邏輯變量的向量長度,以及中間或最后的邏輯表達式,在訓(xùn)練過程中可能爆炸,因為簡單地增加向量長度就可以得到一個平凡的方程優(yōu)化解。通過限制矢量長度可以提供更穩(wěn)定的性能,因此在損失函數(shù)中加入了一個常用的L2長度正則化:
W表示所有輸入的變量向量、中間和最后的表達式向量
最后考慮對參數(shù)L2正則化,最后的損失函數(shù)如下:
4. 實現(xiàn)細節(jié)
原型任務(wù)定義如下:** 給定一定數(shù)量的訓(xùn)練邏輯表達式及其 T/F 值,訓(xùn)練一個 LINN,并測試該模型能否求解邏輯變量的 T/F 值,并在訓(xùn)練中預(yù)測由已有邏輯變量構(gòu)造的新表達式的值。**
相關(guān)邏輯操作的實現(xiàn)如下:其中AND與OR操作相似


原型實驗:求解邏輯等式 Solving logical equations
在將 LINN 應(yīng)用于實際任務(wù)之前,我們在一個基于模擬數(shù)據(jù)的理論任務(wù)上進行了實驗,以證明 LINN 框架具有進行邏輯推理的能力,這是傳統(tǒng)神經(jīng)網(wǎng)絡(luò)難以做到的。 給定一定數(shù)量的訓(xùn)練邏輯表達式及其 T/F 值,訓(xùn)練 LINN,檢驗該模型能否求出邏輯變量的 T/F 值,并預(yù)測由觀測邏輯變量構(gòu)造的新表達式的值。
隨機生成 n 個變量 v = { vi } ,每個變量隨機分配一個 t 或 f 的值。然后這些變量被用來隨機創(chuàng)建 m 個布爾表達式以析取范式形式存儲,構(gòu)成數(shù)據(jù)集。 每個表達式由1到5個分句組成,分句之間用析取∨分隔,每個分句由1到5個變量組成。產(chǎn)生的表達式如下所示:

我們基于一組已知的 DNFs 訓(xùn)練模型,并期望該模型能夠預(yù)測新的 DNFs 的 T/F 值,而不需要顯式地求解每個邏輯變量的 T/F 值。它保證有一個答案,因為訓(xùn)練方程是基于相同的參數(shù)集與已知的 T/F 值。對比結(jié)果如下所示:


可以看到兩類變量隨著迭代逐漸區(qū)分開來。
推薦系統(tǒng)實驗
通過模擬數(shù)據(jù)的實驗,驗證了 LINN 能夠求解邏輯變量和對邏輯方程進行推理。同時也揭示了 LINN 在其他實際任務(wù)中的應(yīng)用前景,只要這些任務(wù)可以表達為邏輯表達式。推薦既需要神經(jīng)網(wǎng)絡(luò)的泛化能力,又需要邏輯推理的推理能力。
為了將 LINN 應(yīng)用到推薦任務(wù)中,我們首先將其轉(zhuǎn)換為一個邏輯公式化的問題。推薦的關(guān)鍵問題是根據(jù)歷史交互理解用戶偏好。
邏輯表達式可以很容易地用于建模用戶歷史記錄中的物品關(guān)系。例如,如果一個用戶購買了 iPhone,他/她可能需要一個 iPhone 保護套而不是 Android 數(shù)據(jù)線,例如,iPhone ∧ iPhone 保護套 = T,而 iPhone ∧ Android 數(shù)據(jù)線 = F。
如果用戶 ui 喜歡/不喜歡 物品 vj,則讓 。然后,如果用戶 ui 喜歡物品 vj3,在一系列歷史交互之后,按照時間
排序,邏輯表達式可以表示為:

這種表達式形式具有兩個顯著優(yōu)點:
模型可以從用戶歷史篩選掉無關(guān)交互。例如,如果 vj1、 vj2、 vj3分別是 iPhone、貓糧和 iPhone 外殼,只要 vj1∧ vj3接近正向量T,不管 vj2∧ vj3的向量是什么樣的。
訓(xùn)練后的模型,給定用戶歷史和目標物品,該模型不僅預(yù)測了用戶對物品的偏好程度,而且還通過對表達式中的每個關(guān)聯(lián)項進行評估,找出哪些物品是相關(guān)的。這樣可以為構(gòu)建可解釋性推薦提供基礎(chǔ)。
在構(gòu)建表達式時,如果用戶有更多的歷史交互,可能會有更高的階和更多的關(guān)系,上面的表達式中的析取項數(shù)量將呈指數(shù)增長。 一種解決方案是隨機抽樣或使用一些設(shè)計的抽樣策略。
在這項工作中,為了簡化模型,只考慮了一階關(guān)系,這足以超越許多最先進的方法。 此外,文中還提到模型的優(yōu)勢:
值得注意的是,上面的推薦模型是非個性化的,也就是說,沒有學(xué)習(xí)用戶嵌入來進行預(yù)測和推薦,而是僅僅依靠物品關(guān)系來進行推薦。
然而,正如我們將在下面的實驗中展示的那樣,這種簡單的非個性化模型優(yōu)于最先進的個性化神經(jīng)元序列推薦模型,這顯示了推理在推薦任務(wù)中的巨大潛力。
推薦實驗設(shè)置
模型訓(xùn)練按照如下loss:



具體用的數(shù)據(jù)是這個有評分數(shù)據(jù)的數(shù)據(jù)集(顯式數(shù)據(jù))

評分數(shù)據(jù)被轉(zhuǎn)化為0和1,以構(gòu)成邏輯表達式。等于或高于4的評分定義為1,這意味著積極的態(tài)度(like) ,其他的評分定義為0,表示不喜歡。
采用Leave-One-Out方式劃分數(shù)據(jù)集:訓(xùn)練-驗證-測試集。按照時間對每個用戶的交互進行排序,用戶的每個正向交互按照上述方式轉(zhuǎn)化為一個邏輯表達式。我們確保與用戶最早的5個正面交互相對應(yīng)的表達式都在訓(xùn)練集中。對于那些不超過5個正面交互的用戶,所有的表達式都在訓(xùn)練集中。對于剩余的數(shù)據(jù),每個用戶的最后兩個正表達式分別分布到驗證集和測試集中(如果只有一個用戶正表達式,則首選測試集)。所有其他表達式都在訓(xùn)練集中。
沒有透露具體怎么測試的,即是從全集物品進行評估,還是采樣一部分進行推薦評估

為了更好地理解 LINN 所學(xué)到的內(nèi)容,我們隨機選擇9部 ML-100k 的電影,并使用 LINN 來預(yù)測它們的共現(xiàn)(也就是說,被同一個用戶喜歡)。這些電影根據(jù)它們在訓(xùn)練集中的受歡迎程度(互動次數(shù))進行排名。 超過30個用戶與前3部電影互動,與后3部電影互動的用戶不到5個。

雖然我們沒有為 AND 或 OR 設(shè)計一個對稱的網(wǎng)絡(luò),但 LINN 成功地發(fā)現(xiàn) vi ∧ vj 接近 vj ∧ vi。熱圖矩陣中的對稱位置具有相似的值,這表明了這一點。
LINN 可以學(xué)習(xí)到受歡迎的物品組合被同一個用戶消費的概率更高。
? LINN 可以發(fā)現(xiàn)物品之間的潛在關(guān)系。例如,第602項是一個流行的歌舞音樂電影,第1144項是一個不受歡迎的戲劇電影,但他們屬于類似類型的電影。我們看到 LINN 能夠了解到他們被同一個用戶喜歡的概率很高(共現(xiàn)概率高)。
總結(jié)
簡單來說,這篇工作提出了一個新的框架,將神經(jīng)網(wǎng)絡(luò)和基本的一階邏輯推理進行融合,能夠進行有效的邏輯推理。將這樣的結(jié)構(gòu)與推薦任務(wù)相結(jié)合,將推薦序列變成一個邏輯表達式,是非常新穎的做法,在實驗上也證明了該設(shè)計的有效性。當(dāng)然還存在一些小問題,主要是在模型實驗上(如:測試規(guī)模/模型對比實驗為何都是考慮序列推薦,相關(guān)工作也是特別新的工作;而且需要有評分信息這類顯式反饋,比較有局限性;對隱式反饋怎么做?)
總體來講,這篇工作還是比較有創(chuàng)新性和啟迪價值,可以為我們做推薦開拓新的思路和方向,考慮將邏輯推理與ML/DL結(jié)合。
湊巧最近聽了周志華教授的反繹學(xué)習(xí),將機器學(xué)習(xí)與知識結(jié)合起來,提出了一種新的框架,對于未來這應(yīng)該是一個重要的研究趨勢。
END
如果覺得有用,歡迎點贊關(guān)注贊賞,若對推薦感興趣歡迎評論區(qū)/私信交流~~~
