论文浅尝|简单高效的知识图谱表示学习负样本采样方法
筆記整理 | 陳名楊,浙江大學在讀博士生,主要研究方向為知識圖譜表示學習
Introduction
研究知識圖譜表示學習(KnowledgeGraph Embedding)可以解決當前很多應用的基本問題,這些方法旨在將知識圖譜中的實體(Entity)和關系(Relation)都映射到低維向量空間中,并且捕獲實體和關系之間的語義信息。當前很多知識圖譜表示學習的方法都著重于設計新的得分函數(Score Function)從而可以捕獲實體和關系之間復雜的交互。
然而在知識圖譜表示學習的過程中,一個重要的部分——負采樣(Negative Sampling)并沒有被足夠的重視。在知識圖譜中,負樣本采樣的需求來源于KG中僅包含真實的正樣本三元組,而在訓練知識圖譜表示的過程中,每個正樣本需要對應相應的負樣本。當前很多方法都使用均勻采樣(Uniform Sampling)的方式,然而這樣的方式很容易造成訓練過程中的梯度消失,也就是很多負樣本都是很容易被劃分為負樣本的簡單樣例,得分函數很自然的對這一類負樣本給出較低的分數,從而導致訓練過程中梯度為零。
所以高質量的負樣本應該是得分函數給出較高分數(被誤認為是正樣本)的負樣本,這篇文章探討了在知識圖譜表示學習模型的學習過程中(1)如何捕獲并且建模負樣本的動態分布,以及(2)如何有效地進行負樣本的采樣。
作者發現負樣本的分數分布是高度偏斜的(Skewed),也就是說只有少量的負樣本的分數較高,其余的分數較低的負樣本的對后續的訓練幾乎無用。這個發現促使作者設計模型來維護這部分高質量的負樣本三元組,并且在訓練的過程中動態地更新。
Proposed Model
圖1. 負樣本的分數分布舉例
圖1(a)中展示了某一個三元組在訓練過程中,負樣本分布的變化;圖1(b)中展示了在訓練完成后,不同三元組的負樣本分布情況。最終得出的結論是,負樣本分數的分布是高度偏斜的,并且只有很少一部分的負樣本有較大的分數。是否可以設計一個模型直接監控那些分數較高的負樣本。這篇文章提出了NSCaching的方法,該方法只要解決了以下兩個問題:
1、如何建模負樣本的動態分布?
2、如何有效的采樣負樣本?
模型設計了一個緩存機制,保存了知識圖譜中每個三元組對應的分數較高的負樣本三元組,Algorithm2中展示了基于該緩存機制的知識圖譜表示學習模型的學習過程。
具體來說,緩存分為頭實體緩存(head-cache)和尾實體緩存(tail-cacahe),其中頭實體緩存利用(r, t)進行索引,尾實體緩存利用(h, r)進行索引,他們分別存儲的是知識圖譜中的頭實體和尾實體。在算法中,首先會確定一個正樣本,然后得到該正樣本在緩存中對應的部分(步驟5),然后會根據相應的緩存構造負樣本(步驟6-7),最后更新緩存(步驟8)。
考慮模型的具體細節,這里如何從緩存中采樣負樣本(步驟6)以及如何更新緩存(步驟8)呢?
對于步驟6,作者采用的是從緩存中進行均勻采樣。利用均勻采樣的原因是該方法簡單高效,雖然另一個看起來更好的方法可能是利用負樣本的分數進行采樣,但作者認為該方法不僅需要更多的空間存儲三元組的分數,并且會因為負樣本分布變化和假負樣本引入更多偏差。
對于步驟8,這里采用重要性采樣(Importance Sampling,IS)。首先從所有的三元組中均勻采樣一部分實體,然后把這部分實體和原本緩存的實體放在一起,并計算分數,利用如下公式計算每個負樣本三元組的重要性,也就是被采樣進入更新后的緩存的概率。
?完整的緩存更新算法如下:
Experiments
作者在多個標準數據集上進行了實驗,如下圖是在利用TransE,在不同標準數據集上,和其他負采樣方法對比的結果(更多利用其余KGE的實驗結果請參考原文),可以看出這里提出的NSCacheing優于其他的負采樣方法。
圖2. 在不同標準數據集上的結果
更多的,作者還探討了緩存的更新和采樣機制的不同選擇帶來的不同結果,具體實驗結果請參考原文。
OpenKG
OpenKG(中文開放知識圖譜)旨在推動以中文為核心的知識圖譜數據的開放、互聯及眾包,并促進知識圖譜算法、工具及平臺的開源開放。
點擊閱讀原文,進入 OpenKG 網站。
總結
以上是生活随笔為你收集整理的论文浅尝|简单高效的知识图谱表示学习负样本采样方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 - ICLR2020 | Ab
- 下一篇: TCC分布式实现原理及分布式应用如何保证