PyTorch-BigGraph系列:數據模型

PBG(Pytorch-BigGraph)對有向的多關係多圖進行操作,其頂點叫做實體。每一條邊原實體與目的實體相連接(源實體和目標實體分別叫做左手邊和右手邊,簡記爲LHS和RHS)。同一對實體允許右多條邊。即左手邊和右手邊的邊是相同的也是允許的。

每個實體具有特定的實體類型(每一個實體有且僅有一個實體類型)。因此,這些類型會把所有實體分成不相交的組。相似地,每一條邊也屬於一個關係類型。給定關係類型的所有邊必須具有相同實體類型的左手邊實體和相同類型的右手邊實體類型(與右手邊實體類型不相同的實體類型)。該屬性意味着每一個關係類型有一個左手邊實體類型和一個右手邊實體類型。

該圖中,有14個實體,5個紅色實體類型,6個黃色實體類型和3個藍色實體類型;有12條邊,6個橘黃色關係類型(在紅色和黃色實體之間),3個紫色實體類型(在紅色和藍色實體之間)以及3個綠色實體類型(在黃色和藍色實體之間)。

爲了使PBG能夠對大規模圖進行操作,給圖會被分成幾個小的片段,在每一個小片段上以分佈式方式進行訓練。通過將每個類型的實體拆分成一定數量的子集,這屬首次。拆分的過程叫做分區。然後,對每一個關係類型,其邊被劃分成桶:對每對分區(對每一個關係類型,一個關係類型來自右手邊,另一個關係類型來自右手邊),創建一個桶,其包含左手邊和右手邊實體都在這些分區的類型邊。

該圖展示了一個可能的實體分區,紅色有三個分區,黃色有3個分區,藍色只有1個分區(因此藍色是未分區的)。顯示的邊是是那些在紅色實體的分區2黃色的桶和黃色實體的分區1之間的橘色桶。
注意:
由於技術的原因,在當前狀態下,出現在某個關係類型左側的所有實體類型必須劃分爲相同數量的分區(除了未分區實體)。
對於出現在右側的所有實體類型也必須如此。在數字術語中,它意味着所有實體的分區數量必須能夠廣播到相同的值。

所有的實體由類型所標識——分區以及其在該分區內的索引(索引必須是連續的,意味着如果在類型分區中存在NN個實體,其索引在半開區間[0,N)[0, N))。一條邊由其類型所標識——桶(即,左手邊和右手邊實體類型的分區)以及左手邊和右手邊各自分區類的索引。一條邊沒有必須指定其左手邊和右手邊實體,因爲其隱含在變得關係類型中了。

正式地,每一個桶都可以一對整數(i,j)(i, j)所識別,其中iijj分別是左手邊和右手邊的分區。在桶中,每一條邊都由一個整數三元組(x,r,y)(x, r, y)所識別,xxyy分別表示左手邊和右手邊實體,而rr表示關係類型。這條邊是通過首先在配置中查找關係類型rr而被“解釋”的,並且指出其只有左手邊的實體類型e1e_1和右手邊的實體類型e2e_2。然後可以確定左手邊的實體,由(e1,i,x)(e_1, i, x)給出(其類型,分以及分區類的索引),相似地,左手邊的實體由(e2,j,y)(e_2, j, y)給出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章