class SoftMarginRankingLoss(margin=1.0, reduction='mean')[source]

Bases: pykeen.losses.MarginPairwiseLoss

A module for the soft pairwise hinge loss (i.e., soft margin ranking loss).

\[L(k, \bar{k}) = \log(1 + \exp(f(k) - f(\bar{k}) + \lambda))\]

Where \(k\) are the positive triples, \(\bar{k}\) are the negative triples, \(f\) is the interaction function (e.g., pykeen.models.TransE has \(f(h,r,t)=\mathbf{e}_h+\mathbf{r}_r-\mathbf{e}_t\)), \(g(x)=\log(1 + \exp(x))\) is the softmax activation function, and \(\lambda\) is the margin.

See also

When choosing margin=0`, this loss becomes equivalent to pykeen.losses.SoftMarginRankingLoss. It is also closely related to pykeen.losses.MarginRankingLoss, only differing in that this loss uses the softmax activation and pykeen.losses.MarginRankingLoss uses the ReLU activation.

Initialize the loss.

  • margin (float) – the margin, cf. MarginPairwiseLoss.__init__()

  • reduction (str) – the reduction, cf. MarginPairwiseLoss.__init__()

Attributes Summary


The default strategy for optimizing the loss's hyper-parameters

Attributes Documentation

hpo_default: ClassVar[Mapping[str, Any]] = {'margin': {'high': 3, 'low': 0, 'type': <class 'float'>}}

The default strategy for optimizing the loss’s hyper-parameters