今天不寫程式碼,聊聊熱門的知識圖譜

2022-09-14 12:01:01

原創:微信公眾號 碼農參上,歡迎分享,轉載請保留出處。

哈嘍大家好啊,我是Hydra。

前一段時間,boss交給我個任務,讓我調研一下知識圖譜技術。雖說有點NLP的底子,不過研究起這個來還是滿頭的包,終於還是在蒐集了不少資料後劃拉出來50多頁的PPT,那麼今天就淺淺的給大家分享一下知識圖譜的相關知識。

概述

誕生

知識圖譜的概念誕生於2012年,由谷歌公司首先提出。大家都知道,谷歌是做搜尋引擎的,所以他們最早提出了Google Knowledge Graph後,首先利用知識圖譜技術改善了搜尋引擎核心。

注意上面的說法,雖然知識圖譜誕生於2012年,但其實在更早的時間它還有另外一個名字,那就是語意。那麼語意又是什麼呢?參照《統計自然語言處理基礎》中的兩句話來解答這個問題:

語意可以分成兩部分,研究單個詞的語意(即詞義)以及單個詞的含義是怎麼聯合起來組成句子(或者更大的單位)的含義。

語意研究的是詞語的含義、結構和說話的方式。

那麼,知識圖譜究竟是個什麼東西呢?

你可以將它理解為是在自然界建立實體關係的知識資料庫,它的提出是為了準確地闡述人、事、物之間的關係。

目前在學術界還沒有給知識圖譜一個統一的定義,但是在谷歌釋出的檔案中有明確的描述:「知識圖譜是一種用圖模型來描述知識和建模世界萬物之間關聯關係的技術方法」

演進

谷歌的Singhal博士用三個詞點出了知識圖譜加入之後搜尋發生的變化:

「Things,not string.」

這寥寥的幾個單詞,點出了知識圖譜的核心。以前的搜尋,都是將要搜尋的內容看作字串,結果是和字串進行匹配,將匹配程度高的排在前面,後面按照匹配度依次顯示。而利用知識圖譜之後,將搜尋的內容不再看作字串,而是看作客觀世界的事物,也就是一個個的個體。

舉個例子,當我們在搜尋比爾蓋茲的時候,搜尋引擎不是搜尋「比爾蓋茲」這個字串,而是搜尋比爾蓋茲這個人,圍繞比爾蓋茲這個人,展示與他相關的人和事。

在上面的圖中,左側百科會把比爾蓋茲的主要情況列舉出來,右側顯示比爾蓋茲的微軟產品和與他類似的人,主要是一些IT行業的創始人。這樣,一個搜尋結果頁面就把和比爾蓋茲的基本情況和他的主要關係都列出來了,搜尋的人很容易找到自己感興趣的結果。

三要素

在知識圖譜中,通過三元組 <實體 × 關係 × 屬性> 集合的形式來描述事物之間的關係:

  • 實體:又叫作本體,指客觀存在並可相互區別的事物,可以是具體的人、事、物,也可以是抽象的概念或聯絡,實體是知識圖譜中最基本的元素
  • 關係:在知識圖譜中,邊表示知識圖譜中的關係,用來表示不同實體間的某種聯絡
  • 屬性:知識圖譜中的實體和關係都可以有各自的屬性

這裡所說的實體和普通意義上的實體略有不同,借用NLP中本體的概念來理解它會比較好:

本體定義了組成主題領域的詞彙表的基本術語及其關係,以及結合這些術語和關係來定義詞彙表外延的規則

例如我們要描述大學這一領域時,對它來說教工學生課程就是相對比較重要的概念,並且教工和學生之間也存在一定的關聯關係,此外物件之間還存在一定的約束關係,例如一個系的教職員工數量不能少於10人。

在瞭解了上面的三元組後,我們可以基於它構建下面這樣的一個關係:

可以看到,女王和王儲通過母子關係關聯在一起,並且每個人擁有自己的屬性。

當知識圖譜中的節點逐漸增多後,它的表現形式就會類似於化學分子式的結構,一個知識圖譜往往存在多種型別的實體與關係。

知識圖譜將非線性世界中的知識資訊進行加工,做到這樣的結構化、視覺化,從而輔助人類進行推理、預判、歸類。

到這裡,可以簡單概括一下知識圖譜的基本特徵:

  • 知識結構網路化
  • 網路結構複雜
  • 網路由三元組構成
  • 資料主要由知識庫承載

