单调仿射变换交互

class MonotonicAffineTransformationInteraction(base: Interaction[HeadRepresentation, RelationRepresentation, TailRepresentation], initial_bias: float = 0.0, trainable_bias: bool = True, initial_scale: float = 1.0, trainable_scale: bool = True)[来源]

基础:Interaction[HeadRepresentation, RelationRepresentation, TailRepresentation]

一个交互函数的适配器,它添加了一个可训练的单调仿射变换的分数。

\[score(h, r, t) = \alpha \cdot score'(h, r, t) + \beta\]

此适配器适用于诸如BCE之类的损失函数,其中存在固定的决策阈值,或基于边距的损失函数,其中边距不被视为超参数,而是可训练的参数。这在得分函数的值范围事先未知的情况下特别有用,因此选择合适的边距变得困难。

单调性是保持原始评分函数排序的必要条件,从而确保在转换后更可信的三元组仍然更可信。

例如,我们可以向基于距离的交互函数添加一个偏置,以启用正值:

>>> base = TransEInteraction(p=2)
>>> interaction = MonotonicAffineTransformationInteraction(base=base, trainable_bias=True, trainable_scale=False)

当与BCE损失结合时,我们可以几何地考虑在\(h + r\)处预测一个(软)球体,其半径等于变换的偏差。当我们添加一个可训练的尺度时,模型可以控制决策边界本身的“软度”。

初始化交互。

Parameters:

方法总结

forward(h, r, t)

计算给定头、关系和尾的广播表示的三元组分数。

reset_parameters()

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

方法文档

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

计算给定头、关系和尾的广播表示的三元组得分。

一般来说,每个交互函数(类)对头、关系和尾表示都有一定的格式要求。这种格式由表示的数量和形状组成。

许多简单的交互函数,如TransEInteraction,操作于单一表示上,然而也有像TransDInteraction这样的交互,它需要每个槽的两个表示,或者像PairREInteraction这样的交互,它需要两个关系表示,但分别只需要一个头实体和尾实体的表示。

每个单独的表示都有一个形状。这可以是一个简单的\(d\)维向量,也可以包括矩阵,甚至是高阶张量。

此方法支持通用的批量计算,即每个表示可以有一个前面的批量维度。这些批量维度不一定需要完全相同,但它们需要是可广播的。关于广播规则的良好解释可以在NumPy的文档中找到。

另请参阅

  • Representations 提供了关于如何获取个体表示的不同方式的概述。

Parameters:
Returns:

形状: batch_dims 分数。

Return type:

Tensor

reset_parameters()[source]

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