TransE(参考http://blog.csdn.net/u011274209/article/details/50991385/)的直观含义,就是TransE基于实体和关系的分布式向量表示,将每个三元组实例(head,relation,tail)中的关系relation看做从实体head到实体tail的翻译(其实我一直很纳闷为什么叫做translating,其实就是向量相加),通过不断调整h、r和t(head、relation和tail的向量),使(h + r) 尽可能与 t 相等,即 h + r = t。
在公式(1)里E成为能量函数,可以认为是transE的损失函数。
带有自信感知的KRL能量函数。每一个三元组(h,r,t)都不仅对应一个E(公式1),还对应一个置信度C(h,r,t)。E越小说明三元组被拟合得好,C越大说明三元组越可靠,需要重点考虑。[所以,就有疑问了,为什么不直接把E的大小来表示置信度呢?]
L是训练的目标函数,形式上为一个支持间隔的值函数。E(h; r; t)表示的是正样本的不相似程度。而E(h’; r’; t’)是负样本的不相似程度。非负数伽马是间隔宽度的超参数。T是正样本的集合,T’是负样本的集合。 C就是置信咯。
那么负样本是怎么来的呢?(4)表示了负样本的产生过程。说白了就是把(h, r, t)中的任何一个给随机替换了。不同于TransE,这里不仅要替换实体,还会替换关系。最后还要把T'中跟T重合的元素给去掉。[直接在公式里体现不就完了?你这样写公式不就不对了?]
公式(5)是为了更好地理解局部三元组置信度(LT)而引入的一个公式,因此,我们要先了解一下LT是怎么定义的。
LT其实就是只针对一个三元组本身去考察我们对它的置信度。就比如,莎士比亚,写了,哈姆雷特这本儿书。莎士比亚对应的向量是a,写了对应的向量是b,哈姆雷特对应的向量是c。那么我们根据transE的假设(而且由于transE的结果也很棒,所以我们更应该相信这种假设),a+b跟c越接近,我们对这个三元组的信心不就越高吗?这种只关心这个三元组本身的置信度猜测就是局部置信度。可以看到对于传统的Trans方法,也就是公式(3)不乘那个C,公式(5)实际上就是它的优化目标,或者说损失函数。我们在公式(3)的时候,也说到,(5)其实可以作为一种置信度的度量的,现在文章把(5)列出来,就是要说明这个道理。但最后又不是直接把(5)作为置信,因为那样显得多此一举。所以采用了一种更加机智的迭代算法,来计算LT。
(6)就是LT的迭代算法。首先,我们给每一组的三元组都都赋予一个LT,并且全部初始化为1,然后在训练的过程中,我们会根据公式(5)对Q进行计算,而且Q也一直是不断变化的,我们也不断地根据公式(6),通过计算Q,来不断地更新LT。α和β都是超参数,α在0到1之间,β>0。这样的一种设计可以保障:当Q<=0时,说明我们对这个三元组没有信心,LT置信度要相应地衰减。而当Q>0时,则暗示了我们需要对这个三元组更加有信心。因此就想办法让它变大。我们设定LT的范围为(0,1]。之所以让LT以几何速率衰减,而却按常数增加是因为我们觉得应该狠狠地去惩罚那些拟合不好的三元组,因为它们很可能是噪声,或者冲突。
这个时候我们不得不了解一下图2啦,刚才讲的一大堆,那就是图2的a咯,现在我们要到图2的b。
如果我们只通过局部的置信还是有问题的,首先就是全局的信息就用不到了,其次呢,当噪声比较多时,效果会很差。(虽然变了一种形式,但不可否认LT就是强化了一下TransE假设而已,跟只用TransE假设相比,估计也好不到哪儿去)
在图2(b)中,有两条多级的关系,从莎士比亚链接到哈姆雷特(除了write这个一级关系之外)。但是下面的A→creator→characters in→B,比起上面的A→born in→language→written language→B更能暗示出write这一层关系。
这里做一个假设。但一个三元组满足下面所说的两个条件时,它会有更高的置信度:
1.有更多的多级路径链接了它们
2.这些路径在语义上更加接近三元组所陈述的关系
PCRA算法:想象h哪里有很多的资源,然后他们会傻乎乎地顺着整个网络流。流完了,就可以从t那里做个统计。如果从h到t的路径p分到的流量越多,那么p就越重要。
公式7就是根据上诉仿真过程构建的资源分配函数。Rp(e)就是e分配到的资源。这很明显是个迭代算法。e’表示所有的经过ri直接到e的元素。用人话解释一下公式7,就是,把所有能到e的元素找到,然后因为之前已经计算过他们的R了,那么这个R就做分母。分子的话,就是说e'除了能到e,还能到别的吗?能到几个呢?(包括e),这个数量就作为分子。然后对外面一个西格玛把大家都加起来。
这样,就像摸石头过河一样,一层一层地瞎往前走,最后终于走到了t,这是就可以就三处Rp(t)了。
反过来,我们把s和t固定下来,p作为变量,即在不同的p下,都可以计算一个Rp(t)。我们重新用R(h,p,t)表示Rp(t),也就是从h经过p到t分配的资源。
公式(8)衡量了r(图2中的write)和某个p(A→creator→characters in→B或A→born in→language→written language→B)的语义相似度,西格玛是个超参数。P(r,p)表示的是r和p一起出现的次数(频率代替概率,怎么理解简单怎么来),P(p)是p出现的所有次数。
先验路径置信度等于语义相似度乘以分配的资源然后再Σ求和,不难理解。
QAP就是简单的把关系v的向量和p对应的向量做个减法。两者差距越小,自然语义越相似。因此我们希望Q越来越小。也容易理解。
所以Q被放到分子上,然后大家Σ求和一下。这就是AP的值啦。
总的C就是把LT,PP,AP三个东西按不同的权重相加。然后C带到目标函数里,应该就可以编程了。
十二个公式,终于全搞懂了。