場景

搜尋

前面提到過,以前的搜尋引擎是從海量的關鍵詞中找出與查詢匹配度最高的內容,按照查詢結果把排序分值最高的一些結果返回給使用者。在整個過程中,搜尋引擎可能並不需要知道使用者輸入的是什麼,因為系統不具備推理能力,在精準搜尋方面也略顯不足。而基於知識圖譜的搜尋引擎,除了能夠直接回答使用者的問題外,還具有一定的語意推理能力,大大提高了搜尋的精確度。

推薦

在傳統的推薦系統中,存在兩個典型問題:

  • 資料稀疏問題:在實際應用場景中,使用者和物品的互動資訊往往是非常稀疏的,預測會產生過擬合風險
  • 冷啟動問題:對於新加入的使用者或者物品,由於系統沒有其歷史互動資訊,因此無法進行準確地建模和推薦

例如,在一個電影類網站中可能包含了上萬部電影,然而一個使用者打過分的電影可能平均只有幾十部。使用如此少量的已觀測資料來預測大量的未知資訊,會極大地增加演演算法的過擬合風險。

因此在推薦演演算法中會額外引入一些輔助資訊作為輸入,這些輔助資訊可以豐富對使用者和物品的描述,從而有效地彌補互動資訊的稀疏或缺失。在各種輔助資訊中,知識圖譜作為一種新興型別的輔助資訊,這幾年的相關研究比較多。

下面就是一個基於知識圖譜的推薦例子:

在將知識圖譜引入推薦系統後,具有以下優勢:

  • 精確性:知識圖譜為物品引入了更多的語意關係,可以深層次地發現使用者興趣
  • 多樣性:知識圖譜提供了實體之間不同的關係連線種類,有利於推薦結果的發散,避免推薦結果侷限於單一型別
  • 可解釋性:知識圖譜可以連線使用者的歷史記錄和推薦結果,從而提高使用者對推薦結果的滿意度和接受度,增強使用者對推薦系統的信

此外,知識圖譜技術還在問答與對話系統、語言理解、決策分析等多個領域被廣泛應用,它被掛載在這些系統之後,充當背景知識庫的角色。總的來說,在這些場景下的應用,可以概括整個AI的發展趨勢,就是從感知認知的一個過程。

架構

知識圖譜的構建目前已有一套比較完善的架構體系,可以先來看一下下面這張圖,然後我們再慢慢解釋:

總的來說,整體過程可以分為下面5步:

  • 1.資料獲取:主要獲取半結構化資料,為後續的實體與實體屬性構建做準備。結構化資料則為數值屬性做準備
  • 2.知識獲取:從文字資料集中自動識別出命名實體,包括抽取人名、地名、機構名等;從語料中抽取實體之間的關係,形成關係網路;從不同的資訊源中採集特定的屬性資訊
  • 3.知識融合:完成指示代詞與先行詞的合併;完成同一實體的歧義消除;將已識別的實體物件,無歧義地指向知識庫中的目標實體
  • 4.知識加工:構建知識概念模組,抽取本體;進行知識圖譜推理,並對知識圖譜的可信度進行量化評估,評估過關的知識圖譜流入知識圖譜庫中儲存,評估不過關的知識圖譜返回一開始的資料環節進行調整,而後重複相同環節直到評估過關
  • 5.知識儲存與計算:儲存是為了快速查詢與運用知識,需支援底層資料描述與上層計算,有的主體計算包含在儲存中

下面,我們拆解其中部分重要核心細節,來具體描述。

知識獲取

資料是知識圖譜的根基,直接關係到知識圖譜構建的效率和質量。所以我們先從資料來源進行分析它們的優勢與劣勢:

  • 站內資料:優勢在於類別明確,結構化好,易於獲取;而劣勢在於型別有限,已有資料並不是廣義上的知識型別
  • 垂直網站資料:優勢在於類別明確;而劣勢在於獲取解析成本高,資料質量參差不齊
  • 百科類網站資料:優勢在於資料量大,內容豐富;而劣勢在於沒有分類資訊,結構不完全固定
  • 人工建立的資料:優勢在於類別明確;而劣勢在於類別明確

實體抽取

