单调仿射变换交互
- 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:
base (Interaction[HeadRepresentation, RelationRepresentation, TailRepresentation]) – 基础交互。
initial_bias (float) – 偏置的初始值。
trainable_bias (bool) – 偏置是否应该是可训练的。
initial_scale (float) – >0 比例的初始值。必须严格为正数。
trainable_scale (bool) – 比例是否应该是可训练的。
方法总结
forward(h, r, t)计算给定头、关系和尾的广播表示的三元组分数。
重置交互函数可能具有的参数。
方法文档
- forward(h: HeadRepresentation, r: RelationRepresentation, t: TailRepresentation) Tensor[来源]
计算给定头、关系和尾的广播表示的三元组得分。
一般来说,每个交互函数(类)对头、关系和尾表示都有一定的格式要求。这种格式由表示的数量和形状组成。
许多简单的交互函数,如
TransEInteraction,操作于单一表示上,然而也有像TransDInteraction这样的交互,它需要每个槽的两个表示,或者像PairREInteraction这样的交互,它需要两个关系表示,但分别只需要一个头实体和尾实体的表示。每个单独的表示都有一个形状。这可以是一个简单的\(d\)维向量,也可以包括矩阵,甚至是高阶张量。
此方法支持通用的批量计算,即每个表示可以有一个前面的批量维度。这些批量维度不一定需要完全相同,但它们需要是可广播的。关于广播规则的良好解释可以在NumPy的文档中找到。
另请参阅
Representations 提供了关于如何获取个体表示的不同方式的概述。
- Parameters:
h (HeadRepresentation) – 形状:
(*batch_dims, *dims)头部表示。r (RelationRepresentation) – 形状:
(*batch_dims, *dims)关系表示。t (TailRepresentation) – 形状:
(*batch_dims, *dims)尾部的表示。
- Returns:
形状: batch_dims 分数。
- Return type: