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