基於邏輯規則的圖譜推理

来源: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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...