ProjE初步心得
ProjE
ProjE是KGC中实体嵌入的一种尝试。它和TransE的主要区别如下:
1、TransE是直接将训练的实体/关系向量进行相加运算,是在同一个空间里面。而ProjE则是将训练的实体/关系向量先分别投影到新的各自空间,然后进行相加运算在加上一个新的偏移组合向量。即
De和Dr都是kk的对角矩阵来保证空间的正定,矩阵左乘可以投影到新空间,此时的e/r都是列向量,bc也是k维列向量,这些参数都是要训练得到的。
2、ProjE的损失函数不同,损失函数如下
h()函数是对所有候选实体是否是目标实体进行评分,越大表示越符合。
tanh函数和sigmoid函数公式和图像:
h()中为何使用这两个函数涉及到神经网络,tanh使用于隐含层,sigmoid适用于表现出将概率分布在(0,1)之间。由于log(sigmoid())<0,而且是递增的,我们想最小损失函数(越符合条件的,损失越小)所以前面加负号。yi=1表示的是这部分计算的是正实例。后面则是计算的是对负实例进行Ej~py采样后的权重(越不符合越好)。
后面的ProjE变形先不讨论,要解决的疑惑有 为何要多投影这一步,直接训练训练不出来吗。即训练后实体的参数e=Dee。还有新加入某些实体是否要重新进行训练。一对多,多对1问题没有解决。还有这个损失函数为什么TransE的要好。