知识图谱嵌入|KG-BERT代码 ConvE ConvR
KG-BERT開源項目實現
python安裝
【】(原本是圖片)
Q: 左側的幾個環境有什么不同?怎么使用?
A:選了第一行的virtualenv環境,下上兩個按順序都試了一下(一頓瞎操作)1.幾個需要新加的庫 pytorch等(項目主界面跳出提醒添加)好像都添加在了 D盤的AppData里的python37里;2.項目文件夾里出現了虛擬環境venv,但是沒有我添加的新庫。
修改初始化參數
【】
【】
將參數添加進去:
【】
點綠箭頭運行,晚上8點40開始,報錯:
【】
意思應該是device為空值
【】
又重新點擊運行,device的值為cpu了…奇怪
之后就是漫長的訓練過程
搭pytorch-gpu環境
CPU訓練如果可以的話,試著搭一下pytorch-gpu的環境
Q:需不需要額外的安裝cuda和cudnn?還是只在官網安裝pytorch就行?
Anaconda+虛擬環境裝
cuda+cudnn+Anaconda+虛擬環境裝
A: 需要
參考鏈接:
安裝了: CUDA8.0+CUDNN+Anaconda3+Python3.7+pytorch-gpu
一些問題:
-
PyTorch占用的GPU空間沒有釋放,導致下次運行時,出現CUDA out of memory
用終端結束占用GPU的進程 -
有一部分自編碼特征是通過keras訓練的。而keras或tensorflow初始化時會默認占滿全部顯卡和全部剩余顯存,這樣就導致pytorch的顯存不夠用了,就算把batch_size調小到1也不行
這種情況下,可以通過對keras/tensorflow的顯存進行限制 -
最后就是考慮調小每次用于參數更新的數據量即batch_size或者用一些程序優化方法了
我嘗試了上面地解決辦法都沒有解決我的問題,應該還是我的顯存太小低于4G,而模型比較復雜,模型顯存占用和單個樣本顯存占用比較大。
所以之后我想要么還是用cpu繼續跑,就是花費的時間長點,要么用實驗室的機器跑。
論文部分
介紹
解決淺層架構的可擴展性問題和全連接深度架構的過擬合問題的方法之一,是使用參數高效、快速的算子組成深度網絡
相關工作
一維卷積與二維卷積的交互次數
與1D卷積相比,2D卷積能夠提取更多的兩個嵌入之間的特征交互,同樣的原理可以擴展到更高維度的卷積,但我們把這個留作未來的工作
背景知識
神經鏈接預測模型:可以看作是由一個編碼部分和一個評分部分組成的多層神經網絡
-
編碼組件映射實體s, o∈ E 到它們的分布式嵌入表示 es,eo∈ Rk
-
評分組件里兩個嵌入的實體是由一個函數評分ψr
-
三元組(s, r, o)的分數 ψ(s, r, o) = ψr(es,eo)∈R
總結了文獻中幾種鏈接預測模型的評分函數:
【】
模型 評分函數 關系參數 空間復雜度
Q: W不知道是啥
A: 應該和KG-BERT里的W參數差不多,也需要通過訓練得到
卷積二維知識圖嵌入
提出一個 神經鏈接預測模型,其中輸入實體和關系之間的交互是由卷積和全連接層建模的
模型的主要特征為 分數是由二維形狀嵌入上的卷積定義的
評分函數:
【】
rr∈Rk是一個取決于r的關系參數,–es and --rr表示es and rr的2D重塑,如果es,rr∈Rk,–es,–rr∈Rkwxkh,則k = kwxkh
【】
【】
Q: 兩個非線性函數f有什么不同,第二個f是內積的意思嗎?
Q: 第4點是什么意思?
為了訓練模型參數,用一個非線性函數σ(·)sigmoid作用在得分上:
【】
盡量減少以下二進制交叉熵損失:
【】
Q: 這個公式看起來對es 和 rr處理,然后和eo匹配?和上面定義的不一樣;關系是同一類別算一個關系嗎?實體呢?不然怎么1-N評分?
其中,標簽向量t 的維度為R1x1為1-1評分或R1xN為1-N評分,向量t的元素如果關系存在為1,否則為0。
模型細節:(需要進一步了解)
1.用改正的線性單元作為非線性f為了更快的訓練,并在每一層之后進行批歸一化,以穩定、正則化和增加收斂速度
2.通過使用dropout分幾個階段規范我們的模型,在嵌入、卷積運算后的特征圖和全連接層后的隱藏單元上使用dropout
3.使用Adam作為優化器,標簽平滑以減少由于標簽處輸出非線性飽和而導致的過擬合
鏈路預測任務的快速評估
此模型中,卷積大約消耗總計算時間的75-90%,盡可能減少卷積操作的數量以提高計算速度,對于鏈接預測模型,通常增加批大小以加快評估,對于卷積模型是不可行的,因為當增加批大小時,內存需求很快就會超過GPU內存容量
使用1-N評分:
如果我們在批大小和嵌入大小為128的高端GPU上進行1-1的基準評分,然后在FB15k(實驗中使用的數據集之一)上使用卷積模型進行一次訓練和一次評估,耗時2.4分鐘和3.34小時(Q:為什么訓練比評估耗時少?這里的評估指的是什么?和打分應該不是一個東西吧),使用1-N評分,分別是45秒和35秒。1.在評估時間方面有超過300倍的顯著改進
對于批次大小為128的單次向前向后傳遞,從N= 100,000到N=1,000,000個實體只會將計算時間從64ms增加到80ms, 換句話說,實體數量增加10倍只會增加25%的計算時間——這證明了該方法的可擴展性 2. 該方法可擴展到大型知識圖,并提高收斂速度
如果我們使用1-(0.1N)計分而不是1- N計分,也就是說,對10%的實體計分,我們可以以快25%的速度計算向前-向后傳遞,然而,我們在訓練集上的收斂速度要慢230%。因此,1-N評分有一個額外的效果,3. 類似于批處理歸一化(Ioffe和Szegedy 2015)(?)——我們用一些計算性能換取了大幅提高的收斂速度,也獲得了更好的性能
實驗
知識圖譜數據集
為了評估模型,使用了從文獻中選擇的數據集:
WN18:是WordNet的一個子集,由18個關系和40,943個實體組成,在151442個三元組中,大部分是由下義詞(?)關系和上義詞關系構成的,因此,WN18傾向于遵循嚴格的分層結構
FB15k:這個知識圖譜中的大部分內容描述了關于電影、演員、獎項、體育和運動隊的事實
YAGO3-10:由每個至少有10個關系的實體組成,大多數三元組處理人的描述性屬性,如公民身份、性別和職業
Countries:是一個基準數據集,用于評估模型學習實體和關系之間長期依賴的能力,它由三個子任務組成,這些子任務以循序漸進的方式增加難度,其中尋找解的最小路徑長度從2增加到4
Toutanova和Chen(2015)首先注意到WN18和FB15k由于逆關系存在測試泄漏:如,測試集經常包含(s,上義詞,o)這樣的三元組,而訓練集則包含它的逆(o,上義詞,s)。為了創建一個沒有這個屬性的數據集,引入了FB15k-237——一個FB15k的子集,其中去除了逆關系。由于無人調查這個問題的嚴重性,后續研究依舊使用這些數據集進行評估。
文章介紹一個簡單的基于規則的模型,該模型通過在WN18和FB15k上取得最先進的結果來證明這種偏差的嚴重性。將基于規則的模型應用于每個數據集,除了FB15k-237修正的FB15k外,我們還發現了WN18的缺陷,創建了WN18RR來改造WN18作為一個數據集,這個數據集不容易使用單一規則完成,但需要對完整的知識圖譜建模。在今后的研究中,我們不建議使用FB15k和WN18,而是推薦使用FB15k-237、WN18RR和YAGO3-10。
實驗設置
神經網絡中還有很多的需要人工進行選擇的參數,比如神經網絡的層數和每層神經網絡的神經元個數以及正則化的一些參數等等,我們將這些參數稱為–超參數。這些參數不同選擇對模型最終的效果也很重要,我們在開發模型的時候總是需要調節這些超參數
也就是說我們將數據劃分訓練集、驗證集和測試集。在訓練集上訓練模型,在驗證集上評估模型,一旦找到的最佳的參數,就在測試集上最后測試一次,測試集上的誤差作為泛化誤差的近似
根據驗證集上的平均倒數秩(MRR)(?),通過網格搜索選取ConvE模型的超參數(Q:這些超參數訓練得不到?)。網格搜索的超參數范圍如下:
嵌入dropout{0.0,0.1,0.2},特征圖dropout{0.0,0.1,0.3,0.5},投影層dropout{0.0,0.1,0.3,0.5},嵌入大小{100,200},批大小{64,128,256},學習速率{0.001,0.003},和標簽平滑{0.0,0.1,0.2,0.3}
除了網格搜索,還研究了模型的二維卷積層的修改,特別的,研究嘗試了用全連通層和一維卷積代替,然而,這些修正不斷降低了模型的預測精度;還實驗了不同大小的濾波器,發現只有在第一層卷積層使用較小的(即 3x3)濾波器時,我們才會收到好的效果
我們發現以下(超)參數組合在WN18, YAGO3-10和FB15k上效果很好(略)。我們根據驗證集上的平均倒數秩(WN18, FB15k, YAGO3-10)和AUC-PR (Countries)統計量使用早期停止(?),我們每三個時期(epoch)評估一次。與其他數據集不同的是,對于Countries,結果有很高的方差,因此我們平均10次運行并產生95%的置信區間。對于1-1訓練的DistMult和ComplEx結果,我們使用嵌入尺寸為100,AdaGrad (Duchi, Hazan, and Singer 2011)進行優化,并通過在每次參數更新后強制實體嵌入達到L2范數為1來規范我們的模型。和Bordes等人(2013a)一樣,我們使用了基于利潤的兩兩排名損失。
逆模型
訓練數據集94%和81%的三元組與測試集有關聯的逆關系,在這些數據集上表現良好的鏈接預測器可能只是了解哪些關系是與其他關系相反的,而不是對實際的知識圖建模。
為了衡量此問題的嚴重性,作者構建了一個簡單的基于規則的模型,該模型僅對逆關系建模。作者將此模型稱為逆模型。該模型自動從訓練集中提取逆關系,給定兩個關系對r1, r2∈ R,作者檢查(s, r1, o)是否等于(o, r2, s),反之亦然。
【】
Q: 沒咋看懂,所以這個模型能做什么?
A:大概懂了
結果
與之前的工作相似(Y et al.2015;Trouillon等人2016;Niepert 2016),我們使用過濾設置報告結果,即我們將測試三元組與所有其他未出現在訓練、驗證或測試集中的候選三元組進行排名,候選獲得通過用知識圖譜中的所有實體重新排列測試三元組的頭實體或尾實體。
(添加 逆模型 和 ConvE 在測試結果方面的相同點和不同點)
引人注目的是,反向模型在FB15k和WN18的許多不同指標上都達到了最先進的水平。然而,它沒有捕捉到Y AGO310和FB15k-237的逆關系。Toutanova和Chen(2015)推導FB15k-237所用的程序并沒有消除某些對稱關系,例如“similar to”。這些關系的存在解釋了我們的WN18RR反演模型的好成績,該模型是用同樣的程序推導出來的。
提出的模型,ConvE,在YAGO3-10的所有指標上實現了最先進的性能,在FB15k上實現了一些指標,在WN18上也做得很好。在Countries方面,它解決了S1和S2任務,在S3方面表現也很好,比其他模型(如DistMult和ComplEx)得分更高。對于FB15k-237,我們無法復制Toutanova et al.(2015)的基本模型結果,此模型總體上比我們所能達到的效果更好。與Schlichtkrull等人(2017)相比,我們對標準模型的結果略好于他們的,并與他們的R-GCN模型相當。
ConvE的參數效率
從表2可以看出,對于5個指標中的3個指標,具有0.23M參數的FB15k-237的ConvE比具有1.89M參數的DistMult性能更好。具有0.46M參數的ConvE在FB15k-237上仍然取得了最先進的結果,具有0.425 Hits@10。對比之前最好的模型R-GCN (Schlichtkrull et al.2017),其得到0.417 Hits@10,參數大于8M。總的來說,ConvE的參數效率比R-GCNs高17倍,比DistMult高8倍。
對于整個Freebase,這些模型的大小將是超過82GB的R-GCNs, 21GB的DistMult,而ConvE的5.2GB。
分析
消融研究
評估了不同的參數初始化(n = 2)來計算置信區間。得到,隱藏層dropout是到目前為止最重要的組成部分,這并不奇怪,因為它是主要的正則化技術,1-N評分提高了性能,就像輸入dropout一樣,特征圖dropout也有一個較小的影響,而label smoothing似乎不重要——因為沒有它也可以獲得好的結果。
Indegree和PageRank分析
與WN18RR相比,我們的模型在YAGO3-10和FB15k-237等數據集上的性能較好,主要假設是這些數據集包含具有非常高的關系特定入度的節點,例如,關系為“出生在”的節點“美國”的入度超過10,000,在這10000個節點中,許多節點彼此之間(演員、作家、學者、政治家、商界人士)非常不同,要成功地對這樣一個高入度獨立的節點建模,就需要捕捉所有這些差異。
我們的假設是:1. 更深層次的模型,也就是學習多層特征的模型,如ConvE,比淺層模型(如DistMult)更有優勢,以捕獲所有這些約束條件。
然而,2. 更深層次的模型更難優化,因此我們假設,對于具有較低平均關系特定入度的數據集(如WN18RR和WN18),像DistMult這樣的淺層模型可能足以準確地表示網絡的結構。
為了檢驗我們的兩個假設,我們取兩個具有低(low-WN18)和高(high- FB15k)關系特定入度的數據集,通過刪除低和高入度節點,將它們反向為高(high- wn18)和低(lowFB15k)關系特定入度數據集,我們假設,與DistMult相比,ConvE在具有高關系特定入度的數據集上總是做得更好,反之亦然。
事實上,發現兩個假設都成立。對于低fb15k,我們有ConvE 0.586 Hits@10 vs DistMult 0.728 Hits@10;對于高wn18,我們有ConvE 0.952 Hits@10 vs DistMult 0.938 Hits@10,這支持了我們的假設。即更深層次的模型,如ConvE,在建模更復雜的圖(如FB15k和FB15k-237)時具有優勢,但較淺的模型,如DistMult,在建模較不復雜的圖(如WN18 WN18RR)時具有優勢。
為了進一步研究這個問題,我們來看看PageRank,這是一個衡量節點中心度的指標。PageRank也可以被視為節點遞歸入度的度量:節點的PageRank值與該節點的入度成正比。還期望ConvE在具有高平均PageRank(高連通性圖)的數據集上比DistMult更好。
我們發現DistMult和ConvE在Hits@10方面的性能差異大致與測試集的PageRank均值成正比,即測試集節點的PageRank均值越高,ConvE的性能就越好,這進一步證明了更深層次的模型在建模具有高(遞歸)入度的節點時具有優勢。
根據這些證據,我們得出結論,與標準鏈接預測器DistMult相比,我們的模型的性能有所提高,部分原因是我們的模型能夠以更高的精度建模節點,這可能與它的深度有關。
結論與未來工作
我們引入了ConvE,這是一個鏈接預測模型,它使用嵌入上的二維卷積和多層非線性特征來建模知識圖。
- 與計算機視覺中發現的卷積結構相比,我們的模型仍然是淺層的,未來的工作可能會處理增加深度的卷積模型。
- 進一步的工作還可能著眼于2D卷積的解釋
- 或者如何在嵌入空間中加強大規模結構,從而增加嵌入之間的交互數量。
總結
以上是生活随笔為你收集整理的知识图谱嵌入|KG-BERT代码 ConvE ConvR的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rsa的简单学习
- 下一篇: 在移动设备上使用M3G编程教程(转)