微信北大博士總結(jié)的圖技術(shù)研究實(shí)踐
筆者自2011年大二的時(shí)候加入北大計(jì)算所圖數(shù)據(jù)庫(kù)小組直到18年博士畢業(yè),此后工作的兩年一直關(guān)注圖技術(shù)的發(fā)展,并同很多同行和圖庫(kù)的潛在客戶有較多接觸。同時(shí)也參與過(guò)知識(shí)圖譜、圖計(jì)算系統(tǒng)以及圖表示學(xué)習(xí)算法等的研發(fā)。本篇的內(nèi)容主要從圖模型、圖查詢以及圖計(jì)算和圖學(xué)習(xí)四個(gè)方面著手闡述,重點(diǎn)介紹對(duì)圖的應(yīng)用上的經(jīng)驗(yàn)、思考,討論關(guān)于圖有哪些應(yīng)用、為什么有用、怎么用以及哪些地方難用或無(wú)用、為什么沒(méi)用等內(nèi)容,避免復(fù)雜概念或公式以保證非技術(shù)人員也能充分理解,相信這篇文章能讓大家開(kāi)卷有益,也歡迎大家來(lái)一起討論。
1 圖模型
1.1 圖的點(diǎn)、邊、標(biāo)簽、屬性與同異構(gòu)
圖論中,圖(Graph)的符號(hào)往往用G表示,圖被定義為一個(gè)多元組,核心元素為頂點(diǎn)(vertex)集V以及邊(edge)集E,即G=(V,E)。從數(shù)據(jù)的角度,頂點(diǎn)可以理解為針對(duì)實(shí)體、對(duì)象的建模,邊則是用于描述兩個(gè)頂點(diǎn)間的關(guān)聯(lián)或交互。給定兩個(gè)頂點(diǎn)u,v, 用(u,v)表示兩點(diǎn)間的邊。此外,圖的多元組中往往還有標(biāo)簽函數(shù)L(指向點(diǎn)邊的標(biāo)簽)、屬性函數(shù)P(指向點(diǎn)邊的屬性)以及點(diǎn)邊類型函數(shù)T等等。比如,社交網(wǎng)絡(luò)中異常的賬號(hào)可能有色情、賭博等標(biāo)簽。賬號(hào)可以有注冊(cè)時(shí)長(zhǎng)的屬性,所屬用戶年齡屬性等。而好友關(guān)系的邊則可以有好友建立時(shí)間點(diǎn)的屬性。值得一提的是,點(diǎn)邊均只有一種類型的圖稱為同構(gòu)圖,比如轉(zhuǎn)賬網(wǎng)絡(luò)中只有用戶賬號(hào)一種點(diǎn)類型,并且只有轉(zhuǎn)賬關(guān)系這一種邊類型,因此轉(zhuǎn)賬網(wǎng)絡(luò)為同構(gòu)圖。除了同構(gòu)圖之外的圖均為異構(gòu)圖。如微信支付的交易網(wǎng)絡(luò)中,用戶賬號(hào)間的交易既可以轉(zhuǎn)賬,也可以是紅包或者面對(duì)面,因此支付交易網(wǎng)絡(luò)的邊不僅有一種類型,微信支付的交易網(wǎng)絡(luò)是異構(gòu)圖
1.2 圖形式簡(jiǎn)單,圖問(wèn)題復(fù)雜
圖論起源于歐拉對(duì)哥尼斯堡七橋問(wèn)題的研究。七橋問(wèn)題是指如何能夠不走重復(fù)路的情況下走遍哥尼斯堡的七座橋,其實(shí)就是現(xiàn)今大家熟知的一筆畫(huà)的問(wèn)題。形式很簡(jiǎn)單,但解決卻不容易。歐拉通過(guò)將七橋問(wèn)題形式化為點(diǎn)邊的一筆畫(huà)問(wèn)題來(lái)解決。這種簡(jiǎn)潔的點(diǎn)邊建模思路為后世的學(xué)者沿用發(fā)展,逐漸形成了圖論體系。圖論問(wèn)題在高中數(shù)學(xué)聯(lián)賽試題中很常見(jiàn),這個(gè)點(diǎn)跟圖模型的一個(gè)重要特性有或多或少的關(guān)聯(lián):圖模型的形式足夠簡(jiǎn)單,但圖模型下提出的問(wèn)題往往很復(fù)雜。這個(gè)特點(diǎn)也引來(lái)不少對(duì)圖饒有興趣卻不求甚解的同行,時(shí)常把簡(jiǎn)單問(wèn)題復(fù)雜化以獲取信息不對(duì)等優(yōu)勢(shì)進(jìn)而行不實(shí)宣傳,導(dǎo)致大量圖的潛在使用者的時(shí)間浪費(fèi)與業(yè)界對(duì)圖的信心受挫。 希望此篇能夠澄清圖的相關(guān)概念與作用,幫助大家在圖應(yīng)用上少走彎路。
1.3 高效的關(guān)聯(lián)表達(dá)與分析能力
圖的形式雖然簡(jiǎn)潔,但是對(duì)信息的表達(dá)能力卻非常強(qiáng)。
復(fù)雜信息的建模與融合
人們每天獲取的信息,不限任何主題或領(lǐng)域,大都可以一條或多條陳述句來(lái)表達(dá)。例如“拜登當(dāng)選了美國(guó)總統(tǒng)”,“Twitter封殺了特朗普”。陳述句的主體大都可以表示為主謂賓,如三元組:<主語(yǔ):拜登, 謂語(yǔ):當(dāng)選,賓語(yǔ):美國(guó)總統(tǒng)>以及<主語(yǔ):Twitter,謂語(yǔ):封殺,賓語(yǔ):特朗普>。而圖模型可以很好地建模主謂賓,即以主、賓為兩個(gè)對(duì)象(頂點(diǎn)),以謂語(yǔ)表示對(duì)象間的關(guān)聯(lián)或交互(邊)。因此圖模型能很好地建模主謂賓,進(jìn)而建模陳述句、信息。而且,這里不對(duì)信息做任何主題或者領(lǐng)域的限制,因此圖模型能以簡(jiǎn)潔的形式對(duì)復(fù)雜知識(shí)信息進(jìn)行良好的建模和融合。
高效的關(guān)聯(lián)發(fā)現(xiàn)與分析
圖做關(guān)聯(lián)分析的高效性來(lái)源于其本身對(duì)關(guān)聯(lián)的存儲(chǔ)與頂點(diǎn)的低冗余度。以“旅美物理學(xué)家吳健雄與中國(guó)近代權(quán)臣袁世凱有什么關(guān)系”這一問(wèn)題為例,為了回答這一問(wèn)題,在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中,需要先在各種可能的關(guān)系表里定位“吳健雄”,而“吳健雄”在同一表中的出現(xiàn)可能相當(dāng)冗余,因?yàn)槊總€(gè)“吳健雄”相關(guān)的關(guān)系實(shí)例中“吳健雄”均會(huì)出現(xiàn)一次,存在冗余的計(jì)算代價(jià)。而在圖模型中,定位單個(gè)“吳健雄”的出現(xiàn)就能夠同時(shí)定位其相關(guān)的所有關(guān)聯(lián)關(guān)系,如鄰接表。更簡(jiǎn)潔地說(shuō),在傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)中,以上關(guān)聯(lián)分析往往會(huì)在大量表上進(jìn)行代價(jià)高昂的join過(guò)程,效率低下,尤其是多個(gè)join串聯(lián)的計(jì)算。而在圖模型中,由于圖本身直接存儲(chǔ)了部分關(guān)聯(lián),同時(shí)對(duì)頂點(diǎn)及其直接關(guān)聯(lián)的定位能夠足夠高效(相比于join),進(jìn)而使得圖的關(guān)聯(lián)發(fā)現(xiàn)與分析足夠高效。 此外,在對(duì)傳統(tǒng)關(guān)系數(shù)據(jù)多級(jí)join的優(yōu)化過(guò)程,往往也將關(guān)系數(shù)據(jù)進(jìn)行圖模型化的過(guò)程?;氐?ldquo;吳健雄”與“袁世凱”關(guān)系的問(wèn)題,這個(gè)問(wèn)題在圖模型中會(huì)以路徑的形式來(lái)建模,而圖算法中有大量針對(duì)路徑的優(yōu)化工作,這也是圖模型關(guān)聯(lián)高效性的一個(gè)來(lái)源??偟膩?lái)說(shuō),圖對(duì)關(guān)聯(lián)的聚焦,帶來(lái)了能夠保證高效關(guān)聯(lián)分析的相關(guān)方法論與技術(shù)手段,這點(diǎn)促進(jìn)了圖關(guān)聯(lián)分析的高效。
1.4 圖系統(tǒng)的三大類功能
目前圖技術(shù)的應(yīng)用主要通過(guò)三個(gè)技術(shù)點(diǎn)的支撐來(lái)實(shí)現(xiàn),分別是圖查詢、圖計(jì)算和圖表示學(xué)習(xí)。
圖查詢主要是對(duì)圖關(guān)聯(lián)數(shù)據(jù)的基礎(chǔ)查詢,旨在直接獲取關(guān)聯(lián)信息,包括多階鄰居查詢、路徑查詢與子圖查詢。此外圖可視化也是輔助圖查詢結(jié)果的展示,是提高圖關(guān)聯(lián)分析效能的重要組件。圖計(jì)算是指針對(duì)全圖結(jié)構(gòu)進(jìn)行重組、抽象或者傳播迭代得到點(diǎn)/邊全局屬性的過(guò)程,如圖的聚類、分割、生成樹(shù)、PageRank的計(jì)算等等。國(guó)際學(xué)術(shù)界常用Graph Processing System表示圖計(jì)算系統(tǒng),中文翻譯過(guò)來(lái)是圖處理系統(tǒng),但中文語(yǔ)境下圖計(jì)算這個(gè)詞更為形象,也使用的更為普遍。
圖學(xué)習(xí)主要是指圖表示學(xué)習(xí),將圖中的頂點(diǎn)映射到低維向量空間,要求向量間的相對(duì)距離能夠盡可能地反映原頂點(diǎn)在圖結(jié)構(gòu)關(guān)聯(lián)強(qiáng)度上的相對(duì)大小,實(shí)現(xiàn)非歐圖數(shù)據(jù)向歐式向量空間的轉(zhuǎn)變(圖數(shù)據(jù)無(wú)法滿足歐式空間約束)。歐式的向量數(shù)據(jù)能夠作為特征,更直接地支撐下游的業(yè)務(wù)需求。圖的關(guān)聯(lián)數(shù)據(jù)與用戶屬性數(shù)據(jù)有明顯的不同,是業(yè)務(wù)瓶頸提升探索上的一個(gè)非常重要的新視角。
圖學(xué)習(xí)經(jīng)常被歸入圖計(jì)算范疇內(nèi)討論。其實(shí)兩者內(nèi)涵迥異。其中最大的不同點(diǎn)在于,圖計(jì)算的結(jié)果仍然在圖語(yǔ)義范圍內(nèi)有清晰的解釋,如PageRank作為頂點(diǎn)的網(wǎng)絡(luò)中心性度量,而圖學(xué)習(xí)的結(jié)果是向量集,同圖語(yǔ)義無(wú)交集。圖計(jì)算和圖學(xué)習(xí)在學(xué)術(shù)界也是較為不同的學(xué)者群體在各自研究。后文將以筆者在業(yè)務(wù)實(shí)踐中,對(duì)圖的三大類技術(shù)點(diǎn)的應(yīng)用思考展開(kāi)討論。
2 圖查詢
圖查詢包括單點(diǎn)的多階鄰居查詢、兩點(diǎn)間的關(guān)聯(lián)路徑查詢以及獲取多點(diǎn)間關(guān)聯(lián)的子圖查詢。除此之外我們也會(huì)討論驅(qū)動(dòng)圖查詢的圖數(shù)據(jù)庫(kù)的現(xiàn)狀,騰訊公司圖數(shù)據(jù)庫(kù)Oteam的產(chǎn)品EasyGraph以及知識(shí)圖譜等相關(guān)內(nèi)容。
2.1 多階鄰居查詢
同某個(gè)頂點(diǎn)v有關(guān)聯(lián)邊的所有頂點(diǎn)均為v的鄰居,如圖所示,以中心紅色頂點(diǎn)v為源頂點(diǎn),綠色頂點(diǎn)為v的鄰居,也稱為一階鄰居;綠色頂點(diǎn)的鄰居集合里,去除v自身以及所有綠色頂點(diǎn),剩下的頂點(diǎn)稱為v的二階鄰居,如圖中的藍(lán)色頂點(diǎn);依次類推得到v的三階鄰居,即圖中的紫色頂點(diǎn)。
圖查詢應(yīng)用點(diǎn)很多,這里介紹常見(jiàn)的四種應(yīng)用點(diǎn):多階擴(kuò)散、近鄰分布、關(guān)聯(lián)可視化展示、特定鄰居搜索。
多階擴(kuò)散 多階擴(kuò)散是較為常見(jiàn)的圖查詢操作。近鄰?fù)陨黻P(guān)系密切或?qū)傩韵嘟?,多階擴(kuò)散則是用來(lái)獲取同自身屬性一致或相近的人群。例如在特定標(biāo)簽的人群識(shí)別中,同類人群往往形成社區(qū)并且彼此間緊密關(guān)聯(lián),從已知的標(biāo)簽人群出發(fā),通過(guò)相應(yīng)標(biāo)簽場(chǎng)景的緊密的關(guān)聯(lián)(如業(yè)界常見(jiàn)的共同設(shè)備)擴(kuò)散出的人群往往能覆蓋未知的標(biāo)簽人群。值得注意的是,擴(kuò)散后的人群也往往也可能包括正常人群,因此擴(kuò)散結(jié)果需要進(jìn)一步的過(guò)濾處理。實(shí)踐中,圖的多階查詢效率比傳統(tǒng)關(guān)系型系統(tǒng)的join操作在性能上高出2~3個(gè)數(shù)量級(jí)。
近鄰分布 多階鄰居查詢也用來(lái)獲取近鄰分布,進(jìn)而更精準(zhǔn)地刻畫(huà)用戶自身特定屬性。例如,程序員在社交網(wǎng)絡(luò)關(guān)聯(lián)的鄰居里,具有程序員標(biāo)簽的用戶密度會(huì)明顯偏高。對(duì)于一個(gè)未知標(biāo)簽的用戶,可以通過(guò)其社交網(wǎng)絡(luò)或資金網(wǎng)絡(luò)多階鄰居中已知的用戶分布來(lái)輔助確定用戶是否具有相應(yīng)的屬性。
關(guān)聯(lián)畫(huà)像 對(duì)于給定的一個(gè)頂點(diǎn),多階鄰居的全貌展示能夠有助于對(duì)頂點(diǎn)更深刻的理解,即通過(guò)多階鄰居的關(guān)聯(lián)來(lái)對(duì)頂點(diǎn)進(jìn)行畫(huà)像。這類應(yīng)用的落地主要通過(guò)圖可視化工具對(duì)多階鄰居的展示來(lái)完成,如天眼查等通過(guò)關(guān)聯(lián)可視化落地的應(yīng)用。
特定鄰居搜索 多階鄰居的查詢也能獲取特定的鄰居進(jìn)行強(qiáng)化關(guān)聯(lián)。以社交網(wǎng)絡(luò)為例,每個(gè)人的一階好友關(guān)系為其可見(jiàn)的人脈集合,而二階好友往往是每個(gè)人的人脈盲區(qū),通過(guò)特定的二階好友的查詢能夠精確定位到符合需求的人脈。舉現(xiàn)實(shí)例子來(lái)說(shuō),假設(shè)一名患者想在赴診前對(duì)某醫(yī)院某科室醫(yī)生提前進(jìn)行健康咨詢,而該患者一階人脈并無(wú)覆蓋該科室的任何一名醫(yī)生,如果該患者能夠找到同某個(gè)目標(biāo)醫(yī)生的公共好友,則可以通過(guò)公共好友同目標(biāo)醫(yī)生建立直接的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)提前的健康咨詢。
多階查詢往往最大階數(shù)為3,因?yàn)?階及以上查詢結(jié)果將非常龐大難以處理。此外,高階的鄰居同源點(diǎn)的關(guān)聯(lián)強(qiáng)度也隨著階數(shù)的增長(zhǎng)而不斷下降。因此,從經(jīng)驗(yàn)的角度看,多階鄰居查詢一般最多到3階。
2.2 路徑查詢
路徑的一般定義為:兩點(diǎn)間能夠連通起來(lái)的邊的集合。如下圖從史玉柱到深大,從深大到張維,從張維到高曉松的三條邊的集合即構(gòu)成了史玉柱到高曉松的一條路徑。
路徑聚焦兩點(diǎn)間的間接關(guān)聯(lián)關(guān)系。間接關(guān)聯(lián)獲取成本更大,更為隱蔽。在金融欺詐場(chǎng)景中,犯罪團(tuán)伙往往將資金關(guān)聯(lián)拉長(zhǎng)以進(jìn)行對(duì)抗,如將直接的資金往來(lái)通過(guò)多階的轉(zhuǎn)賬來(lái)間接實(shí)現(xiàn)。傳統(tǒng)的關(guān)系型數(shù)據(jù)平臺(tái)因串聯(lián)join的低效性導(dǎo)致路徑查詢成本高昂難以實(shí)現(xiàn),而路徑查詢是圖研究領(lǐng)域的經(jīng)典問(wèn)題,通過(guò)對(duì)路徑的高效查詢能夠降低間接關(guān)聯(lián)的發(fā)現(xiàn)成本,提高欺詐團(tuán)伙的對(duì)抗門(mén)檻。
例如,在刑偵場(chǎng)景中,案件里的受害人與施害人的關(guān)聯(lián)也是刑警首要關(guān)注的信息。如果能構(gòu)建足夠大的一張圖,包括多種關(guān)聯(lián)關(guān)系信息(圖有很強(qiáng)的數(shù)據(jù)融合能力),則通過(guò)在該圖中獲取受害人與施害人之間的所有路徑,就能清晰展現(xiàn)兩者間的各種直接與間接的關(guān)聯(lián)關(guān)系。高效地進(jìn)行路徑查詢則有利于提高案件分析的效率。
億級(jí)圖上,路徑查詢的目標(biāo)路徑長(zhǎng)度一般不會(huì)大于6(受限于計(jì)算能力),而實(shí)際需求往往不會(huì)大于4(關(guān)聯(lián)信息衰減),查詢過(guò)程往往是從兩點(diǎn)分別向?qū)Ψ剿阉鳎瑢牲c(diǎn)各自的多階鄰居進(jìn)行取交,實(shí)現(xiàn)路徑的發(fā)現(xiàn)。每個(gè)頂點(diǎn)最多往外搜索的深度為3。正如前面多階查詢所說(shuō),搜索深度大于等于4時(shí),搜索空間容易過(guò)于巨大。(以上數(shù)據(jù)經(jīng)驗(yàn)之談,僅供參考)
2.3 子圖查詢
子圖的概念是相對(duì)一個(gè)更大的圖來(lái)定義的。如果一個(gè)圖的點(diǎn)集和邊集都是另一個(gè)圖的子集,則該圖為另外一個(gè)圖的子圖。以微信支付月度轉(zhuǎn)賬網(wǎng)絡(luò)為例,該月騰訊公司員工之間的轉(zhuǎn)賬關(guān)系則是構(gòu)成了一個(gè)轉(zhuǎn)賬網(wǎng)絡(luò)的子圖。
子圖查詢最直接的優(yōu)點(diǎn)就是對(duì)數(shù)據(jù)需求的表達(dá)能力很強(qiáng)。假設(shè)我們有一個(gè)查詢需求:“在國(guó)務(wù)院工作并且家鄉(xiāng)在安徽的博士有哪些?”已有的查詢理解方式往往只是從查詢中抽取關(guān)鍵字來(lái)進(jìn)行,而子圖的方式則更為精準(zhǔn),如下圖所示。子圖能夠理解查詢的目標(biāo)是個(gè)頂點(diǎn),頂點(diǎn)有三條關(guān)聯(lián)的邊,分別是對(duì)“國(guó)務(wù)院”的就職關(guān)系,對(duì)“安徽”的家鄉(xiāng)定位關(guān)系以及對(duì)“博士學(xué)位”的學(xué)歷關(guān)系。而通過(guò)子圖同構(gòu)的查詢,則能夠?qū)Σ樵冃枨筮M(jìn)行更為精準(zhǔn)地響應(yīng)。
子圖也可以用來(lái)構(gòu)建通用的行為特征。例如針對(duì)頂點(diǎn)及其一階或多階的鄰居構(gòu)成的頻繁子圖(復(fù)雜網(wǎng)絡(luò)領(lǐng)域定義為Motif,Wikipedia顯示Motif的本質(zhì)定義就是頻繁子圖),將對(duì)應(yīng)頻繁子圖的頻次定義成特定維的特征,這樣的特征是對(duì)頻繁子圖的數(shù)值化描述,因此具有較強(qiáng)的穩(wěn)定性和一定程度的可解釋性。
子圖的第三個(gè)優(yōu)點(diǎn),也是非常重要的優(yōu)點(diǎn)就是描述多點(diǎn)多階關(guān)聯(lián),如導(dǎo)出子圖:給定圖G及其點(diǎn)集V的某個(gè)子集V’,假設(shè)邊集子集E’對(duì)應(yīng)G中頂點(diǎn)同時(shí)屬于V’的所有的邊,則子圖(V’,E’)為G在V’上的導(dǎo)出子圖。即導(dǎo)出子圖是給定點(diǎn)集子集的情況下,邊集最大的子圖。從數(shù)據(jù)的角度來(lái)說(shuō),給定一個(gè)頂點(diǎn)集,其導(dǎo)出子圖能描述頂點(diǎn)集在原圖上的所有的關(guān)聯(lián)關(guān)系。在微信支付反欺詐中,經(jīng)常會(huì)遇到做法手法高度一致的一批用戶賬號(hào),即欺詐團(tuán)伙。挖掘并打擊團(tuán)伙的關(guān)鍵在于分析出團(tuán)伙是組織的,而導(dǎo)出子圖的查詢則能夠?qū)ε抠~號(hào)查詢其間所有的相互關(guān)聯(lián)。例如,我們?cè)l(fā)現(xiàn)一個(gè)典型的欺詐手法,欺詐分子以少女形象,通過(guò)網(wǎng)絡(luò)同新認(rèn)識(shí)的用戶約定,如果該用戶向“少女”的前男友發(fā)送48元轉(zhuǎn)賬(48為某不和諧用語(yǔ)諧音)并備注侮辱性用詞,則“少女”將返現(xiàn)1000給到新認(rèn)識(shí)的用戶。
利用這一套路行騙的不同賬號(hào)數(shù)超過(guò)一千,是我們重點(diǎn)打擊的團(tuán)伙。通過(guò)hive進(jìn)行代價(jià)高昂的同設(shè)備、同證件、同地理位置等關(guān)聯(lián)時(shí),并沒(méi)有發(fā)現(xiàn)特別的團(tuán)伙痕跡。經(jīng)過(guò)大量的高昂代價(jià)關(guān)聯(lián)后,我們最終發(fā)現(xiàn)了欺詐分子真實(shí)的關(guān)聯(lián)方式。如果我們構(gòu)建支付欺詐場(chǎng)景下的多種關(guān)聯(lián)形成大圖,在遇到作案手法高度一致的批量賬號(hào)時(shí),直接在大圖上進(jìn)行導(dǎo)出子圖查詢,則能夠高效且全面地獲取賬號(hào)團(tuán)伙的蛛絲馬跡并順藤摸瓜打擊所有欺詐賬號(hào)。
2.4 圖數(shù)據(jù)庫(kù)
目前驅(qū)動(dòng)以上查詢的主要是圖數(shù)據(jù)庫(kù),針對(duì)已有圖數(shù)據(jù)庫(kù)的最新詳實(shí)的對(duì)比信息可以在DB-Engine( https:// db-engines.com/en/ranki ng/graph+dbms ) 上獲取。圖庫(kù)的潛在使用者該如何選擇圖數(shù)據(jù)庫(kù)?這一問(wèn)題也等價(jià)于技術(shù)圈該如何發(fā)展圖數(shù)據(jù)庫(kù)。這里不得不提一個(gè)目前普遍存在的現(xiàn)象:技術(shù)圈對(duì)圖數(shù)據(jù)庫(kù)的發(fā)展同業(yè)務(wù)圈對(duì)圖庫(kù)的需求定位存在明顯不一致。
技術(shù)與業(yè)務(wù)對(duì)圖庫(kù)定位的分歧 已了解到的圖應(yīng)用場(chǎng)景中,對(duì)圖數(shù)據(jù)庫(kù)的功能與性能需求暫時(shí)沒(méi)有到線上數(shù)據(jù)庫(kù)的級(jí)別,對(duì)圖數(shù)據(jù)庫(kù)的讀寫(xiě)要求大體是周期性地批量導(dǎo)入或?qū)懭胫?,進(jìn)行多次只讀。因此與其說(shuō)圖數(shù)據(jù)庫(kù),不如說(shuō)圖分析平臺(tái)更為貼切。而且,在圖操作的事務(wù)管理方面,研究上都還有較大空白,進(jìn)展寥寥,實(shí)際落地上更是困難重重。業(yè)務(wù)側(cè)對(duì)圖的需求重點(diǎn)仍然是數(shù)據(jù)分析為主,而技術(shù)圈以數(shù)據(jù)庫(kù)視角去發(fā)展圖系統(tǒng)的卻是主流,已知的很多圖數(shù)據(jù)產(chǎn)品團(tuán)隊(duì)在以性能為重點(diǎn)內(nèi)容做宣傳。而其實(shí)從業(yè)務(wù)的角度,性能只要達(dá)到一定程度(比如一秒內(nèi)響應(yīng))就沒(méi)有迫切的提高性能的需求(比如十毫秒級(jí))。
再者,圖數(shù)據(jù)庫(kù)對(duì)屬性數(shù)據(jù)的管理相比傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)毫無(wú)優(yōu)勢(shì)。點(diǎn)邊屬性數(shù)據(jù)的獲取與關(guān)聯(lián)無(wú)關(guān),考慮點(diǎn)屬性或邊屬性的查詢時(shí),點(diǎn)、邊均為孤立的存在,而孤立的點(diǎn)、邊在圖數(shù)據(jù)模型中意義相當(dāng)有限。據(jù)說(shuō)某大廠內(nèi)部,有部分圖數(shù)據(jù)庫(kù)產(chǎn)品中的屬性管理仍然交由傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)管理。因此,技術(shù)圈與業(yè)務(wù)圈對(duì)圖庫(kù)定位存在分歧,不過(guò)隨著越來(lái)越多的圖庫(kù)應(yīng)用落地,這種分歧似乎在不斷減少,圖技術(shù)與實(shí)際業(yè)務(wù)更多的碰撞令人期待。
Easygraph( http:// easygraph.oa.com )落地過(guò)程中遇到的數(shù)據(jù)導(dǎo)入圖庫(kù)的成本與思考
技術(shù)圈對(duì)數(shù)據(jù)導(dǎo)入圖庫(kù)過(guò)程中開(kāi)發(fā)人員所消耗的時(shí)間成本其實(shí)存在明顯的忽視。EasyGraph作為騰訊公司圖數(shù)據(jù)庫(kù)Oteam協(xié)同開(kāi)源的一款產(chǎn)品,經(jīng)歷了微信支付欺詐業(yè)務(wù)場(chǎng)景下多次迭代優(yōu)化,也是圖庫(kù)在技術(shù)和業(yè)務(wù)上的一次難得的結(jié)合。在微信支付欺詐場(chǎng)景下,同EasyGraph團(tuán)隊(duì)的合作過(guò)程中,筆者對(duì)圖庫(kù)在業(yè)務(wù)應(yīng)用上的理解要加深了許多。例如,欺詐場(chǎng)景中非常關(guān)心的一點(diǎn)是欺詐分子之間或欺詐分子與受騙人之間的關(guān)聯(lián)和交互,進(jìn)而制定相應(yīng)的策略或模型進(jìn)行精準(zhǔn)打擊。核心點(diǎn)在于,關(guān)聯(lián)數(shù)據(jù)的查找和可視化。傳統(tǒng)的hive在關(guān)聯(lián)數(shù)據(jù)的查找上效率低下,而已有的圖數(shù)據(jù)庫(kù),雖然能夠加速關(guān)聯(lián)查詢,卻忽略了另一重大的成本:數(shù)據(jù)導(dǎo)入圖庫(kù)。當(dāng)有一個(gè)圖數(shù)據(jù)可視化需求時(shí),往往需要先進(jìn)行既定格式的數(shù)據(jù)出庫(kù)(如HDFS),填寫(xiě)相應(yīng)圖庫(kù)的配置文件,再啟動(dòng)圖庫(kù)導(dǎo)入。
不同的圖庫(kù)產(chǎn)品往往有不同的導(dǎo)入格式和流程。當(dāng)可視化過(guò)程中需要對(duì)關(guān)聯(lián)結(jié)果進(jìn)行微調(diào)時(shí),整個(gè)流程需要再進(jìn)行一遍,過(guò)程繁瑣費(fèi)時(shí)。數(shù)據(jù)導(dǎo)入圖庫(kù)的成本高昂其實(shí)在VLDB 2018的best paper [1]里就重點(diǎn)提到,該論文的核心內(nèi)容是關(guān)于加拿大滑鐵盧大學(xué)的Semih針對(duì)圖應(yīng)用的調(diào)研分析。時(shí)隔兩年,大量圖數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入成本仍然很高,以筆者所了解的情況,騰訊公司的EasyGraph圖數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)導(dǎo)入成本問(wèn)題解決得較為完善。在EasyGraph落地微信支付場(chǎng)景的過(guò)程中,我們迭代了三個(gè)版本的圖庫(kù)導(dǎo)入。
①最開(kāi)始的版本則是通過(guò)預(yù)處理組件,按既定格式出庫(kù)數(shù)據(jù)到HDFS,并通過(guò)配置文件啟動(dòng)導(dǎo)入;②之后,我們推動(dòng)了通過(guò)UI交互的方式直接對(duì)數(shù)據(jù)源進(jìn)行相關(guān)配置的導(dǎo)入方式,如瀏覽器端的庫(kù)表配置,從列名等字段到點(diǎn)邊及其屬性的映射等。避免了配置文件和數(shù)據(jù)預(yù)處理腳本開(kāi)發(fā)的成本。但其實(shí)對(duì)構(gòu)圖成本解決仍不夠徹底,因?yàn)榭梢暬臄?shù)據(jù)源往往需要數(shù)據(jù)分析者先創(chuàng)建相應(yīng)的臨時(shí)表,占用存儲(chǔ)和元數(shù)據(jù)開(kāi)銷(xiāo)。即便用視圖來(lái)優(yōu)化這一問(wèn)題,隨著時(shí)間的推進(jìn),圖數(shù)據(jù)庫(kù)中仍然需要定期清理相應(yīng)的臨時(shí)視圖等。
基于此,EasyGraph團(tuán)隊(duì)又迭代了第三個(gè)版本,通過(guò)類sql-schema的邏輯,一行簡(jiǎn)潔的代碼就能完成導(dǎo)入,具體導(dǎo)入語(yǔ)法此處不詳述,而且第三版的導(dǎo)入方式很大地減少了圖庫(kù)使用者的數(shù)據(jù)導(dǎo)入成本。這里也給出一個(gè)筆者在支付場(chǎng)景下思考獲得的一個(gè)圖庫(kù)導(dǎo)入設(shè)計(jì),這個(gè)設(shè)計(jì)啟發(fā)于 hive create table as select x,x,x from t_xxxx 的語(yǔ)法。數(shù)據(jù)分析者僅需要針對(duì)點(diǎn)邊及其屬性數(shù)據(jù)寫(xiě)select的查詢來(lái)反應(yīng)需求,由圖庫(kù)自身將SQL語(yǔ)法解析出對(duì)應(yīng)的查詢計(jì)劃并從SQL數(shù)據(jù)庫(kù)表中直接獲取數(shù)據(jù)并完成相應(yīng)schema構(gòu)建和數(shù)據(jù)導(dǎo)入。數(shù)據(jù)分析者僅需要撰寫(xiě)寥寥幾個(gè)其足夠熟悉且通用的SQL語(yǔ)句,語(yǔ)句中可以通過(guò)SQL語(yǔ)法中的限制條件語(yǔ)句對(duì)數(shù)據(jù)需求進(jìn)行詳細(xì)定制。這點(diǎn)其實(shí)對(duì)技術(shù)來(lái)說(shuō),完全可以實(shí)現(xiàn)。
2.5 知識(shí)圖譜
已有的知識(shí)圖譜可以直觀理解為知識(shí)+圖譜,即用圖的模型與方法對(duì)知識(shí)數(shù)據(jù)進(jìn)行建模、存儲(chǔ)與查詢挖掘。知識(shí)很有用,圖譜也有用,所以知識(shí)圖譜肯定有用,但是大家肯定期待知識(shí)和圖譜結(jié)合起來(lái),有什么新的用處,諸如推理、糾錯(cuò)等強(qiáng)大的功能,也就是做兩個(gè)減法:知識(shí)圖譜-知識(shí)-圖譜 所剩下的那部分功能到底有什么。我個(gè)人的看法是:還有待進(jìn)一步觀察。下文也針對(duì)這點(diǎn)展開(kāi)討論。
從搜索引擎到語(yǔ)義網(wǎng) 知識(shí)圖譜起源于搜索引擎的瓶頸:對(duì)查詢需求與信息的理解不足。搜索引擎體系以關(guān)鍵字來(lái)理解查詢需求。以“老家在安徽并且在國(guó)務(wù)院工作的博士是誰(shuí)?”問(wèn)題為例,當(dāng)下的搜索引擎的主干技術(shù)均在于對(duì)語(yǔ)句分詞,得到關(guān)鍵字后通過(guò)關(guān)鍵字對(duì)目標(biāo)網(wǎng)頁(yè)進(jìn)行召回排序并反饋。而關(guān)鍵字序列的信息相比原句是有不少信息損失的。 此外,搜索引擎所獲取的信息也是非結(jié)構(gòu)的復(fù)雜的數(shù)據(jù),如無(wú)格式化的文本、表格等等。直接按排序提供給用戶之后,用戶需要另外瀏覽選擇過(guò)濾得到目標(biāo)的結(jié)果,用戶可能在無(wú)關(guān)的網(wǎng)頁(yè)中進(jìn)行費(fèi)時(shí)的篩選。因此以關(guān)鍵字理解查詢需求存在不少信息損失,以網(wǎng)頁(yè)文本集反饋用戶,對(duì)用戶來(lái)說(shuō)其實(shí)也存在額外的信息獲取成本?;谶@個(gè)原因,WWW聯(lián)盟的Tim Berners-Lee在1998年提出了語(yǔ)義網(wǎng)的概念。
語(yǔ)義網(wǎng)旨在將文檔上的元素添加計(jì)算機(jī)能理解的語(yǔ)義,使得互聯(lián)網(wǎng)成為一個(gè)通用的信息交換介質(zhì)。語(yǔ)義網(wǎng)有兩個(gè)非常重要的標(biāo)準(zhǔn),分別是RDF和SPARQL。
RDF全稱資源描述框架(Resource Description Framework),用來(lái)描述網(wǎng)絡(luò)資源,這里可以粗淺地理解RDF的描述方式為三元組的方式,分別是主語(yǔ)、謂詞以及賓語(yǔ)/字面量(如日期、金額等數(shù)值/數(shù)詞類賓語(yǔ))?;蛘吒?jiǎn)單地說(shuō),RDF數(shù)據(jù)集就是一系列的三元組集合,三元組分別為主謂賓?;趫D模型部分的內(nèi)容,相信讀者可以理解,三元組集合的RDF數(shù)據(jù)集對(duì)復(fù)雜數(shù)據(jù)的表達(dá)與融合能力非常出色。
SPARQL是針對(duì)RDF數(shù)據(jù)集的查詢語(yǔ)言,全稱是SPARQL Protocol and RDF Query Language。如上圖所示,SPARQL查詢的核心模塊是where語(yǔ)句中的三元組集合,此處的三元組不同于RDF的三元組,一般每一個(gè)where語(yǔ)句中的三元組至少有一個(gè)元組是變量,例如圖中的?p,若?p出現(xiàn)在select 的目標(biāo)中,則是查詢需要的對(duì)象,若不存在,?p則只是起到對(duì)查詢結(jié)果的約束作用,表示查詢結(jié)果中,?p出現(xiàn)的幾個(gè)位置所匹配的實(shí)際元組必須完全一致。
這兩個(gè)標(biāo)準(zhǔn)將精準(zhǔn)語(yǔ)義的信息獲取分成了三個(gè)階段,第一個(gè)階段是從復(fù)雜的網(wǎng)絡(luò)資源中抽取出三元組集合,即RDF數(shù)據(jù)集。比如德國(guó)的馬克思普朗克實(shí)驗(yàn)室輸出的知名的Yago系列數(shù)據(jù)集。第二個(gè)階段是將表達(dá)數(shù)據(jù)需求的自然語(yǔ)句轉(zhuǎn)化成格式化的SPARQL查詢語(yǔ)句,是NLP語(yǔ)義理解范疇的問(wèn)題。前兩個(gè)階段高度依賴于NLP技術(shù)的發(fā)展,從學(xué)術(shù)的角度來(lái)看還有較大的發(fā)展空間,但在實(shí)際業(yè)務(wù)場(chǎng)景中其實(shí)影響有限,因?yàn)闃I(yè)務(wù)場(chǎng)景上報(bào)采集的數(shù)據(jù)格式相對(duì)穩(wěn)定,查詢的需求也相對(duì)確定,因此,基于業(yè)務(wù)經(jīng)驗(yàn)?zāi)軌蜉^好地直接格式化出RDF三元組。第三個(gè)階段則是針對(duì)RDF數(shù)據(jù)集處理SPARQL查詢,可行的方法眾多,其中一種就是用子圖匹配的方式,也就是我們接下來(lái)要提到的知識(shí)圖譜的典型查詢處理方式。筆者的導(dǎo)師鄒磊教授是最早一批用子圖匹配的方式處理SPARQL查詢的學(xué)者,其相關(guān)工作形成的博士論文獲CCF 優(yōu)博提名獎(jiǎng)。 感興趣的讀者也可以去閱讀其發(fā)表在VLDB 2011的關(guān)于子圖匹配處理SPARQL查詢的文章 [2] https:// dl.acm.org/doi/pdf/10.1 4778/2002974.2002976 。
從語(yǔ)義網(wǎng)到知識(shí)圖譜
知識(shí)圖譜一般可以理解為以圖譜的方式驅(qū)動(dòng)知識(shí)的管理,為知識(shí)數(shù)據(jù)建模、存儲(chǔ)和查詢挖掘。圖模型能夠很好地建模三元組集合的RDF數(shù)據(jù)集,同時(shí)也能夠很好地將SPARQL的查詢需求表達(dá)成子圖(如下圖所示),因此SPARQL查詢可以轉(zhuǎn)化成子圖查詢,而RDF數(shù)據(jù)集則可以轉(zhuǎn)化成RDF圖,SPARQL的查詢處理自然就成了在RDF圖上進(jìn)行子圖匹配的過(guò)程。因此,撇開(kāi)挖掘不談,如果只從建模、存儲(chǔ)和查詢?nèi)齻€(gè)方面,知識(shí)圖譜僅僅是圖數(shù)據(jù)庫(kù)來(lái)管理知識(shí)數(shù)據(jù)并提供子圖查詢得到的功能,也就是說(shuō)是知識(shí)+圖譜。知識(shí)+圖譜本身就有很大應(yīng)用,針對(duì)知識(shí)的圖查詢本身就能解決很多應(yīng)用問(wèn)題,如天眼查的知識(shí)展示。而知識(shí)+圖譜能否碰撞出更大的火花,就必須討論知識(shí)圖譜中的挖掘方面的技術(shù)成果,這也是廣大對(duì)知識(shí)圖譜感興趣的人群最關(guān)心的地方。
而我的結(jié)論是:目前不要期望太高,有待進(jìn)一步觀察。圖譜對(duì)知識(shí)本身并無(wú)在內(nèi)涵上的增益,是對(duì)知識(shí)的一個(gè)管理工具。推理、糾錯(cuò)、監(jiān)控種種在NLP角度發(fā)展所遇到的瓶頸,在知識(shí)圖譜中仍然是瓶頸。以推理為例,給定四個(gè)頂點(diǎn)“吳健雄”,“袁家騮”,“袁克文”,“袁世凱“以及他們之間的關(guān)系:“吳健雄”與“袁家騮”的夫妻關(guān)系以及袁氏三父子的關(guān)系,知識(shí)圖譜大致能基于規(guī)則推導(dǎo)出“吳健雄”和“袁世凱”的孫媳婦的關(guān)系。整個(gè)過(guò)程里圖譜其實(shí)起到的是數(shù)據(jù)建模和管理的作用,對(duì)數(shù)據(jù)內(nèi)涵增益有限,甚至不需要圖譜來(lái)完成推理,因此這個(gè)推理實(shí)質(zhì)還是知識(shí)范疇的技術(shù)在起作用,并非是知識(shí)+圖譜碰撞出的新信息。更具體地說(shuō),如果存在這么一個(gè)問(wèn)題,知識(shí)范疇內(nèi)無(wú)法解決而加了圖譜就可以解決的話,目前來(lái)看基本可以確定解決這個(gè)問(wèn)題的技術(shù)關(guān)鍵在于圖譜自身獨(dú)立存在的功能,如知識(shí)的高效關(guān)聯(lián)可視化問(wèn)題的技術(shù)關(guān)鍵在于圖譜的可視化,與知識(shí)角度的NLP技術(shù)無(wú)關(guān)。反之亦然。
此外,NLP角度解決語(yǔ)義推理問(wèn)題的一大瓶頸是常識(shí)邏輯的缺失,如鳥(niǎo)是天上飛的以及魚(yú)是水里游的。因?yàn)檫壿嬐评淼逆湕l不能缺失任何一環(huán),而常識(shí)邏輯難以全盤(pán)數(shù)字化,因此推理這一瓶頸難以突破,期冀知識(shí)圖譜來(lái)解決這個(gè)問(wèn)題,在目前來(lái)看困難重重,有待存儲(chǔ)和計(jì)算能力的進(jìn)一步發(fā)展。
3 圖計(jì)算
圖計(jì)算主要指基于全圖結(jié)構(gòu)計(jì)算點(diǎn)邊或點(diǎn)邊子集屬性的過(guò)程。如PageRank描述點(diǎn)的中心性,點(diǎn)邊介數(shù)(Betweenness)則是描述點(diǎn)邊的連通重要性。圖計(jì)算可以作為對(duì)圖查詢的一個(gè)補(bǔ)充,圖查詢是直接獲取關(guān)聯(lián)的信息,而圖計(jì)算的目標(biāo)則是計(jì)算出基于關(guān)聯(lián)結(jié)構(gòu)蘊(yùn)藏在點(diǎn)邊中的信息,而且,圖計(jì)算結(jié)果本身可以再存儲(chǔ)到圖數(shù)據(jù)庫(kù)中作為圖查詢的查詢目標(biāo)。對(duì)于希望借力圖計(jì)算提升業(yè)務(wù)效果的同行來(lái)說(shuō),重點(diǎn)要關(guān)注兩個(gè)方面,首先是圖計(jì)算的結(jié)果怎么用,其次是如何高效算出圖計(jì)算的結(jié)果。
對(duì)于圖計(jì)算能起到多大作用問(wèn)題,難以一概而論。鑒于圖計(jì)算任務(wù)大都是計(jì)算和資源均密集型的,明確圖計(jì)算對(duì)業(yè)務(wù)助力的效果應(yīng)該優(yōu)于圖計(jì)算在計(jì)算效率上的提升。 圖計(jì)算算法可達(dá)數(shù)十種,每種有各自適用的場(chǎng)景。圖計(jì)算的結(jié)果可以是點(diǎn)邊具體的屬性,如PageRank,Betweenness,置信度傳播,聚集系數(shù)等等;也可以是點(diǎn)邊子集所對(duì)應(yīng)的屬性或結(jié)構(gòu),如社區(qū)類的連通分量、圖聚類、圖分割、圖染色等等,以及子圖類的生成圖、生成樹(shù)、斯坦納樹(shù)、最大獨(dú)立集、K-Core等等。圖計(jì)算的結(jié)果確實(shí)在特定的場(chǎng)景下起到過(guò)非常關(guān)鍵的作用,如PageRank、斯坦納樹(shù)等,但在支付場(chǎng)景的欺詐人群識(shí)別實(shí)踐中,基于資金網(wǎng)絡(luò)得到的圖計(jì)算結(jié)果對(duì)分類效果的支撐提升比較有限,離開(kāi)特定的場(chǎng)景需求暴力使用圖計(jì)算的結(jié)果難以達(dá)到預(yù)期的效果。
已有的圖計(jì)算工作的宣傳也側(cè)重計(jì)算效率的提升,并沒(méi)有很全面地解答圖計(jì)算對(duì)業(yè)務(wù)的提升效果如何。例如,對(duì)于連通分量來(lái)說(shuō),作為經(jīng)典的圖計(jì)算的問(wèn)題,在各大公司內(nèi)部什么場(chǎng)景,起到多大的業(yè)務(wù)提升作用?如果存在圖計(jì)算比較全面地、大幅地提升業(yè)務(wù)效果(不是效率)的案例,是不是應(yīng)該有比較多關(guān)注圖計(jì)算的同行已經(jīng)周知?期待有相關(guān)經(jīng)驗(yàn)的同行能夠分享圖計(jì)算針對(duì)業(yè)務(wù)大幅提升效果的成功案例,筆者也是在較長(zhǎng)的一段時(shí)間里一直關(guān)注圖計(jì)算在業(yè)務(wù)中的落地效果。結(jié)合自己的實(shí)踐經(jīng)驗(yàn),確實(shí)看到過(guò)圖計(jì)算對(duì)業(yè)務(wù)的一定程度的提升,但是提升幅度相比于圖計(jì)算的投入成本而言,并未達(dá)到預(yù)期。因此,目前還在持續(xù)觀察圖計(jì)算是否能在業(yè)務(wù)上發(fā)揮更大的、更全面且更高效的作用。
圖計(jì)算算法眾多,但是大都可以通過(guò)傳播迭代的方式實(shí)現(xiàn)目標(biāo)的收斂計(jì)算。對(duì)于計(jì)算和資源均密集的圖計(jì)算任務(wù),如果直接計(jì)算精確的結(jié)果,對(duì)應(yīng)的算法復(fù)雜度容易達(dá)到O(N^2) 甚至更高,在大規(guī)模圖上計(jì)算的執(zhí)行時(shí)間不可承受。已有的圖計(jì)算系統(tǒng)主要是基于點(diǎn)中心框架的計(jì)算,通過(guò)定義單點(diǎn)的算子,來(lái)實(shí)現(xiàn)點(diǎn)粒度的并發(fā),同時(shí)多次迭代來(lái)收斂至計(jì)算目標(biāo)。類似于Hadoop/Spark生態(tài)對(duì)行的抽象:開(kāi)發(fā)者只需要對(duì)行進(jìn)行低代碼量的開(kāi)發(fā)就能夠調(diào)度大規(guī)模的集群對(duì)大規(guī)模數(shù)據(jù)實(shí)現(xiàn)計(jì)算;點(diǎn)中心圖計(jì)算則是對(duì)點(diǎn)的抽象:開(kāi)發(fā)者僅需要開(kāi)發(fā)基于點(diǎn)的低代碼量的函數(shù)/算子,就能夠調(diào)度大規(guī)模的集群對(duì)大規(guī)模圖數(shù)據(jù)實(shí)現(xiàn)高效計(jì)算。
已有的圖系統(tǒng)對(duì)圖計(jì)算的效率提升到了相當(dāng)?shù)母叨?。?010年谷歌首次提出點(diǎn)中心編程框架Pregel(開(kāi)源對(duì)應(yīng)Giraph系統(tǒng))之后,GraphLab通過(guò)共享內(nèi)存將Pregel的性能提升了2~3倍,PowerGraph隨后基于圖的冪率分布進(jìn)行優(yōu)化并提出GAS模型,又將GraphLab的性能提升了將近5倍。比較特殊的是隨后出現(xiàn)的GraphX,立足于Spark生態(tài)的普及在RDD上開(kāi)發(fā)圖計(jì)算的框架,并直接承認(rèn)性能弱于PowerGraph將近7倍。但是GraphX基于生態(tài)優(yōu)勢(shì)也能夠大幅解放開(kāi)發(fā)者在數(shù)據(jù)預(yù)處理(ETL)上的生產(chǎn)力,這點(diǎn)上被后來(lái)的GraphX的流行所驗(yàn)證。學(xué)術(shù)界目前最先進(jìn)的圖計(jì)算系統(tǒng)應(yīng)該是清華大學(xué)發(fā)表在OSDI2016的Gemini。騰訊公司W(wǎng)XG也有基于Gemini原理開(kāi)發(fā)的Plato,在Gemini之上做了很多充分的落地優(yōu)化。騰訊公司TEG 的Angel圖計(jì)算則另辟蹊徑,通過(guò)PS驅(qū)動(dòng)圖計(jì)算,性能足夠優(yōu)秀的同時(shí)與騰訊公司內(nèi)部TDW生態(tài)有非常好的結(jié)合。
值得注意的是,目前圖計(jì)算對(duì)異構(gòu)圖的支持有限,針對(duì)異構(gòu)圖的計(jì)算優(yōu)化與實(shí)際圖數(shù)據(jù)的構(gòu)圖形式有較大的關(guān)聯(lián),因此難以有通用的圖計(jì)算系統(tǒng)或算法,但實(shí)際業(yè)務(wù)中的圖計(jì)算往往更關(guān)注異構(gòu)圖。筆者曾在騰訊CSIG開(kāi)發(fā)過(guò)基于GraphCHI存儲(chǔ)的分布式核外(即磁盤(pán)為主)異構(gòu)圖的圖計(jì)算系統(tǒng),但由于磁盤(pán)I/O效率過(guò)低,而業(yè)務(wù)中對(duì)內(nèi)存的成本并無(wú)嚴(yán)苛的要求,該圖計(jì)算系統(tǒng)實(shí)際應(yīng)用性不足。筆者在異構(gòu)圖計(jì)算的開(kāi)發(fā)過(guò)程中最大的體會(huì)是,具體的計(jì)算邏輯和構(gòu)圖形式對(duì)計(jì)算引擎的效率影響很大,所以通用且高效的異構(gòu)圖計(jì)算系統(tǒng)短期內(nèi)可能難以實(shí)現(xiàn)。
4 圖表示學(xué)習(xí)
圖表示學(xué)習(xí)并沒(méi)有形式化的定義,但基本原理大都為將圖中頂點(diǎn)映射到低維向量空間,并且向量間的相對(duì)距離能夠盡可能地反映頂點(diǎn)間在圖上的相對(duì)關(guān)聯(lián)強(qiáng)度,完成從非歐圖模型到歐式向量空間的轉(zhuǎn)換。而點(diǎn)向量則是可以作為特征無(wú)縫地支持下游深度學(xué)習(xí)任務(wù),因此圖學(xué)習(xí)也是在工業(yè)界落地最多,使用最普遍的圖技術(shù)。鑒于網(wǎng)絡(luò)上對(duì)圖表示學(xué)習(xí)的文章眾多,不乏全面詳實(shí)的綜述論文,本篇不在對(duì)表示學(xué)習(xí)已有工作進(jìn)行過(guò)多的展開(kāi),直接討論筆者在圖表示學(xué)習(xí)落地過(guò)程中的經(jīng)驗(yàn)。
圖表示學(xué)習(xí)的核心本質(zhì)在于表示學(xué)習(xí),圖只是作為數(shù)據(jù)源,因此圖表示學(xué)習(xí)的技術(shù)部分主要在于表示學(xué)習(xí),除了數(shù)據(jù)外,并沒(méi)有圖的語(yǔ)義,也沒(méi)有圖的算法,理解這點(diǎn)對(duì)如何使用、何時(shí)使用圖表示學(xué)習(xí)至關(guān)重要。討論這點(diǎn)需要從筆者之前開(kāi)發(fā)的基于LINE算法的擴(kuò)展版本W(wǎng)xPayLine++說(shuō)起,算法細(xì)節(jié)未獲授權(quán)對(duì)外,此處不再展開(kāi)。
WxPayLine++是基于LINE的二階無(wú)效性開(kāi)發(fā)的LINE的優(yōu)化版本,核心思路是基于筆者提出的傳遞增強(qiáng)算子,將多階信息融合到一階再進(jìn)行表示學(xué)習(xí)。如圖所示,WxpayLine++在轉(zhuǎn)賬網(wǎng)絡(luò)學(xué)習(xí)得到的用戶的向量特征,在多種異常人群識(shí)別中提升的效果顯著。
但是有一點(diǎn)出乎了我們的意料,就是刷單和羊毛黨兩種標(biāo)簽的提升情況截然不同。這兩類標(biāo)簽在各種場(chǎng)合常是同時(shí)被提起,并且粗淺理解起來(lái)是高度相似的兩種標(biāo)簽。然而仔細(xì)推敲才發(fā)現(xiàn)兩者其實(shí)非常不同。在微信支付場(chǎng)景中,刷單用戶因?yàn)榛乜詈蛡蚪鸬脑蛲ㄟ^(guò)中介形成了緊密的資金流關(guān)系,而羊毛黨用戶均是只有同商戶的商業(yè)支付,羊毛黨用戶之間卻不一定形成緊密的資金流關(guān)系。因此基于轉(zhuǎn)賬網(wǎng)絡(luò)表示學(xué)習(xí)對(duì)刷單有明顯的提升,而羊毛黨則沒(méi)有,反而引入了噪聲導(dǎo)致效果下降。這點(diǎn)引發(fā)了針對(duì)圖表示學(xué)習(xí)適用性問(wèn)題的思考。這里向大家分享下思考的心得:構(gòu)圖關(guān)聯(lián)對(duì)問(wèn)題的指向性決定了表示學(xué)習(xí)的是否有效果。還是回到剛才的問(wèn)題,即圖表示學(xué)習(xí)有用時(shí),是表示學(xué)習(xí)起了作用還是圖起了作用。換句話說(shuō),當(dāng)圖表示學(xué)習(xí)對(duì)業(yè)務(wù)不起效果時(shí),是表示學(xué)習(xí)環(huán)節(jié)出了問(wèn)題,還是圖本身無(wú)用?我傾向認(rèn)為是后者。畢竟表示學(xué)習(xí)算法已經(jīng)經(jīng)過(guò)廣大同行的檢驗(yàn)。
關(guān)于構(gòu)圖關(guān)聯(lián)指向性的討論,再?gòu)囊粋€(gè)簡(jiǎn)單的問(wèn)題說(shuō)起。假設(shè)以一個(gè)人向另一個(gè)人發(fā)起了微信轉(zhuǎn)賬,那是否能夠說(shuō)明以下三種情況成立:第①種:兩者是微信好友。顯然這點(diǎn)是充分成立的;第②種:兩者是居住地同省。考慮到同省人之間更容易發(fā)生經(jīng)濟(jì)交流,這點(diǎn)上也是有一定概率成立的;第③種:兩者身高差18公分。這點(diǎn)就毫無(wú)邏輯可言了。因此,轉(zhuǎn)賬關(guān)系對(duì)不同的問(wèn)題,其指向性程度是不同的,轉(zhuǎn)賬對(duì)同為刷單用戶的指向性要遠(yuǎn)大于同為羊毛黨用戶,這點(diǎn)應(yīng)該可以解釋W(xué)xPayLine++在兩種標(biāo)簽下迥異的表現(xiàn)。
如何判斷關(guān)聯(lián)對(duì)問(wèn)題具有指向性?如果可以提前判斷關(guān)聯(lián)與問(wèn)題缺乏指向性,則可以避免代價(jià)高昂的圖表示學(xué)習(xí)的計(jì)算,節(jié)約開(kāi)發(fā)者時(shí)間。這里介紹兩種方法。
首先是直觀理解,即如果有關(guān)聯(lián)的雙方能夠同時(shí)離目標(biāo)較近,關(guān)聯(lián)對(duì)問(wèn)題則有較強(qiáng)的指向性。如對(duì)于兩個(gè)用戶,若一位用戶是刷單用戶的轉(zhuǎn)賬交易關(guān)聯(lián)方,而另一位不是,則前者是刷單用戶的概率相對(duì)要高于后者。一個(gè)有趣的案例則是微信支付場(chǎng)景中的非本人項(xiàng)目。非本人項(xiàng)目旨在挖掘?qū)嵜C件同賬號(hào)實(shí)際使用者并不一致的所有微信支付賬號(hào)(如上圖所示)。例如未成年人通過(guò)綁定父母的銀行卡實(shí)現(xiàn)實(shí)名的微信支付賬號(hào)則為非本人賬號(hào)。 該項(xiàng)目初期通過(guò)分類遇到較大的效果瓶頸,有同事提議使用圖表示學(xué)習(xí)的介入來(lái)提升效果。圖表示學(xué)習(xí)的計(jì)算代價(jià)高昂,經(jīng)過(guò)詳細(xì)評(píng)估之后判斷圖表示學(xué)習(xí)在該場(chǎng)景中難以發(fā)揮作用,核心的障礙在于無(wú)法構(gòu)圖。即基于非本人的語(yǔ)義,無(wú)論是人為頂點(diǎn),抑或人證pair為點(diǎn),均難以構(gòu)建針對(duì)非本人有指向性意義的關(guān)聯(lián)。這點(diǎn)不做詳細(xì)的展開(kāi),歡迎讀者一起討論。
其次是低代價(jià)的統(tǒng)計(jì)分布。通過(guò)抽取相同數(shù)量的正負(fù)樣本,分別組成對(duì)應(yīng)的導(dǎo)出子圖??梢员容^兩個(gè)導(dǎo)出子圖的連通分量數(shù)、邊數(shù)以及二階路徑數(shù),如果差異明顯,則關(guān)聯(lián)對(duì)正負(fù)樣本的區(qū)分具有指向性,反之則無(wú)指向性。
表示學(xué)習(xí)效果與畫(huà)像特征可能的重疊 一般來(lái)說(shuō),表示學(xué)習(xí)從數(shù)據(jù)還是方法的角度上,同畫(huà)像特征都是相對(duì)獨(dú)立的。但在支付場(chǎng)景的實(shí)踐中我們發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象:表示特征的提升效果在畫(huà)像特征不斷豐富后會(huì)出現(xiàn)下降。在微信支付反欺詐場(chǎng)景的惡意率建模中,交易網(wǎng)絡(luò)表示學(xué)習(xí)的特征在第一版模型上效果提升明顯,但隨著模型特征工程的展開(kāi)和優(yōu)化,表示學(xué)習(xí)的提升效果明顯下降,即畫(huà)像等基礎(chǔ)特征足夠豐富時(shí),交易的關(guān)聯(lián)所帶來(lái)的額外信息在減少。初步估計(jì)是交易關(guān)聯(lián)的雙方相比無(wú)交易關(guān)聯(lián)的雙方更容易畫(huà)像相似,諸如消費(fèi)地點(diǎn)、興趣愛(ài)好或其它行為上的相似,通過(guò)畫(huà)像工程體現(xiàn)在特征中。這點(diǎn)上并沒(méi)有形式化的證明,但有個(gè)有趣的真實(shí)例子可以供大家參考:筆者之前常去南山文體游泳館游泳,游泳館需要客戶交現(xiàn)金做衣柜鑰匙的押金,這里很容易出現(xiàn)某位客戶忘了帶現(xiàn)金向其他泳友求助現(xiàn)金并微信轉(zhuǎn)賬還款的情況,筆者自身就遇到過(guò)一次。這種情況下轉(zhuǎn)賬交易的雙方往往出現(xiàn)在相同的地點(diǎn),有相同的興趣愛(ài)好和消費(fèi)習(xí)慣(泳具)等等。
以上幾點(diǎn)均是經(jīng)驗(yàn)之談,僅供參考,更準(zhǔn)確的方法或更形式化的證明留待未來(lái)研究。
5 總結(jié)
- 圖查詢的關(guān)鍵在于可視化與即時(shí)關(guān)聯(lián)分析的高效
- 圖計(jì)算的核心作用再全局關(guān)聯(lián)計(jì)算中的性能加速
- 圖學(xué)習(xí)同目前業(yè)務(wù)需求關(guān)系最為緊密,作用最為明顯
- 圖的運(yùn)用應(yīng)該在遇到業(yè)務(wù)瓶頸之后
- 圖的產(chǎn)品應(yīng)該聚焦業(yè)務(wù)需求、使用體驗(yàn)而非圖技術(shù)本身