TransE 算法详解
算法背景
知识图谱是什么
(姚明,出生于,上海)
(姚明,职业, 篮球运动员)
(姚明,性别,男)
为了简化起见,我们使用(h,r,t)来表示三元组。其中:
- h表示头实体
- r表示关系
- t表示尾实体
知识表示是什么
[0.01, 0.04, 0.8, 0.32, 0.09, 0.18]
基本思想
算法描述
TransE算法认为,一个正确的三元组的embedding(h,r,t)会满足 h ⃗ + r ⃗ = t ⃗ \vec h + \vec r = \vec t h+r=t

也就是说,头实体embedding加上关系embedding会等于尾实体embedding。同理,如果是一个错误的三元组,那么它们的embedding之间就不满足这种关系。
于是我们认为定义一个距离 d ( x ⃗ , y ⃗ ) d(\vec x , \vec y) d(x,y)来表示两个向量之间的距离,一般情况下,我们会取L1,或者L2 normal 。那么我们需要的是对一个正确的三元组 ( h , r , t ) (h, r, t) (h,r,t)来说,其距离 d ( h ⃗ + r ⃗ , t ⃗ ) d(\vec h + \vec r , \vec t) d(h+r,t)越小越好,相反对于一个错误的三元组 ( h ′ , r , t ′ ) (h’, r, t’) (h′,r,t′)来说距离 d ( h ′ ⃗ + r ⃗ , t ′ ⃗ ) d(\vec {h’} + \vec r , \vec {t’}) d(h′+r,t′)越大越好,因此给出目标函数:
min ∑ ( h , r , t ) ∈ S ∑ ( h ′ , r , t ′ ) ∈ S ′ [ γ + d ( h + r , t ) − d ( h ′ + r , t ′ ) ] + \min {\sum _ {(h,r,t) \in S} \sum _{(h’, r, t’) \in S’} [\gamma + d(h + r, t) – d(h’ + r , t’)]_+} min(h,r,t)∈S∑(h′,r,t′)∈S′∑[γ+d(h+r,t)−d(h′+r,t′)]+
其中
- Δ \Delta Δ 表示正确的三元组集合
- Δ ′ \Delta ‘ Δ′ 表示错误的三元组集合
- γ \gamma γ 表示正负样本之间的间距, 是一个常数
- [ x ] + [x]_+ [x]+ 表示 max ( 0 , x ) \max(0,x) max(0,x)
论文中的算法描述

梯度
其他参数的偏导求解方式与 h i h_i hi的求导方式差异不大,这里不再赘述。
参考文献
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217194.html原文链接:https://javaforall.net
