DistMult

class DistMult(*, embedding_dim: int = 50, entity_initializer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | None = <function xavier_uniform_>, entity_constrainer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | None = <function normalize>, relation_initializer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | None = <pykeen.utils.compose object>, regularizer: str | ~pykeen.regularizers.Regularizer | type[~pykeen.regularizers.Regularizer] | None = <class 'pykeen.regularizers.LpRegularizer'>, regularizer_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, entity_representations_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, relation_representations_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, **kwargs)[source]

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

DistMult 的实现来自 [yang2014]

在这项工作中,实体和关系都由存储在Embedding矩阵中的\(d\)维向量表示。 实体表示向量进一步被约束为单位\(L_2\)范数。 对于关系表示,则使用向量\(L_2\)范数的(软)正则化项。

然后将表示传递给DistMultInteraction函数以获得分数。

这个DistMult模型可以被看作是RESCAL模型的简化版本, 其中关系矩阵被限制为对角矩阵: 由于其对对角矩阵的限制,DistMult在计算上比 RESCAL更便宜,但同时也表达能力较弱。例如,它无法 建模反对称关系。

另请参阅

初始化DistMult。

Parameters:
  • embedding_dim (int) – 实体嵌入维度 \(d\)。通常为 \(d \in [50, 300]\)

  • entity_initializer (str | Callable[[Tensor], Tensor] | None) – 用于初始化实体嵌入的方法。默认为 Xavier/Glorot 均匀分布,参见 OpenKE

  • entity_constrainer (str | Callable[[Tensor], Tensor] | None) – 实体嵌入的约束器。默认为单位L2范数。

  • relation_initializer (str | Callable[[Tensor], Tensor] | None) – 用于初始化关系嵌入的方法。默认使用Xavier/Glorot均匀分布,然后归一化为单位L2长度。

  • regularizer (str | Regularizer | type[Regularizer] | None) – 关系表示的正则化器

  • regularizer_kwargs (Mapping[str, Any] | None) – 额外的基于关键字的参数。默认为 DistMult.regularizer_default_kwargs 用于默认的正则化器。

  • entity_representations_kwargs (Mapping[str, Any] | None) – 传递给 pykeen.models.ERModelentity_representations_kwargs 的额外参数。 请注意,这些参数优先于此类填充的参数。

  • relation_representations_kwargs (Mapping[str, Any] | None) – 传递给 pykeen.models.ERModelrelation_representations_kwargs 的额外参数。 请注意,这些参数优先于此类填充的参数。

  • kwargs – 剩余的关键字参数将转发到 pykeen.models.ERModel

注意

参数对 (regularizer, regularizer_kwargs) 用于 pykeen.regularizers.regularizer_resolver

解析器的解释及其使用方法在 https://class-resolver.readthedocs.io/en/latest/中给出。

属性摘要

hpo_default

优化模型超参数的默认策略

regularizer_default_kwargs

用于DistMult的[yang2014]的LP设置

属性文档

hpo_default: ClassVar[Mapping[str, Any]] = {'embedding_dim': {'high': 256, 'low': 16, 'q': 16, 'type': <class 'int'>}}

优化模型超参数的默认策略

regularizer_default_kwargs: ClassVar[Mapping[str, Any]] = {'normalize': True, 'p': 2.0, 'weight': 0.1}

用于DistMult的[yang2014]的LP设置