嘉賓| 王林
整理| 張鋒
策劃| 徐杰承
人工智能有兩個比較大的派系:理性主義和經(jīng)驗主義。但在真實的工業(yè)級產(chǎn)品中這兩種派系是相輔相成的。如何在這種模型黑盒里引入更多的可控性,更多的知識,需要將知識圖譜這樣一種承載了符號化的知識應用起來。
日前,在51CTO主辦的在??WOT全球技術創(chuàng)新大會上??,泰凡科技CTO王林博士為廣大參會者帶來了專題演進《圖數(shù)據(jù)庫:通往認知智能的新途徑》,重點介紹了圖數(shù)據(jù)庫模型的歷史與演進;圖數(shù)據(jù)庫實現(xiàn)認知智能的重要途徑,以及在OpenGauss上進行的圖數(shù)據(jù)庫設計與實踐經(jīng)驗。
現(xiàn)將演講內(nèi)容整理如下,希望對諸君有所啟發(fā):
從一定的維度來看,人工智能可以分為兩類,一類是聯(lián)結主義,也就是我們熟悉的深度學習,模擬人腦的結構來做一些感知、識別、判斷的事情。
另外一類則是符號主義,通常是模擬人的心智。認知過程是在符號表示上的一種運算。所以,它經(jīng)常是用于進行一些思考與推理。典型代表的技術就是知識圖譜。
圖增強AI的4種途徑
1、情景決策
知識圖譜本質(zhì)上是基于圖的語義網(wǎng)絡,表示了實體和實體之間的關系。從高層次上說,知識圖譜也是互相關聯(lián)知識的集合,以人類可以理解的形式描述現(xiàn)實世界和實體、事物相互的關系。
知識圖譜可以為我們帶來更多領域的知識、上下文的信息,幫助我們?nèi)プ鰶Q策。從應用的角度來說,可以把知識圖譜劃分成三種類型:
一是領域相關知識圖譜。將結構化、半結構化數(shù)據(jù)從中抽取出來的知識形成一個知識圖譜,這是領域中相關的,最典型的應用就是Google的搜索引擎。
二是外部感知知識圖譜。聚合外部的數(shù)據(jù)源,將其映射到我們感興趣的內(nèi)部的實體。典型應用是在供應鏈風險分析時,通過供應鏈能看到供應商,它的上下游、工廠等供應線的信息,這樣就可以分析哪里存在問題,有沒有中斷的風險。
三是自然語言處理知識圖譜。自然語言處理包含大量技術術語甚至是領域的關鍵詞等,可以幫助我們?nèi)プ鲎匀徽Z言的查詢。
2、提高運行效率
機器學習的方法經(jīng)常依賴于存儲在表中的數(shù)據(jù),而這些數(shù)據(jù)其實大部分是資源密集型的操作,知識圖譜可以提供高效率領域的相關內(nèi)容,把數(shù)據(jù)聯(lián)結起來,在關系上實現(xiàn)多個分離度,有利于大規(guī)??焖俜治?。從這個角度來說,圖本身就加速了機器學習的效果。
再者機器學習算法常常要針對所有的數(shù)據(jù)進行計算。通過簡單的圖查詢,就可以返回所要數(shù)據(jù)的子圖,以此來加速加速運行效率。
3、提高預測準確性
關系往往是行為最強的預測因素,關系的特征可以從圖里很方便地獲取到。
通過關聯(lián)數(shù)據(jù)和關系圖,可以更直接地提取關系的特征。但在傳統(tǒng)的機器學習方法中,有時在抽象簡化數(shù)據(jù)時其實會丟失很多重要的信息。因此,關系特性可以讓我們在分析時不會丟失這些信息。此外,圖算法簡化了發(fā)現(xiàn)類似緊密社區(qū)的異常情況的過程。我們可以在緊密社區(qū)中對節(jié)點進行評分,并提取該信息以用于訓練機器學習模型。最后,使用圖算法進行特征選擇,以將模型中使用的特征數(shù)量減少到一個最相關的子集。
4、可解釋性
這幾年我們經(jīng)常能夠聽到“可解釋性”,這也是應用人工智能過程中一個特別大的挑戰(zhàn),我們需要理解人工智能是怎么得出這個決策、這個結果的,同時在可解釋方面有很多訴求,尤其是一些特定應用領域,比如醫(yī)療、金融和司法。
可解釋性包含三方面的內(nèi)容:
(1)可解釋的數(shù)據(jù)。我們需要知道數(shù)據(jù)選擇的原因,數(shù)據(jù)的來源是什么?數(shù)據(jù)是要有可解釋性的。
(2)可解釋的預測??山忉尩念A測意味著我們需要知道特定的預測使用了哪些特征,用了哪些權重。
(3)可解釋的算法??山忉尩乃惴壳扒熬昂苷T人,但還是有很長的路要走,目前在研究領域里提出了張量網(wǎng)絡,引用這樣的方法讓算法能具備一定的可解釋性。
主流圖數(shù)據(jù)模型
既然圖對于人工智能應用和發(fā)展如此重要,那么我們該如何將它用好呢?首先需要關注的是圖的存儲管理,也就是圖數(shù)據(jù)模型。
目前最主流的圖數(shù)據(jù)模型有兩種:RDF圖和屬性圖。
1、RDF圖
RDF全稱為資源描述框架,是由W3C制定的在語義萬維網(wǎng)上用來表示交換機器可理解信息的一個標準數(shù)據(jù)模型。在RDF圖中,每個資源有一個HTTP URL作為其中的一個唯一ID。RDF定義是一種三元組的形式,表示一個事實的陳述,S代表主語,P是謂語,O是賓語。圖中Bob is interested in The MonoLisa,陳述了一個事實,這就是RDF圖。
對應RDF圖的數(shù)據(jù)模型,有著自己的查詢語言——SPARQL。SPARQL是W3C制定的RDF知識圖譜的標準查詢語言。SPARQL語法上借鑒了SQL,是一種聲明式的查詢語言,查詢的基本單元也是三元組的模式。
2、屬性圖
屬性圖模型中每一個頂點和邊都具有一個唯一ID,頂點和邊還有一個標簽,作用相當于RDF圖中的資源類型。此外,頂點和邊上還具有一組屬性,由屬性名和屬性值組成,這樣就組成了一個屬性圖模型。
同樣屬性圖模型也有一套查詢語言——Cypher。Cypher也是一種聲明式的查詢語言,用戶只需要聲明要查什么,而不需要指出怎么查。Cypher有一個主要的特點,是使用ASCII 藝術的語法表達圖模式匹配。
伴隨人工智能的發(fā)展,認知智能的發(fā)展和知識圖譜的應用越來越多。因此,圖數(shù)據(jù)庫近年來在市場中得到了越來越多的關注,但目前在圖上面臨的一個重要問題就是數(shù)據(jù)模型和查詢語言的不統(tǒng)一,這是亟待解決的問題。
研究OpenGauss圖數(shù)據(jù)庫的動機
研究OpenGauss圖數(shù)據(jù)庫的出發(fā)點主要有兩方面。
一方面想借助知識圖譜本身的特性。例如在高性能、高可用、高安全和易運維幾方面,能夠將這些特性融入到圖數(shù)據(jù)庫中,對數(shù)據(jù)庫而言這些非常重要。
另一方面從圖數(shù)據(jù)模型考慮出發(fā)。目前有兩種數(shù)據(jù)模型與兩種查詢語言,如果對齊這兩種不同查詢語言背后形式的語義運算符,好比關系型數(shù)據(jù)庫里的投影、選擇、連接等,如果對齊SPARQL和Cypher語言背后的語義,提供兩種不同的語法視圖,這樣自然實現(xiàn)了一種互操作。也就是內(nèi)部能夠達到語義的一致,如此就能用Cypher查RDF的圖,也能用SPARQL查屬性圖,這就形成了一個非常好的特性。
OpenGauss—Graph架構
底層使用OpenGauss,用關系模型看作圖儲存物理模型,思路是將RDF圖和屬性圖的不一致,通過求最大公約數(shù)的方式,在底層物理存儲上做一個統(tǒng)一。
基于這個思路,OpenGauss—Graph的架構最底層就是基礎設施,依次往上是存取方法、統(tǒng)一的屬性圖和RDF圖的處理和管理方式。緊接著是統(tǒng)一的查詢處理執(zhí)行引擎,用以支撐統(tǒng)一的語義算子,包含子圖匹配算子、路徑導航算子、圖分析算子、關鍵字查詢算子。再往上是統(tǒng)一的API接口,提供SPARQL的接口和Cypher的接口。此外還有統(tǒng)一的查詢語言的語言標準以及交互查詢的可視界面。
存儲方案的設計
設計存儲方案時主要考慮如下兩點:
(1)不能太復雜,因為太復雜存儲方案的效率不會太高。
(2)要能夠很巧妙地容納下兩種不同知識圖譜的數(shù)據(jù)類型。
因此,便有了點表和邊表的存儲方案。有一個公共的點表叫properties,針對不同的點,會有一個繼承;邊表也會有不同邊表的繼承。不同類型的點表、邊表會有一份copy,這樣就維護了一個點邊表集合的存儲方案。
如果是屬性圖,不同label的點找到不同的點表,例如professor就找到professor點表。點的屬性就映射到點表中的屬性列上;邊表也是一樣,authors就映射到authors邊表,邊就會映射到邊表中的一行,帶有起始節(jié)點和終止節(jié)點的ID。
通過這樣一個看似簡單實際上通用性很強的方式,可以將RDF圖與屬性圖從物理層進行統(tǒng)一。但在實際應用當中有大量的沒有類型的實體,這時我們采取了歸類語義到最相近的有類型的表中的方法。
查詢的處理實踐
除了存儲以外,重要的就是查詢。在語義層面我們做到了操作的對齊,實現(xiàn)兩種查詢語言的互操作,SPARQL和Cypher互查。
在此情況下涉及到兩個層面:語法和詞法,還有它們的解析不能產(chǎn)生相互的矛盾。這里引用了一個關鍵字,例如查SPARQL就開啟SPARQL的語法,查Cypher就開啟Cypher的語法,避免沖突。
我們也實現(xiàn)了很多查詢的算子。
(1)子圖匹配查詢,查詢所有的作曲家和他作的曲子、作曲家的生日,是典型的子圖匹配問題??梢苑譃閷傩詧D和RDF圖,其大致的處理流程也是一致的。例如對應點加入join鏈表,然后添加properties列上的選擇操作,接著對頭尾兩個點模式所對應的點表之間的連接實施約束。RDF圖對邊表的起始、終點進行重要操作,最后都是變量添加投影約束,輸出最終結果,流程上是相近的。
子圖匹配的查詢,同樣也支持一些內(nèi)置的函數(shù),例如FILTER函數(shù),對變量形式進行限制、邏輯運算符、聚合、算術運算符都進行了支持,當然這部分也可以不斷擴充。
(2)導航式查詢,這在傳統(tǒng)的關系型數(shù)據(jù)庫中是沒有的。下圖種左邊是一個小型的社會網(wǎng)絡圖,這是一個有向圖,可以看到認識是單向的,Tom認識Pat,但Pat不認識Tom。導航式查詢中如果進行一個二跳的查詢,看誰認識Tom。如果是0跳,Tom就是自己認識自己。1跳就是Tom認識Pat,Tom認識Summer。2跳是Tom認識Pat,又認識Nikki,又認識回Tom。
(3)關鍵字查詢,這里有兩個例子,tsvector和tsquery。一個是將文檔轉成詞條的列表;一個是查詢向量中是否存在指定的單詞或短語。當知識圖譜中的文本比較長,有比較長的屬性時,就利用這個功能為其提供關鍵字檢索的功能,這也是非常好用的。
(4)分析型查詢,對于圖數(shù)據(jù)庫有其特有的查詢,例如最短路、Pagerank等都是基于圖的查詢算子,都可以在圖數(shù)據(jù)庫中進行實現(xiàn)。例如查從Tom開始到Nikki最短路徑是多少,通過Cypher實現(xiàn)了最短路徑的算子,可以把最短的路徑輸出出來,查到了結果。
除了上述提到的功能以外,我們還實現(xiàn)了一個可視交互的studio,在其中輸入Cypher和SPARQL的查詢語言,能得到可視的直觀圖,可以在上面做圖的維護、管理以及應用,圖上還可以進行很多交互,未來我們還會有更多的算子以及圖查詢、圖搜索加進來,實現(xiàn)更多應用的方向和場景。
最后,歡迎大家訪問OpenGauss Graph社區(qū),也歡迎對OpenGauss Graph感興趣的朋友們加入社區(qū),作為新的contributor,一同把OpenGauss Graph社區(qū)建設好。
嘉賓介紹
王林,工學博士、OpenGauss圖數(shù)據(jù)庫社區(qū)Maintainer、泰凡科技CTO、高級工程師、中國計算機協(xié)會 YOCSEF天津21-22副主席、CCF 信息系統(tǒng)專委會執(zhí)委,入選天津市131人才項目。