實體抽取,是指從資料中識別和抽取實體的屬性與關係資訊,這一過程還是針對不同結構的資料來看:

  • 結構化資料:包括站內/垂直網站資訊、部分百科網站資訊,可以利用策略模式,將抽取的具體規則用groovy指令碼來實現
  • 半結構化資料:包括百科網站中的表格以及列表,可以利用基於監督學習的包裝器歸納方法進行抽取
  • 非結構化資料:包括百科網站中的文字以及站內文字,可以利用自然語言處理的手段處理

關係抽取

回顧一下我們前面提到過的知識圖譜三要素,分別是實體、關係和屬性。關係抽取我們同樣可以用一個三元組表示的RDF graph

這樣的一個(S,P,O)三元組,就可以將一份知識分解為主語、謂語、賓語。這樣的SPO結構,在配合知識圖譜進行儲存時可以被用來當做儲存單元。

在RDF中可以宣告一些規則,從一些關係推匯出另一些關係,這些規則被稱為RDF Schema。規則可以用一些詞彙表示,如classsubClassOftypepropertysubPropertyOfdomainrange等。

下面這個例子中,節點到節點之間的關係就可以理解為前面提到的本體中的聯絡,而這一關聯過程就可以被稱為知識圖譜中的推導或關聯推理:

知識融合

知識融合這一過程中,主要包括指代消解、實體對齊、實體連結等過程,我們主要來看一下這個過程中比較重要的實體對齊(Object Alignment)。

完成實體抽取後,存在實體ID不同但代表真實世界中同一物件的情況。知識融合即是將這些實體合併成一個具有全域性唯一標識的實體物件,新增到知識圖譜中。

  • 首先在索引中根據名字、別名等欄位查詢出若干個可能是相同實體的候選列表,這個步驟的目的是減少接下來流程的計算量
  • 然後經過實體判別模型,根據模型得分識別出待合併對齊的原始實體
  • 最後經過屬性融合模型,將各原始實體的屬性欄位進行融合,生成最終的實體。

這一過程可以用下面的圖來表示:

實際上,這個流程中的合併判斷模型大家都比較熟悉,它就是通過機器學習訓練生成的二分類器。

知識圖譜構建與補全

知識圖譜普遍存在不完備的問題,在這一步需要做的,就是基於圖譜裡已有的關係,去推理出缺失的關係。

在下面的這張知識圖譜的實體網路中,黃色的箭頭表示已經存在的關係,紅色的虛線則是缺失的關係。我們可以根據實體之間的關係,來補全缺失的e3到e4之間的關係。

至於這一補全的過程,有很多現成的演演算法可以使用,例如基於路徑查詢的方法,基於強化學習的方法,基於推理規則的方法,基於元學習的方法等等。

知識儲存

知識圖譜的儲存依賴於圖資料庫及其引擎,不同廠商的實現可能大有不同,例如可以選用的圖資料庫有RDF4j、Virtuoso、Neo4j等。例如愛奇藝的圖資料庫引擎選擇了JanusGraph,藉助雲平臺的Hbase和ES叢集,搭建了自己的JanusGraph分散式圖資料庫引擎。

JanusGraph通過藉助外部的儲存系統與外部索引系統的支援,支撐了上游的線上查詢服務。

補充

底層儲存資料三元組的邏輯層次可以被稱為資料層,通常通過本體庫來管理資料層,本體庫的概念相當於物件中「類」的概念。而建立在資料層之上的模式層,是知識圖譜的核心,它藉助本體庫來管理公理、規則和約束條件,規範實體、關係、屬性這些具體物件間的關係。

從不同的視角去審視知識圖譜,可以更方便我們對其進行了解:

  • 在Web視角下,知識圖譜如同簡單文字之間的超連結一樣,通過建立資料之間的語意連結,支援語意搜尋
  • 在自然語言處理視角下,知識圖譜就是從文字中抽取語意和結構化的資料
  • 在知識表示視角下,知識圖譜是採用計算機符號表示和處理知識的方法
  • 在人工智慧視角下,知識圖譜是利用知識庫來輔助理解人類語言的工具
  • 在資料庫視角下,知識圖譜是利用圖的方式去儲存知識的方法

下面,就是一張構建完備後,比較易於我們理解的知識圖譜舉例:

看到這裡,是不是感覺知識圖譜的構建過程比較複雜,讓我們難於上手?

