Facebook開(kāi)源了超大規(guī)模圖嵌入算法,上億個(gè)節(jié)點(diǎn)也能快速完成
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
圖,是很有用的數(shù)據(jù)結(jié)構(gòu),用節(jié)點(diǎn) (Node) 和邊 (Edge) 織成一張網(wǎng)。比如,知識(shí)圖譜就是這樣的網(wǎng)。

處理這樣的數(shù)據(jù),要用到圖嵌入 (Graph Embedding) :把高維的網(wǎng)絡(luò),轉(zhuǎn)換成低維的向量。處理之后,機(jī)器學(xué)習(xí)模型才能輕易食用。
如果像上圖這樣,只有幾個(gè)節(jié)點(diǎn),十幾條邊,圖嵌入沒(méi)什么難度。
如果有幾十億個(gè)節(jié)點(diǎn),幾萬(wàn)億條邊呢?傳統(tǒng)的圖嵌入方法就捉急了。
但現(xiàn)在,F(xiàn)acebook開(kāi)源了叫做PyTorch-BigGraph (簡(jiǎn)稱(chēng)PBG) 的新工具。

有了它,再大的圖 (原文是arbitrarily large,任意大) 都能快速生成圖嵌入。而且,完全不需要GPU。
開(kāi)源模型除了可以自己訓(xùn)練之外,還有拿7,800萬(wàn)節(jié)點(diǎn)的Wikidata數(shù)據(jù)預(yù)訓(xùn)練過(guò)的模型,可以直接下載來(lái)用。
PBG發(fā)表之后,小伙伴們紛紛奔走相告:

LeCun老師還親自轉(zhuǎn)發(fā)了兩次。
如何養(yǎng)成
PBG是一個(gè)分布式系統(tǒng),用1.2億個(gè)節(jié)點(diǎn)的完整FreeBase知識(shí)圖譜來(lái)訓(xùn)練的。

訓(xùn)練過(guò)程中,PBG會(huì)吃進(jìn)圖上所有邊 (Edge) 的大列表,每條邊都是用它兩端的節(jié)點(diǎn)來(lái)定義,一個(gè)是源 (Source) ,一個(gè)是目標(biāo) (Target) 。定義中也有兩點(diǎn)之間的關(guān)系 (Relation Type) 。
然后,PBG給每一個(gè)節(jié)點(diǎn),輸出一個(gè)特征向量 (就是嵌入) ,讓兩個(gè)相鄰的節(jié)點(diǎn)在向量空間中離得近一些,讓不相鄰節(jié)點(diǎn)的離遠(yuǎn)一些。
這樣一來(lái),那些周?chē)h(huán)境分布相近的節(jié)點(diǎn),在向量空間里的位置也會(huì)彼此靠近,圖原本要表達(dá)的意思就保留下來(lái)了。
另外,針對(duì)每種不同的關(guān)系,“近似度得分 (Proximity Score) ”都可以定制不同的計(jì)算方法。這樣,一個(gè)節(jié)點(diǎn)的嵌入,就可以在不同種類(lèi)的關(guān)系里共享了。
快一點(diǎn),再快一點(diǎn)
要快速處理大規(guī)模的圖數(shù)據(jù),PBG用了這幾個(gè)法術(shù):
一是圖分區(qū) (Graph Partitioning) ,這樣就不需要把整個(gè)模型加載到內(nèi)存里了。在圖嵌入質(zhì)量不損失的情況下,比不分區(qū)時(shí)節(jié)省了88%的內(nèi)存占用。二是一臺(tái)機(jī)器進(jìn)行多線(xiàn)程計(jì)算。三是在多臺(tái)機(jī)器上同時(shí)跑,在圖上各自跑一個(gè)不相鄰的區(qū)域。四是批次負(fù)采樣(Batched Negative Sampling) ,能讓一臺(tái)CPU每秒處理100萬(wàn)條邊,每條邊100次負(fù)采樣。
訓(xùn)練完成之后,在FB15k、Youtube、LiveJournal等等圖譜上,都測(cè)試過(guò)。
團(tuán)隊(duì)說(shuō),PBG和大前輩們的圖嵌入質(zhì)量相當(dāng),但需要的時(shí)間明顯縮短了。
你也試一試吧
你也去訓(xùn)練一個(gè)PBG吧。
反正,也不用GPU。
不想訓(xùn)練的話(huà),還有用完整WikiData預(yù)訓(xùn)練的模型。
你需要的傳送門(mén),都在這里了。
代碼傳送門(mén):
https://github.com/facebookresearch/PyTorch-BigGraph
食用索引:
https://torchbiggraph.readthedocs.io/en/latest/
論文傳送門(mén):
https://arxiv.org/abs/1903.12287
博客傳送門(mén):
https://ai.facebook.com/blog/open-sourcing-pytorch-biggraph-for-faster-embeddings-of-extremely-large-graphs/




























