三元组中的自注意力机制&多头自注意力机制

自注意力机制

《三元组中的自注意力机制&多头自注意力机制》

以上是自注意力机制的基本原理。在知识图谱的三元组中

可以将图中的(i,j,k)当作一组三元组的初始embedding(头,尾,关系)

那么对三元组的初始表示则是使用一个线性变矩阵《三元组中的自注意力机制&多头自注意力机制》=《三元组中的自注意力机制&多头自注意力机制》*(i,j,k)。

然后对《三元组中的自注意力机制&多头自注意力机制》经过一个非线性层获得《三元组中的自注意力机制&多头自注意力机制》,计算出的每个《三元组中的自注意力机制&多头自注意力机制》并不是在(0~1)之间的,所以还需要对输入的所有《三元组中的自注意力机制&多头自注意力机制》通过softmax计算

                                    《三元组中的自注意力机制&多头自注意力机制》

 计算出的《三元组中的自注意力机制&多头自注意力机制》就是每个三元组在这一组输入中的注意力值,也可以当作每个三元组的权重。

如何生成头节点的最终embedding(输出)

例如对于实体e1的所有邻居,则是将e1为头节点的所有三元组作为输入。

e1_emb的表示为《三元组中的自注意力机制&多头自注意力机制》《三元组中的自注意力机制&多头自注意力机制》《三元组中的自注意力机制&多头自注意力机制》*《三元组中的自注意力机制&多头自注意力机制》)(所有以e1为头节点),其中《三元组中的自注意力机制&多头自注意力机制》为一个非线性变换函数 

多头自注意力机制

多头的实际执行就是执行多次注意力机制(每次的参数是不同),每一次注意力机制都会生成一个对应的《三元组中的自注意力机制&多头自注意力机制》,这些《三元组中的自注意力机制&多头自注意力机制》也是独立的互不干扰的,最后对每个头生成的注意力值《三元组中的自注意力机制&多头自注意力机制》取平均则可得到这个三元组对应的注意力值。也就是权重。

输出

多头注意力机制的输出与上面的区别就在于最后要对多头取平均。

即 ei_emb=《三元组中的自注意力机制&多头自注意力机制》《三元组中的自注意力机制&多头自注意力机制》《三元组中的自注意力机制&多头自注意力机制》《三元组中的自注意力机制&多头自注意力机制》*《三元组中的自注意力机制&多头自注意力机制》

    原文作者:码农_Xiao
    原文地址: https://blog.csdn.net/TUtou_XiaoGe/article/details/123371760
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