ConvKB交互

class ConvKBInteraction(hidden_dropout_rate: float = 0.0, embedding_dim: int = 200, num_filters: int = 400)[源代码]

基础类: Interaction[Tensor, Tensor, Tensor]

有状态的ConvKB交互函数。

ConvKB 使用卷积神经网络(CNN),其特征图捕捉输入的全局交互。

对于给定的头实体、关系和尾实体的输入表示,分别表示为 \(\mathbf{h}, \mathbf{r}, \mathbf{t} \in \mathbb{R}^d\),首先将它们组合成一个矩阵 \(\mathbf{A} = [\mathbf{h}; \mathbf{r}; \mathbf{t}] \in \mathbb{R}^{d \times 3}\)

在卷积层中,一组卷积滤波器 \(\omega_i \in \mathbb{R}^{1 \times 3}\), \(i=1, \dots, \tau,\) 被应用于输入,以计算嵌入三元组的每个维度的全局交互。每个 \(\omega_i\) 被应用于 \(\mathbf{A}\) 的每一行,创建一个特征图 \(\mathbf{v}_i = [v_{i,1},...,v_{i,d}] \in \mathbb{R}^d\):

\[\mathbf{v}_i = g(\omega_j \mathbf{A} + \mathbf{b})\]

其中 \(\mathbf{b} \in \mathbb{R}\) 表示偏置项,\(g\) 是一个逐元素应用的激活函数。 基于生成的特征图 \(\mathbf{v}_1, \dots, \mathbf{v}_{\tau}\),三元组的合理性评分由以下公式给出:

\[f(h,r,t) = [\mathbf{v}_i; \ldots ;\mathbf{v}_\tau] \cdot \mathbf{w}\]

其中 \([\mathbf{v}_i; \ldots ;\mathbf{v}_\tau] \in \mathbb{R}^{\tau d \times 1}\)\(\mathbf{w} \in \mathbb{R}^{\tau d \times 1}\) 是一个共享的权重向量。

ConvKB 可以被视为 ERMLPInteraction 的一种限制,它在第一层中具有特定的权重共享模式。

初始化交互模块。

Parameters:
  • hidden_dropout_rate (float) – 应用于隐藏层的dropout率

  • embedding_dim (int) – 实体和关系的嵌入维度

  • num_filters (int) – 卷积的滤波器数量(=输出通道数)

方法总结

forward(h, r, t)

评估交互函数。

reset_parameters()

重置交互函数可能具有的参数。

方法文档

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

评估交互函数。

另请参阅

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

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

  • r (Tensor) – 形状: (*batch_dims, d) 关系表示。

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

Returns:

形状: batch_dims 分数。

Return type:

Tensor

reset_parameters()[来源]

重置交互函数可能具有的参数。