TransD交互

class TransDInteraction(p: int = 2, power_norm: bool = True)[source]

基础:NormBasedInteraction[tuple[Tensor, Tensor], tuple[Tensor, Tensor], tuple[Tensor, Tensor]]

TransD交互函数。

TransD 是 TransRInteraction 的扩展,与 TransR 类似, 它将实体和关系视为存在于不同向量空间中的对象。 然而,与对所有实体嵌入执行相同的关系特定投影不同, 它构建了实体-关系特定的投影矩阵 \(\mathbf{M}_{r, h}, \mathbf{M}_{t, h} \in \mathbb{R}^{k \times d}\)

为此,所有头实体、尾实体和关系分别由两个向量表示, \(\mathbf{h}_v, \mathbf{h}_p, \mathbf{t}_v, \mathbf{t}_p \in \mathbb{R}^d\)\(\mathbf{r}_v, \mathbf{r}_v \in \mathbb{R}^k\)

第一组表示用于计算实体关系特定的投影矩阵:

\[ \begin{align}\begin{aligned}\mathbf{M}_{r, h} &=& \mathbf{r}_p \mathbf{h}_p^{T} + \tilde{\mathbf{I}}\\\mathbf{M}_{r, t} &=& \mathbf{r}_p \mathbf{t}_p^{T} + \tilde{\mathbf{I}}\end{aligned}\end{align} \]

其中 \(\tilde{\textbf{I}} \in \mathbb{R}^{k \times d}\) 是一个 \(k \times d\) 矩阵,对角线上的元素为1,其余元素为0。接下来,\(\mathbf{h}_v\)\(\mathbf{t}_v\) 通过构建的投影矩阵投影到关系空间中,然后计算类似于 TransEInteraction 的距离:

\[-\|c(\mathbf{M}_{r, h} \mathbf{h}_v) + \mathbf{r}_v - c(\mathbf{M}_{r, t} \mathbf{t}_v)\|_{2}^2\]

其中 \(c\) 强制执行约束 \(\|\cdot\| \leq 1\)

注意

TransD 另外强制 \(\|\mathbf{h}\|, \|\mathbf{r}\|, \|\mathbf{t}\| \leq 1\)

初始化交互模块。

另请参阅

参数 ppower_norm 直接传递给 NormBasedInteraction

Parameters:
  • p (int) – 与 torch.linalg.vector_norm() 一起使用的范数。通常为1或2。

  • power_norm (bool) – 是否使用\(L_p\)范数的p次方。它的优点是在0附近可微分,并且在数值上更稳定。

属性摘要

entity_shape

实体表示的符号形状

relation_shape

关系表示的符号形状

方法总结

forward(h, r, t)

评估交互函数。

属性文档

entity_shape: Sequence[str] = ('d', 'd')

实体表示的符号形状

relation_shape: Sequence[str] = ('e', 'e')

关系表示的符号形状

方法文档

forward(h: tuple[Tensor, Tensor], r: tuple[Tensor, Tensor], t: tuple[Tensor, Tensor]) Tensor[来源]

评估交互函数。

另请参阅

Interaction.forward 提供了关于交互函数通用批处理形式的详细描述。

Parameters:
  • h (tuple[Tensor, Tensor]) – 形状: (*batch_dims, d)(*batch_dims, d) 头部表示。

  • r (tuple[Tensor, Tensor]) – 形状: (*batch_dims, e)(*batch_dims, e) 关系表示。

  • t (tuple[Tensor, Tensor]) – 形状: (*batch_dims, d)(*batch_dims, d) 尾部表示。

Returns:

形状: batch_dims 分数。

Return type:

Tensor