其實近些年來,深度學習和相關自然語言處理技術的迅猛發展使得非結構化資料的自動知識抽取少人化、乃至無人化成為了可能,現在已經提出了一些前沿的知識圖譜自動構建技術。

在深度學習的基礎上,艾倫人工智慧實驗室和微軟的研究人員結合自然語言處理領域較為成功的預訓練語言模型,提出了自動知識圖譜構建模型 COMET(COMmonsEnse Transformers)。

該模型可以根據已有常識庫中的自然語言內容自動生成豐富多樣的常識描述,在 Atomic 和 ConcepNet 兩個經典常識圖譜上都取得了接近人類表現的高精度,證明了此類方法在常識知識圖譜自動構建和補全方面替代傳統方法的可行性。

難點

資料治理困難

資料治理為知識圖譜輸送資料來源,是知識圖譜構建的前置環節與基礎性工程。完備良好的資料治理不僅能確保知識圖譜在搭建過程中獲取真實可靠的資料原料,而且能從源頭上改善資訊質量,提升知識的準確度,建立符合人類認知體系的資料資源池。

但是,資料治理在知識圖譜建設卡點中是一個老生常談的問題。知識圖譜應用始終要圍繞資料標籤、資料淨化、資料歸一、資料銷燬等資料治理環節展開,應用開發人員往往需要在前期的資料治理工作中投入大量時間和人力,以確保資料來源的真實性、可靠性、可用性、正確性。

當前,資料標準不統一、資料噪聲大、領域資料集缺失、資料可信度異常等資料治理難題依然困擾著知識圖譜研發者,持續進行資料治理工程是業內參與者艱鉅的使命與職責。

專家缺乏

目前知識圖譜行業整體處於開發資源待完善的局面,行業與技術專家資源稀缺屬於其中的一部分情況。

一方面,缺少具備深厚行業經驗的專家。由於行業知識圖譜與行業的關聯度高,開發人員需要迅速瞭解業務與客戶需求,在行業專家的指導下完成Schema構建,若涉及到文字抽取工作還需要行業專家進行資料標註,而各行各業中的行業專家往往僅有極少數。對此,供給方企業需要鎖定行業業務的強項領域、提前招募培養行業專家、進行內外共同作業,以完成行業專家儲備。

另一方面,缺少技術複合型專家。整個知識圖譜應用生產流程不僅涉及知識圖譜演演算法,生產流程的靠前環節還涉及到底層的圖資料儲存與資料治理、NLP文字抽取和語意轉換,同時各環節都滲透著機器學習這一底層人工智慧技術。這意味著整個生產流程需要多個技術領域的工程師協同合作,而對整套技術均有了解的技術專家數量稀缺。

底層儲存

由於知識圖譜是二維連結的圖結構而非行或列的表結構,其需以圖資料的形式描述並儲存,該方式能直接反應知識圖譜的內部結構,有利於知識查詢,結合圖計算演演算法進行知識的深度挖掘與推理。

滿足這一儲存要求的資料庫為近幾年興起的圖資料庫。相比於傳統的關係型資料庫,圖資料庫的資料模型以節點和邊來體現,可大大縮短關聯關係的查詢執行時間,支援半結構化資料儲存,展示多維度的關聯關係。高效便捷的新技術往往意味著更高的研發門檻。

流程與演演算法

在知識圖譜的搭建過程中,仍然面臨著各類演演算法難點,主要難點可歸結為生產流程中的演演算法難點和演演算法效能上的難點。前者體現為知識獲取受資料集限制、知識融合干擾因素較多、知識計算的資料集與算力不足等問題。

而後者體現為演演算法泛化能力不足、魯棒性不足、缺乏統一測評指標等問題。演演算法上的難點有賴於供需雙方、學術界、政府持續攻堅,而非一方努力即可收穫成功。

最後的碎碎念

拖了好久沒有更文,不知道大家有沒有想念我~

其實我這裡已經存了不少文章的選題了,不過最近工作上實在比較繁忙,下班時間基本上也都在配小肥羊玩,所以沒有什麼時間更文。就像這篇文章,也是我正在出差的高鐵上,根據前幾天彙報的PPT整理而成。

怎麼樣,沿途的風景,是不是還可以?

那麼,這次的分享就到這裡,我是Hydra,我們下篇再見。

作者簡介,碼農參上,一個熱愛分享的公眾號,有趣、深入、直接,與你聊聊技術。歡迎新增好友,進一步交流。