基於邏輯規則的圖譜推理

来源:https://www.cnblogs.com/datafuntalk/archive/2022/05/02/16216333.html
-Advertisement-
Play Games

導讀: 近年來,知識圖譜在眾多行業場景被大量應用,例如推薦、醫療。為了構造儘可能完備的圖譜,知識圖譜的推理工作也成為學術屆和工業界的一個重要研究課題。來自Mila人工智慧實驗室的瞿錳博士,給大家分享了他們在圖譜推理任務方向的一個研究:基於邏輯規則的圖譜推理(RNNLogic: Learning Lo ...


file


導讀: 近年來,知識圖譜在眾多行業場景被大量應用,例如推薦、醫療。為了構造儘可能完備的圖譜,知識圖譜的推理工作也成為學術屆和工業界的一個重要研究課題。來自Mila人工智慧實驗室的瞿錳博士,給大家分享了他們在圖譜推理任務方向的一個研究:基於邏輯規則的圖譜推理(RNNLogic: Learning Logic Rules for Reasoning on Knowledge Graphs),研究結果顯示RNNLogic可以很好地兼顧圖譜推理任務的模型效果和可解釋性的問題。

本文將圍繞以下幾點展開:

  • 圖譜和圖譜推理介紹
  • 常見方法和優缺點
  • 邏輯規則學習方法 RNNLogic
  • 工作展望

--

01 圖譜和圖譜推理介紹

file

知識圖譜可以看作是我們真實世界中的一些事實的集合,每一條事實可以表示成(h,r,t)或者r(h,t)的形式。比如說我們知道比爾蓋茨是微軟公司的創始人,我們就可以得到一個(Bill Gates, co-founder of, Microsoft)的3元組組成的事實。在實際生活當中,有眾多知識圖譜,總結了各個領域的相關知識。

這些知識圖譜在很多應用中發揮著重要作用。比如推薦系統中,知識圖譜可以幫助我們更好地挖掘用戶的興趣;還有藥物再利用方面,對於藥物的屬性、疾病的屬性以及藥物和疾病之間關係的已有信息,可以幫助我們去發現新的藥物和疾病間的聯繫,從而更好地去對抗疾病。

不過在實際應用過程中存在的一個問題,圖譜信息是不完全的,而補全圖譜的人工成本又是非常巨大的,尤其是像是一些醫葯、金融等一些特定的領域。如果還要考慮知識的動態更新的話,就更加大了圖譜補全的難度。

file

也正是這些問題促成了關係預測這個任務(用來補全圖譜),在知識圖譜里,關係預測也被稱作知識圖譜推理。圖譜推理的任務就是給定已有圖譜,去推理出圖譜中的一些缺失的邊。比如上圖,我們希望能推出紅色的邊(詹姆斯出生在巴黎)。

--

02 常見方法和優缺點

1. 圖譜表示法

file

圖譜推理最常見的方法是基於知識圖譜表示(KG Embedding)的方法,基本思想就是希望把每一個實體或者關係做向量嵌入,通過這些向量表示來進行推斷找到缺失的邊。

  • 優點:通常能有較好的預測效果。
  • 缺點:模型缺乏可解釋性。

2. 歸納邏輯編程法

file

考慮到圖譜嵌入法的可解釋性差,我們希望通過學習一些邏輯規則來完成這個任務,提高可解釋性。大概的思路是給定已有的知識圖譜,我們希望可以從知識圖譜裡面提取出一些通用邏輯規則,如上圖出生地(born in)和城市(city of)兩個關係可以用來推斷國籍(nationality),再反過來去做關係預測。通過這樣的方式,可以使得模型的可解釋性更強,而且生成的規則也具有更好的可泛化性。

file

以上的問題可以通過概率形式建模。如上圖所示,我們將這個任務建模分成兩部分,生成器(generator)和 預測器(predictor)。其中生成器用來生成邏輯規則,預測器將利用生成的規則和已有的圖譜去預測最後的答案。對於這樣的形式,我們會有不同的方法來解決,其中之一是歸納邏輯編程(Inductive logic programming)。

file

這種方法的核心是學到一個好的預測器,然後在具體在操作的過程中,他們會利用一個固定的生成器(比如一套邏輯規則的模板)生成出大量的潛在邏輯規則,在預測階段會給每個潛在的邏輯規則一個權重(weight),最後從所有的邏輯規則裡面挑選權重大的規則,當作學習到的比較重要的規則。

  • 優點:整個框架的優化比較簡單。
  • 缺點:對規則的搜索空間大,因為固定的生成器。如果想要得到比較好的結果就要嘗試大量的邏輯規則,導致效率較低。

3. 基於強化學習的方法

file

另外一類方法是基於強化學習的方法,其思想和之前的方法是完全相反的,是直接去學習一個生成器,給定一個查詢(Query)後可以直接生成一個規則,一旦有了這個規則之後,就可以根據規則定義的關係在知識圖譜上去做隨機游走,得到我們想要的答案。在這個框架里,只有生成器是可以學習的,預測器是相對簡單的,固定的。

  • 優點:預測搜索效率高。
  • 缺點:整個框架的優化很難;依賴KGE(圖譜嵌入)的方法來做激勵調整。

--

03 邏輯規則學習方法 RNNLogic

1. 研究背景

file

在對上面兩個方法對比時,我們發現一個方法側重在學習生成器,另一個側重學習預測器。我們希望有一種框架,可以同時訓練生成器和預測器,也就是RNNLogic的一個核心點。

2. RNNLogic方法

file

在我們的研究里主要考慮鏈式的邏輯規則,如上圖中所示,可以將鏈式的邏輯規則變成一個關係序列,其中用END來表示結尾。那很自然的,我們可以通過LSTM來生成這些不同的鏈式邏輯規則,並輸出每一條邏輯規則的概率,進而得到一個弱邏輯規則的集合。

file

接著我們使用了一個叫做隨機邏輯編程(stochastic logic programming)的框架來去定義預測器。會通過生成器的弱關係集合進行游走,如圖中所示的兩種關係鏈,第一種可以得到France這個答案,第二個邏輯規則可以得到France,Canada和US三個答案。對於每個潛在答案,我們可以給它定義一個分數,也就是到達這個實體的邏輯規則的weight的和。最後就可以根據分數得到每種答案的概率,挑選出那些概率最大的來當成我們最終的答案。

file

當前方法的主要難點是如何優化,因為無論是生成器還是預測期,都是動態學習的,所以優化起來可能會有一定難度。而我們發現生成器和預測器兩者的難度是不同的,前者由於對後者的依賴,使得生成器是需要依賴於預測器的結果來進行動態調整的,所以生成器會更難些。

file

為瞭解決這個難點,我們提出了上圖所示的框架。像之前的一些方法,是給定了一個生成器生成了一些邏輯規則送給預測期,讓預測器給生成器反饋這個邏輯規則的集合是好還是壞。我們的思路是希望預測器給生成器的反饋更加具體,譬如哪幾條規則更重要,從而幫助生成器更好地去更新,得到更好的結果。最後,整個優化的過程可以如下表示:

file

首先第一步,給定一個查詢(Query),讓生成器生成很多邏輯規則,再把邏輯規則和知識圖譜同時送到預測器裡面,去更新預測器,最大化生成正確答案的概率。

file

接著,從所有生成的這些邏輯規則裡面去挑選出那些最重要的邏輯規則。這裡我們通過使用後驗推斷的方法來計算每一條弱的邏輯規則的後驗概率進行挑選。因此,在整個過程中,每一條弱的規則概率是由生成器來提供的,似然函數由預測器來提供。這樣結合兩者共同的信息來得到一個比較重要的邏輯規則。

file

最後,我們就可以把找到的高質量的邏輯規則當成訓練數據,送回生成器去學習。

3. 實踐效果

file

最後我們通過實驗來比較我們的演算法和現有演算法的效果。上圖是在常見的FB15K和WN18RR兩個數據上的實驗對比,可以看到,我們的方法能達到嵌入方法差不多的效果,而且有更好的可解釋性,因此,它的潛力還是比較大的。

file

另一個有趣的實驗是和模型生成的邏輯規則數量有關,可以看到針對某個關係,只生成10個邏輯規則就可以有個不錯的效果,數量提升到100基本就收斂了。也就是只需要比較少的邏輯規則就可以對知識圖譜中缺失的邊進行有效的預測。

file

上圖是我們最後生成的樣例,整體規則是多樣的,既有長度為1的比較短的規則,也有些跳四五步才能推斷出來的很長的邏輯規則。

4. 更複雜的預測器(RNNLogic+)

file

接著我們實驗一些更複雜的預測器來進行預測,前面仍然是給定一些邏輯規則,通過這些規則在圖譜里我們會得到不同的路徑,然後對於這些路徑我們用不同的方法來打分。比如上圖我們既用了LSTM的Score,也用了圖嵌入(KGE)的Score來打分,來得出我們最終預測結果的得分和答案。

file

通過這個更複雜的預測器我們可以看到它的結果可以是被進一步提升的,如上圖在兩個數據集里我們分別用100個邏輯規則和200個邏輯規則,就可以得到非常好的結果。而且在像wordNet(WN18RR)這種相對稀疏的圖譜中,提升更明顯。

--

04 工作展望

基於邏輯規則的模型在知識圖推理中受到越來越多的關註,因為它可以比較好的融合神經網路和符號規則的方法,而且會同時擁有比較好的可解釋性和好的結果。今後一個值得探索的方向是,如何去設計更強大的neural-symbolic的模型。

第二個值得關註的方向是如何把文本信息結合進來。因為在實際應用的時候,我們會發現圖譜並不是單獨存在的,往往是和文本信息同時存在的,因此如何在這種混合的數據上面進行知識推理,也將會是一個值得探索的方向。


今天的分享就到這裡,謝謝大家。

本文首發於微信公眾號“DataFunTalk”


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用Metalama為VisualStudio "重構"\ LiveTemplate 菜單中動態添加功能 ...
  • C#自定義配置文件教程,C#App.Config自定義配置文件教程,C#web.Config自定義配置節點 ...
  • 我前面幾篇隨筆介紹了關於幾篇關於SqlSugar的基礎封裝,已經可以直接應用在Winform項目開發上,並且基礎介面也通過了單元測試,同時測試通過了一些Winform功能頁面;本篇隨筆繼續深化應用開發,著手在在.net6框架的Web API上開發應用,也就是基於.net core的Web API應用... ...
  • 本文講講 Ubuntu 18 及以上版本配置 IP 的方法,為什麼它值得一講,因為以 Ubuntu 16 為首的版本的配置方法已經不適用了,如果你還不知道,那本文正好 get 一個新技能。 Ubuntu 18 之後版本配置方法 需要使用 netplan 工具。 對應配置文件: /etc/netpla ...
  • 文件和目錄 1. 文件系統 我們可以把一個磁碟分成一個或多個分區,每個分區包含一個文件系統,這個文件系統由很多柱面組成,而柱面中有一個非常重要的概念叫做 i 節點。 i 節點包含了文件的大部分信息,如文件類型,文件訪問許可權位,文件大小和指向文件數據的指針等,大多數信息都存在st_mode成員中,有兩 ...
  • MySQL學習(第一節自習課) 一. 軟體下載、安裝 下載地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->installer->community1 離線安裝版本,不要選帶web路徑的是離線安裝版本。 安裝省略 進程名稱:mysqld. ...
  • 聲明 個人原創, 轉載需註明來源 https://www.cnblogs.com/milton/p/16216347.html 數據類產品 最近的項目需要接觸大數據處理相關的產品, 涉及了ETL, 數據挖掘和統計, 數據可視化等功能, 因此瞭解了一下這個行業的產品和工具. 最近看的產品主要是 Qua ...
  • Hbase Hbase是一種NoSql模式的資料庫,採用了列式存儲。而採用了列存儲天然具備以下優勢: 可只查涉及的列,且列可作為索引,相對高效 針對某一列的聚合及其方便 同一列的數據類型一致,方便壓縮 同時由於列式存儲將不同列分開存儲,也造成了讀取多列效率不高的問題 LSM Tree 說到HBase ...
一周排行
    -Advertisement-
    Play Games
  • 一:背景 準備開個系列來聊一下 PerfView 這款工具,熟悉我的朋友都知道我喜歡用 WinDbg,這東西雖然很牛,但也不是萬能的,也有一些場景他解決不了或者很難解決,這時候藉助一些其他的工具來輔助,是一個很不錯的主意。 很多朋友喜歡在項目中以記錄日誌的方式來監控項目的流轉情況,其實 CoreCL ...
  • 本來閑來無事,準備看看Dapper擴展的源碼學習學習其中的編程思想,同時整理一下自己代碼的單元測試,為以後的進一步改進打下基礎。 突然就發現問題了,源碼也不看了,開始改代碼,改了好久。 測試Dapper.LiteSql數據批量插入的時候,耗時20秒,感覺不正常,於是我測試了非Dapper版的Lite ...
  • 需求如下,在DEV框架項目中,需要在表格中增加一列顯示圖片,並且能編輯該列圖片,然後進行保存等操作,最終效果如下 這裡使用的是PictureEdit控制項來實現,打開DEV GridControl設計器,在ColumnEdit選擇PictureEdit: 綁定圖片代碼如下: DataTable dtO ...
  • 前兩天微軟偷偷更新了Visual Studio 2022 正式版版本 17.3 發佈,發佈摘要: MAUI 工作負荷 GA 生成 MAUI/Blazor CSS 熱重載支持 現在,你將能夠使用我們的新增功能在 Visual Studio 中使用每個更新試用一系列新功能。 選擇每個功能以瞭解有關特定功 ...
  • 航天和軍工領域的數字化轉型和建設正在積極推進,在與航天二院、航天三院、航天六院、航天九院、無線電廠、兵工廠等單位交流的過程中,用戶更聚焦試驗和生產過程中的痛點,迫切需要解決軟體平臺統一監測和控制設備及軟體與設備協同的問題。 ...
  • .NET 項目預設情況下 日誌是使用的 ILogger 介面,預設提供一下四種日誌記錄程式: 控制台 調試 EventSource EventLog 這四種記錄程式都是預設包含在 .NET 運行時庫中。關於這四種記錄程式的詳細介紹可以直接查看微軟的官方文檔 https://docs.microsof ...
  • 一:背景 上一篇我們聊到瞭如何去找 熱點函數,這一篇我們來看下當你的程式出現了 非托管記憶體泄漏 時如何去尋找可疑的代碼源頭,其實思路很簡單,就是在 HeapAlloc 或者 VirtualAlloc 時做 Hook 攔截,記錄它的調用棧以及分配的記憶體量, PerfView 會將這個 分配量 做成一個 ...
  • 背景 在 CI/CD 流程當中,測試是 CI 中很重要的部分。跟開發人員關係最大的就是單元測試,單元測試編寫完成之後,我們可以使用 IDE 或者 dot cover 等工具獲得單元測試對於業務代碼的覆蓋率。不過我們需要一個獨立的 CLI 工具,這樣我們才能夠在 Jenkins 的 CI 流程集成。 ...
  • 一、應用場景 大家在使用Mybatis進行開發的時候,經常會遇到一種情況:按照月份month將數據放在不同的表裡面,查詢數據的時候需要跟不同的月份month去查詢不同的表。 但是我們都知道,Mybatis是ORM持久層框架,即:實體關係映射,實體Object與資料庫表之間是存在一一對應的映射關係。比 ...
  • 我國目前並未出台專門針對網路爬蟲技術的法律規範,但在司法實踐中,相關判決已屢見不鮮,K 哥特設了“K哥爬蟲普法”專欄,本欄目通過對真實案例的分析,旨在提高廣大爬蟲工程師的法律意識,知曉如何合法合規利用爬蟲技術,警鐘長鳴,做一個守法、護法、有原則的技術人員。 案情介紹 深圳市快鴿互聯網科技有限公司 2 ...