【TransE模型】基于分布式表示推理
TransE [ Bordes et al., 2013] 是最具代表性的位移距離模型, 其核心思想是實體和關系間的位移假設: ?三元組中頭實體向量表示h與關系的向量表示r之和與尾實體向量表示 t越接近越好, 即 h + r ≈ t
TransE基于實體和關系的分布式向量表示,將每個三元組實例(head,relation,tail)中的關系relation看做從實體head到實體tail的翻譯,通過不斷調整h、r和t(head、relation和tail的向量),使(h + r) 盡可能與 t 相等,即 h + r = t。
?代碼的實現:
項目數據采用FB15數據集實現TransE模型,代碼來源:https://github.com/Anery/transE?
實體數據:entity2id,第一列為實體名字,第二列為實體ID
?關系數據:relation2id,第一列為關聯名字,第二列為關系ID
(h,t,r)數據,包括三列,第一列H實體名字,第二列T實體名字,第三列R關系名字。分為訓練集,驗證集和測試集
- 首先,TransE模型采用k維隨機均勻分布對每個實體和每個關系進行向量初始化
- 然后,批訓練數據集構建,從訓練集中隨機選出正面樣本(h,r,t),然后基于正面樣本,保持正面樣本中h,r或r,t不變,改變t或h,獲得負面樣本,合并一起構成批訓練數據集。
- 表示向量更新,采用隨機梯度下降法,對批訓練數據集中正面樣本(h,r,t)和負樣本的向量表示進行更新。update_embeddings函數中,要對correct triplet和corrupted triplet都進行更新(因為不同時替換頭尾實體,所以在每步更新時重疊的實體要更新兩次)
- TranE直接對向量表示進行訓練,每個實體(head或tail)對應一個k維向量,每個關系對應一個k維向量,所有的k維向量即為TransE模型的參數,需要訓練的參數。
?TransE模型訓練 :
TransE模型的目標函數:
L1范數,也稱為曼哈頓距離,使用L1范數可以衡量兩個向量之間的差異性,也就是兩個向量的距離
L2范數,也稱為歐式距離,L2范數也可以用來衡量兩個向量之間的差距
其中距離度量方式有L1范數和L2范數兩種。在測試時,以?個三元組為例,用語料中所有實體替換當前三元組的頭實體計算距離,將結果按升序排序,用正確三元組的排名情況來評估學習效果,同理,對尾實體也這樣做。
度量標準選擇hits@10和mean?rank,前者代表命中前10的次數/總查詢次數,后者代表正確結果排名之和/總查詢次數。
測試結果:
超參選擇:對FB15k數據集,epoch選了20,可以增加epoch來提高模型,nbatches選了400(訓練最快),embedding_dim=50, learning_rate=0.01,margin=1。
參考文章:
https://blog.csdn.net/shunaoxi2313/article/details/89766467
https://blog.csdn.net/weixin_44023339/article/details/100080669
總結
以上是生活随笔為你收集整理的【TransE模型】基于分布式表示推理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TransE解读
- 下一篇: TransE算法原理与代码解析(2021