1.一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述方法包括以下步骤:
第一步:定义知识图谱三种主要关系模式和相关形式化表述,过程如下:
1.1、定义对称/反对称关系模式和相关形式化表述:关系r是对称关系,当且仅当成立时,关系r被称为对称关系;关系r是反对称关系,当且仅当 成立时,关系r被称为反对称关系;
1.2、定义逆关系模式和相关形式化表述:关系r1与关系r2是一组互逆关系,当且仅当成立时,关系r1与关系r2互为逆关系;
1.3、定义组合关系模式和相关形式化表述:关系r1是关系r2与关系r3的组合,当且仅当成立时,关系r1被称为是关
系r2与关系r3的组合关系;
其中,e1,e2,e3分别表示知识图谱实体集E中的不同实体,r,r1,r2分别表示关系集R中的不同关系,是正确三元组,即正例的集合,是错误三元组,即负例的集合;
第二步、定义四元数的基础和基于四元数乘法的三维旋转表示;
第三步、基于四元数进行关系三维旋转建模,然后引入实体的上下文信息,计算打分函数,重新评估三元组的质量,同时推导模型针对知识图谱三种关系模式建模的能力,并进行模型训练以获得更好的四元数向量表示;
3.1、基于四元数进行关系三维旋转建模,给定一个三元组(h,r,t),其中h表示头实体,t表示尾实体,r表示为头实体和尾实体之间的关系,将这个三元组的头尾实体h,t和关系r的嵌入表示为四元数的向量形式h,t和r;
3.2、引入实体上下文信息,并计算打分函数;
3.3、与RotatE相比,继承了三维旋转的特征,学习和推理三种基本关系模式的能力得到了进一步增强;针对各种关系模式,给出了模型对关系模式的建模能力;
3.4、训练模型以获得更好的四元数向量,过程如下:
3.4.1、准备知识图谱的实体集E,关系集R,训练集三元组集合 这些训练集三元组集合 是由实体集E和关系集R组成的能够成立的三元组,即正例的集合,设置模型实体和关系的维度k,从三元组集合 中取随机个批处理数据,数量设为batch_size;设置负例三元组的数目nneg,负例三元组指的是将某一个正例三元组中的头实体或者尾实体替换后生成的不成立的三元组,nneg的大小表示由一个正例三元组生成nneg个负例三元组;设置边界值γ,用于判断打分函数的值是否超过边界值γ,若超过则表示这个三元组不成立,否则,这个三元组成立;设置自对抗采样温度a,当a=0时,自对抗采样退化为均匀采样,当a>0时,得分越小的负例三元组对应的采样权重就越大;设置模型训练的最大步数MaxStep,表示训练的轮数;
3.4.2、随机初始化实体向量h,t和关系向量r,将它们表示成四元数向量,此时生成的四元数向量并不精准,初始化变量step=1表示当前已进行训练步数;
3.4.3、判断step的值是否小于MaxStep,若小于,执行3.4.3.1,并且step+1,否则,执行
3.4.4;
3.4.4、判断step的值是否小于MaxStep,若小于,执行3.4.3.1,否则,执行3.4.5;
3.4.5、获取最新的实体和关系四元数向量,此时的实体和关系四元数向量相比之前的实体和关系表示成的四元数向量更加准确,此时完成了知识图谱嵌入过程,即将知识图谱中的实体和关系转化成向量的过程。
2.如权利要求1所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.4.3的过程如下:
3.4.3.1、从三元组集合 中随机采样batch_size数量的正例三元组集Sbatch;
3.4.3.2、遍历Sbatch,取Sbatch中第m个三元组,0≤m<batch_size;构造nneg个负例三元组,初始化一个HashMap,将第n+1个负例三元组装入HashMap,HashMap的key值为n,value为负例三元组,0≤n<nneg;
3.4.3.3、获取第m个三元组,执行步骤3.1和3.2,获得3.2.11中打分函数的值,第m个三元组的打分函数值记为dfinalm(h,r,t);
3.4.3.4、遍历HashMap,取key为i的value值,获取第i+1个负例三元组,执行步骤3.1和
3.2,获得3.2.11中打分函数的值,第i个负例三元组的打分函数记为dfinali(h′i,r,t′i),h′i,t′i表示替换后的第i个负例三元组的头实体和尾实体;
3.4.3.5、判断HashMap是否遍历完成,若是执行3.4.3.6,否则,返回3.4.3.4;
3.4.3.6、计算第i个负例三元组的采样权重,计算公式如下所示:x
其中,p(h′i,r,t′i)表示负例三元组的采样权重,exp(x)=e;
3.4.3.7、计算第m个三元组的损失函数,计算公式如下所示:其中σ是sigmoid函数,其计算公式如下所示:
3.4.3.8、判断Sbatch是否遍历完成,若是,执行3.4.3.9,否则,执行3.4.3.2;
3.4.3.9、计算Sbatch中所有正例三元组的损失函数,计算公式如下:
3.4.3.10、根据Sbatch的损失函数值,通过梯度反向传播去更新所涉及的实体和关系四元数向量。
3.如权利要求1或2所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.1的过程如下:
3.1.1、将头实体表示为四元数向量;四元数向量h的表示形式如下所示:h=xhi+yhj+zhk+0
3.1.2、将尾实体表示为四元数向量;四元数向量t的表示形式如下所示:t=xti+ytj+ztk+0
3.1.3、将关系表示为四元数向量;四元数向量r的表示形式如下所示:其中 都是代表一个具体数值的实数;α表示头实体通过旋转轴旋转到尾实体的位置时转过的角度,α∈[0,2π);xh,yh,zh表示头实体的四元数向量在三维空间中x,y,z方向的分量;xt,yt,zt表示尾实体的四元数向量在三维空间中x,y,z方向的分量;ux,uy,uz表示旋转轴的四元数向量在三维空间中x,y,z方向的分量; 是四元数向量,同时是一个单位四元数; 是纯四元数向量,k是模型维数,表示向量之间的哈达玛积;
h和t四元数向量的每个三维空间中x,y,z方向的分量都由k个元素组成,每个元素对应T
一个三维空间中的向量[x,y,z] ;关系向量的每个三维空间中x,y,z方向的分量也有k个元素,每个元素对应一组由单位向量表示的旋转轴u和绕轴旋转的角度α所表示的三维旋转变换;
hi=xhii+yhij+zhik+0,ti=xtii+ytij+ztik+0分别表示头实体和尾实体中第i个元素表示的 四元数向量 ,关系向量的第i个元素表示的四元数向量可以 表示为其中,uxi,uyi,uzi是单位向量旋转轴u=[ux,uy,T
uz]三个分量的第i个元素表示的值,并且uxi,uyi,uzi满足
3.1.4、计算由第i个元素组成的头实体hi、关系ri和尾实体ti所表示成的三元组的打分函数,0≤i≤k‑1,i是整数。
4.如权利要求3所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.1.4的过程如下:
3.1.4.1、计算头实体hi沿着关系ri绕着旋转轴ui旋转αi度后的结果,即计算从头实体和+ ‑1
关系到尾实体的映射Rot(h,r),计算公式如下,其中hroti是hi旋转后的结果,ri 是ri的逆:+ ‑1
Rot(hi,ri)=hroti=ri·hi·ri
3.1.4.2、计算映射结果到尾实体ti的基于距离的打分函数,计算公式如下:‑
3.1.4.3、计算从尾实体和关系到头实体的映射Rot (r,t),即是计算尾实体ti沿着关系ri绕着旋转轴ui旋转αi度后的结果,将头实体到尾实体的旋转记为正向旋转,而将尾实体到头实体的旋转记为反向旋转,依据三维旋转特点,反向旋转只需选择将正向旋转的旋转角度调整为2π‑α,并保持旋转轴u不变即可;或保持旋转角度α不变,将表示旋转轴的向量取为‑1
相反向量‑u,因此计算公式如下,其中troti是ti旋转后的结果,ri 是ri的逆:‑ ‑1
Rot(ri,ti)=troti=ri ·ti·ri
3.1.4.4、计算映射结果到头实体hi的基于距离的打分函数,计算公式如下:
5.如权利要求1或2所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.2的过程如下:
3.2.1、获取该三元组(h,r,t)的头实体‑关系对上下文,并将头实体‑关系对上下文放入一个初始化后的ArrayList,命名为arrayList;实体t是三元组中的尾实体,它的头实体‑关系对上下文定义如下:
把知识图谱从有向图的角度理解,rc是尾实体t的入边,hc是尾实体t通过关系rc所关联到的实体,因此尾实体t的头实体‑关系对上下文的规模就是所有与尾实体t有直接关系rc相连的头实体hc的数量,(hc,rc)是由hc和rc组成的头实体‑关系对,(hc,rc,t)表示由头实体‑关系对上下文(hc,rc)和尾实体t组成的三元组,尾实体t的头实体‑关系对上下文的规模由|Chr(t)|表示;
3.2.2、计算该三元组(h,r,t)的头实体‑关系对上下文的规模|Chr(t)|,|Chr(t)|的大小等于arrayList的大小,即|Chr(t)|=arrayList.size;
+
3.2.3、计算所有头实体‑关系对上下文Chr(t)从头实体和关系到尾实体的映射Rot (hc,rc);
3.2.4、计算尾实体t的头实体‑关系对上下文表示,计算公式如下,其中t是尾实体t的四元数向量表示:
3.2.5、计算尾实体t的头实体‑关系对上下文表示与相关的基于四元数向量表示的三元组之间的距离,计算公式如下,其中k就是3.1中定义的模型维数:
3.2.6、获取该三元组(h,r,t)的关系‑尾实体对上下文,并将关系‑尾实体对上下文放入一个初始化后的ArrayList,命名为arrayList1;实体h是三元组中的头实体,其关系‑尾实体对上下文定义如下:
把知识图谱从有向图的角度理解,rc是头实体h的出边,tc是头实体h通过关系rc所关联到的实体,因此头实体h的关系‑尾实体对上下文的规模就是所有与头实体h有直接关系rc相连的尾实体tc的数量,(rc,tc)是由rc和tc组成的关系‑尾实体对,(h,rc,tc)表示由关系‑尾实体对(rc,tc)和头实体h组成的三元组,头实体h的关系‑尾实体对上下文的规模由|Crt(h)|表示;
3.2.7、计算该三元组(h,r,t)的关系‑尾实体对上下文的规模|Crt(h)|,|Crt(h)|的大小等于arrayList1的大小,即|Crt(h)|=arrayList1.size;
‑
3.2.8、计算所有关系‑尾实体对上下文Crt(h)从尾实体和关系到头实体的映射Rot (tc,rc);
3.2.9、计算头实体h的关系‑尾实体对上下文表示,计算公式如下,其中h是头实体h的四元数向量表示:
3.2.10、计算头实体h的关系‑尾实体对上下文表示与相关的基于四元数向量表示的三元组之间的距离,计算公式如下,其中k就是3.1中定义的模型维数:
3.2.11、计算三元组的基于距离的打分函数,计算公式如下,其中d((h,r),t)是
3.1.4.2的结果,d(h,(r,t))是3.1.4.4的结果,dc((h,r),t)是3.2.5的结果,dc(h,(r,t))是
3.2.10的结果:
6.如权利要求5所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.2.3的计算步骤如下:
3.2.3.1、遍历arrayList,获取第i个头实体‑关系对上下文Chri(t),并得到Chri(t)中的头实体hci和关系rci;
3.2.3.2、将头实体hci、关系rci和尾实体t组成一个新的三元组(hci,rci,t);
3.2.3.3、执行步骤3.1,将三元组(hci,rci,t)输入其中;
+
3.2.3.4、获取三元组(hci,rci,t)执行步骤3.1.4.1的结果Rot(hci,rci);
3.2.3.5、判断arrayList是否遍历完成,若是,执行3.2.4,否则,返回3.2.3.1。
7.如权利要求5所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.2.8的计算步骤如下:
3.2.8.1、遍历arrayList1,获取第j个关系‑尾实体对上下文Crt(h),并得到Crt(h)中的尾实体tcj和关系rcj;
3.2.8.2、将尾实体tcj、关系rcj和头实体h组成一个新的三元组(h,rcj,tcj);
3.2.8.3、执行步骤3.1,将三元组(h,rcj,tcj)输入其中;
‑
3.2.8.4、获取三元组(h,rcj,tcj)执行步骤3.1.4.3的结果Rot(tcj,rcj);
3.2.8.5、判断arrayList1是否遍历完成,若是,执行3.2.9,否则,返回3.2.8.1。
8.如权利要求1或2所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述3.3的过程如下:
3.3.1、推导模型的建模对称/反对称关系模式,假设 和 同时成立,对称关系r将会强制在向量空间中添加以下约束:‑1 ‑1
e2i=ri·e1i·ri ∧e1i=ri·e2i·ri ,i∈{0,1,…,k‑1}‑1 ‑1 ‑1 ‑1
将e2i=ri·e1i·ri 代入e1i=ri·e2i·ri ,则有:e1i=ri·ri·e1i·ri ·ri ,根据公‑1
式(1)四元数乘积的逆计算公式和公式(2)四元数结合律有e1i=(ri·ri)·e1i·(ri·ri) ,进一步可以得出结论:ri·ri=1,i∈{0,1,…,k‑1},即若ri对应的绕轴旋转的旋转角度α为
0或者π时,ri·ri=1,i∈{0,1,…,k‑1},此时关系r是对称关系;
如果 和 成立,则可以得出:向量r中存在ri·ri≠1,i∈{0,
1,…,k‑1},即若向量r中存在ri·ri≠1,i∈{0,1,…,k‑1},则关系r是非对称关系,因此,模型能够编码对称/反对称关系模式;
3.3.2、推导模型的逆关系模式,假设 和 同时成立,即关系r1,r2是一组互为逆的关系,则模型强制要求:‑1 ‑1
e2i=r1i·e1i·r1i ∧e1i=r2i·e2i·r2i ,i∈{0,1,…,k‑1}‑1
根据公式(1)和(2),则有r1i=r2i ,i∈{0,1,…,k‑1},这表明模型完全能够编码逆关‑1
系模式,即若r1i=r2i ,i∈{0,1,…,k‑1},则关系r1是关系r2的逆关系;
3.3.3、推导模型的组合关系模式,三维旋转的特点是两个旋转的组合等价于一个新的旋转,假设 以及 同时成立,即关系r1是关系r2和r3的组合,则得出:
根据公式(1)和(2)推理获得,当r1i=r3i·r2i,i∈{0,1,…,k‑1}成立时,上述等式成立,即若r1i=r3i·r2i,i∈{0,1,…,k‑1},则关系r1等价于关系r2和r3的组合。
9.如权利要求1或2所述的一种引入实体上下文的三维旋转知识图谱嵌入方法,其特征在于,所述第二步的过程如下:
2.1、定义四元数;四元数包括一个实部和三个虚部,一个四元数可以表示为其中q表示这个四元数本身;w是这个四元数的实部,xi+yj+zk是这个四元数的虚部; 都是表示一个具体数值的实数;粗体字母i,j,k表示虚部的虚数单位;表示四元数代数;
2 2 2 0 0 0
其中,虚数单位之间满足哈密尔顿规则:i =j=k=ijk=‑1,i=j=k =1,ij=k,ji=‑k,jk=i,kj=‑i,ki=j以及ik=‑j,如果一个四元数的实部部分为0,即q=xi+yj+zk,那么这个四元数是一个纯四元数,也叫做* *
2.2、定义四元数的共轭;一个四元数q的共轭表示为q,q的计算公式如下所示:*
q=‑xi‑yj‑zk+w
2.3、定义四元数的模长;一个四元数q的模长表示为||q||,如果一个四元数的模长为
1,这个四元数就是单位四元数,||q||的计算公式如下所示:‑1
2.4、定义四元数的逆;一个四元数q的逆表示为q ,如果一个四元数是单位四元数,那‑1 * ‑1
么它的逆四元数等于它的共轭四元数,即q =q,q 的计算公式如下所示:‑1 *
q =q/||q||
2.5、定义四元数的加法;给定任意两个四元数q1=x1i+y1j+z1k+w1和q2=x2i+y2j+z2k+w2,这两个四元数的加法计算公式如下所示:q1+q2=(x1+x2)i+(y1+y2)j+(z1+z2)k+(w1+w2)
2.6、定义四元数的乘法;给定任意两个四元数q1=x1i+y1j+z1k+w1和q2=x2i+y2j+z2k+w2,这两个四元数的乘法计算公式如下所示:q1q2=(x1i+y1j+z1k+w1)(x2i+y2j+z2k+w2) =(w1x2+x1w2+y1z2‑z1y2)i+(w1y2‑x1z2+y1w2+z1x2)j+(w1z2+x1y2‑y1x2+z1w2)k+(w1w2‑x1x2‑y1y2‑z1z2)
其中,这两个四元数乘积的逆的计算公式如下:‑1 ‑1 ‑1
(q1q2) =q2 q1 (1)四元数加法与乘法的定义与复数的加法与乘法的定义完全一致,值得注意的是四元数乘法不满足交换律,但是满足结合律:q1q2q3=(q1q2)q3=q1(q2q3) (2)
2.7、定义基于四元数乘法的三维空间向量旋转;三维空间中的向量与由纯四元数组成的四元数子空间存在一对一的映射关系,一个四元数q′=exi+eyj+ezk+0等价于三维空间中T
的向量e=[ex,ey,ez] ,其中ex,ey,ez表示向量在三维空间的x,y,z方向上的分量值,T表示一个向量的转置,由此三维空间中的向量旋转可以通过四元数进行表示,假定向量e=[ex,T T
ey,ez] 绕着由一个单位向量u=[ux,uy,uz] 表示成的旋转轴旋转,单位向量u满足旋转角度为α,α∈[0,2π),旋转后获得的向量为erot,erot=[erotx,eroty,T
erotz],erotx,eroty,erotz表示旋转后的向量在三维空间的x,y,z方向上的分量值,对应的四元数qrot的计算公式如下:
其中, 是用于辅助计算旋转的单位四元数,q′和qrot分别是向量e和向量erot对应的四元数形式,q′和qrot的表示形式如下:q′=exi+eyj+ezk+0qrot=erotxi+erotyj+erotzk+0。