源鏈接:https://torchbiggraph.readthedocs.io/en/latest/scoring.html
Embeding 訓練的目標是將每個實體嵌入到R空間中,并且讓兩個實體的嵌入能很好地預測他們之間是否存在某種特定的關系。
更準確地說,訓練的目標是為每個實體學習嵌入并為每個關系類型學習一個函數(shù)。函數(shù)接受兩個實體嵌入,為它們分配一個分數(shù)。函數(shù)主要是為了讓相關實體比不相關實體能獲得更高的分數(shù)。
訓練集中提供的所有邊都被視為正實例。為了進行訓練,還需要一組負邊。這些負邊不是由用戶提供的,而是由系統(tǒng)在培訓期間生成的(參見見負抽樣),通常通過固定左側(cè)實體和關系類型并抽樣一個新的右側(cè)實體,反之亦然。這種抽樣方案在大型稀疏圖是合理的,因為這樣生成的邊在圖中是真正邊的概率很低。
通常來說,實體嵌入可以在R空間中取任何值。但是,在某些情況下(例如,當限制它們在某個球內(nèi)時,或者當使用余弦距離比較它們時),它們的“角度”將比它們的范數(shù)更重要。
每個關系評分函數(shù)必須以特定的形式表示(文獻中最常見的功能可以轉(zhuǎn)換為這種表示)。在當前的實現(xiàn)中,只允許對其中一個邊的嵌入進行轉(zhuǎn)換,然后使用通用的對稱比較器函數(shù)將其與另一個邊的未轉(zhuǎn)換嵌入進行比較,這對于所有關系都是相同的。形式上,對于左側(cè)實體x和右側(cè)實體y,以及對于關系類型r,得分為:fr(θx,θy)=c(θx,gr(θy)).其中θx和θy分別是x和y的嵌入,fr是r的得分函數(shù),gr是r的操作器,c是比較器。
在“正常”情況下(所謂的“標準”關系模式),運算符僅應用于右側(cè)實體。使用動態(tài)關系時不是這樣。將運算符應用于兩側(cè)通常是多余的。另外,與另一側(cè)相比,首選一側(cè)可以打破對稱性并捕捉邊緣的方向。
Embeddings 嵌入
嵌入表示存在在D維真實空間中,其中D由維度配置參數(shù)確定。通常,每個實體都有自己的嵌入,這完全獨立于任何其他實體的嵌入。當使用特征化實體的方法不同,是實體的嵌入將是其特征嵌入的平均值。
如果設置了max_norm配置參數(shù),則每次參數(shù)更新后,嵌入將以半徑max_norm投影到單位球上。
如果要添加新的嵌入類型,需要實現(xiàn)torchbigraph.model.abstractEmbedding類的子類。
Global embeddings 全局嵌入
當global_emb配置參數(shù)被激活,每個實體嵌入通過一個特定的實體類型向量(與嵌入同時學習)來轉(zhuǎn)化。
Operators 操作器
none,無操作,使嵌入保持不變;
translation, 平移,增加了嵌入相同維的向量;
diagonal, 對角線,將每個尺寸乘以不同的系數(shù)(相當于乘以對角線矩陣);
linear, 線性,應用線性映射,即乘以一個全平方矩陣。
affine, 仿射,應用仿射變換,即線性后接translation。
complex_diagonal,? 復數(shù)_對角線,它將D-維實向量解釋為D/2維復向量(D必須是偶數(shù);向量的前半部分是實向量,后半部分是虛向量),然后將每個條目乘以不同的復雜參數(shù),就像diagonal一樣。
所有操作器的參數(shù)是在訓練中學得的。
如果要自定義操作器,我們需要實現(xiàn)torchbiggraph.model.AbstractOperator的子類(在動態(tài)關系情況下實現(xiàn)torchbiggraph.model.AbstractDynamicOperator子類,docstrings解釋了必須實現(xiàn)什么)并且在torchbiggraph.model.register_operator_as()裝飾器中注冊(或者torchbiggraph.model.register_dynamic_operator_as())指定一個新名稱,然后在配置中使用該名稱來選擇比較器。上述所有操作都可以在配置文件內(nèi)部完成。
Comparators 比較器
可用的比較器有:
dot,點積,計算兩個嵌入向量的標量或內(nèi)積;
cos,cos距離,是兩個向量之間夾角的余弦,或等于點積除以向量范數(shù)的乘積。
l2,負的l2距離,也就是歐幾里得距離(負是因為較小的距離會得到較高的分數(shù))。
squared_l2,負平方L2距離。
自定義比較器需要實現(xiàn)torchbiggraph.model.AbstractComparator 子類并且在torchbiggraph.model.register_comparator_as()裝飾器中注冊,指定一個新名稱,然后在配置中使用該名稱來選擇比較器。上述所有操作都可以在配置文件內(nèi)部完成。
Bias 偏置
如果使用了bias 配置,那么嵌入的第一個坐標將作為比較器計算中的偏差。這意味著比較器將僅根據(jù)向量的最后一個D-1條目進行計算,然后將兩個向量的第一個條目都添加到結(jié)果中。
Coherent sets of configuration parameters 相關配置集
本章中描述的參數(shù)在配置文件中集中顯示(為了更接近實現(xiàn),并允許更靈活的調(diào)優(yōu)),但它們的某些組合比其他組合更優(yōu)。
除了默認配置外,還發(fā)現(xiàn)以下的配置效果較優(yōu):init_scale?= 0.1,?comparator?=?dot,?bias?= true,?loss_fn?=?logistic,?lr?= 0.1.
Interpreting the scores 分值解釋
在訓練過程中,不同的應用會基于不同的損失函數(shù),這讓得到的分值有不同的解釋。常見的包括對和實體有關聯(lián)關系的實體排序,確定兩個給定實體之間存在某種關系的概率等。
Todo:
討論如何使用訓練好的嵌入(例如,計算P(edge)、k-最近鄰(k-nearest-neighbors),或基于特征進行訓練下游分類器)。同事,如果有一個小腳本,給它一個邊它可以輸出一個分數(shù)或者近似的工具,那就太好了。