CyGNet🦢

Learning from History: Modeling Temporal Knowledge Graphs with Sequential Copy-Generation Networks

  1. temporal facts 很多是重复的, 建议学习历史已知facts

  2. copy- generation mechanism
    copy mode: historical vocabulary of entities that form facts only appeared in the past.
    generation mode: the whole entity vocabulary.

    combine the probability

Model Components

对于所有的(s, p)组合,获取在 \(t_k\)时间前的所有历史object vocabulary,\(h^{(s, p)}_{t_1}\), \(h^{(s, p)}_{t_{...}}\), \(h^{(s, p)}_{t_{k-1}}\),
这是一个multi-hot编码。
one-hot: [0, 0, 1], [0, 1, 0], [1, 0, 0], 就是在不同的位置上取1, N维的数组可以表示N个物体。
multi-hot: [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], .... 从1开始取,二进制形式表示下标。 N个物体需要 \(\lceil log_2N \rceil\) 维度的数组。
将1到\(t_{k-1}\)的h加起来,获得H,表示\(t_k\)时间时的 (s, t) 对应的 historical vocabulary。

    文章这里表述应该出了问题,h是应该是N维的one-hot。
    多个h相加, 001 + 001 = 002, 也就是说第三个物体出现了2次,数字越大证明出现次数越多。
    最后得到H是一个N维向量,每一位表示第x个实体出现的次数。
    
    与multi-hot应该没关系

copy mode

训练一个MLP
\(V_q = tanh(M_c[s, p, t_k] + b_c)\)

这里经过了一个tanh,将值激活到[-1, 1],与H到了一个尺度,🤔️
这里[s, p, $t_k$]
self.ent_init_embeds = nn.Parameter(torch.Tensor(i_dim, h_dim))
nn.init.xavier_uniform_(self.ent_init_embeds,
                                gain=nn.init.calculate_gain('relu'))
h_idx = quadrupleList[:, 0]
h = self.ent_init_embeds[h_idx]

嵌入方式很奇特

其中 \(M_c\) 是 3d*N维度,
得到一个N维的 index vector, 目的是增强历史实体。

在这里将之前的 \(H^{(s, p)}_{t_{k-1}}\) 中的0改成一个很小的负数, 目的是削弱非历史实体。这样softmax以后趋近于0
改完后为: \(\dot H^{(s, p)}_{t_{k-1}}\)

\(c_q = V_q + \dot H^{(s, p)}_{t_{k-1}}\)

\(p(c) = softmax(c_q)\)

p(c) 就是copy-mode这边得到的结果

generation mode

训练一个MLP
\(g_q = M_g[s, p, t_k] + b_g\)

\(p(g) = softmax(g_q)\)

model inference

\(p(o|s, p, t) = \alpha p(c) + (1 - \alpha) p(g)\)

loss function

$ L = -\sum_t^T \sum_i^\varepsilon \sum_k^K o_{it} \ln{p(y_{ik}|(s, p, t))} $

t表示的是时间片,可以理解为数据集划分了一下
感觉$\varepsilon$与K都是N啊🤔️,o表示0或者1,应该是这样吧

ablation study

主要是比较了copy-only, generation-only, generation-new, 发现copy mode起到了较大的作用。

new与原来的区别在于数据的重复

posted @ 2024-01-30 15:55  jaskso  阅读(32)  评论(0)    收藏  举报