对抗损失

class AdversarialLoss(inverse_softmax_temperature: float = 1.0, reduction: str = 'mean')[source]

基础:SetwiseLoss

一种带有对抗性负样本加权的损失。

初始化对抗损失。

Parameters:
  • inverse_softmax_temperature (float) – softmax温度的倒数

  • reduction (str) – 缩减操作的名称,参见 Loss.__init__()

方法总结

forward(pos_scores, neg_scores, neg_weights)

计算给定分数的损失。

negative_loss_term_unreduced(neg_scores[, ...])

计算负分数的损失不进行缩减。

positive_loss_term(pos_scores[, ...])

计算正分数的损失。

process_lcwa_scores(predictions, labels[, ...])

处理来自LCWA训练循环的分数。

process_slcwa_scores(positive_scores, ...[, ...])

处理来自sLCWA训练循环的分数。

方法文档

forward(pos_scores: Tensor, neg_scores: Tensor, neg_weights: Tensor, label_smoothing: float | None = None, num_entities: int | None = None) Tensor[来源]

计算给定分数的损失。

Parameters:
  • pos_scores (Tensor) – 形状: s_p 一个正分数的张量

  • neg_scores (Tensor) – 形状: s_n 一个负分数的张量

  • neg_weights (Tensor) – 形状: s_n 负分数的对抗权重

  • label_smoothing (float | None) – 一个可选的标签平滑参数。

  • num_entities (int | None) – 实体数量(用于标签平滑的必需参数)。

Returns:

一个标量损失值

Return type:

Tensor

abstract negative_loss_term_unreduced(neg_scores: Tensor, label_smoothing: float | None = None, num_entities: int | None = None) Tensor[source]

计算负分数的损失不进行缩减。

Parameters:
  • neg_scores (Tensor) – 任意形状 负分数

  • label_smoothing (float | None) – 标签平滑参数

  • num_entities (int | None) – 实体数量(用于标签平滑的必需参数)

Returns:

标量 负分数的未减少损失项

Return type:

Tensor

abstract positive_loss_term(pos_scores: Tensor, label_smoothing: float | None = None, num_entities: int | None = None) Tensor[来源]

计算正分数的损失。

Parameters:
  • pos_scores (Tensor) – 任意形状 正分数

  • label_smoothing (float | None) – 标签平滑参数

  • num_entities (int | None) – 实体数量(用于标签平滑的必需参数)

Returns:

标量 正分数的减少损失项

Return type:

Tensor

process_lcwa_scores(predictions: Tensor, labels: Tensor, label_smoothing: float | None = None, num_entities: int | None = None) Tensor[source]

处理来自LCWA训练循环的分数。

Parameters:
  • predictions (Tensor) – 形状: (batch_size, num_entities) 分数。

  • labels (Tensor) – 形状: (batch_size, num_entities) 标签。

  • label_smoothing (float | None) – 一个可选的标签平滑参数。

  • num_entities (int | None) – 实体数量(用于标签平滑的必需参数)。

Returns:

一个标量损失值。

Return type:

Tensor

process_slcwa_scores(positive_scores: Tensor, negative_scores: Tensor, label_smoothing: float | None = None, batch_filter: Tensor | None = None, num_entities: int | None = None) Tensor[来源]

处理来自sLCWA训练循环的分数。

Parameters:
  • positive_scores (Tensor) – 形状: (batch_size, 1) 正三元组的分数。

  • negative_scores (Tensor) – 形状: (batch_size, num_neg_per_pos) 或 (num_unfiltered_negatives,) 负三元组的分数,可以是密集的2D形状,或者如果它们已经被过滤,可以是稀疏形状。如果它们以稀疏形状给出,还需要提供batch_filter。

  • label_smoothing (float | None) – 一个可选的标签平滑参数。

  • batch_filter (Tensor | None) – 形状: (batch_size, num_neg_per_pos) 一个可选的负分数过滤器,用于保留哪些负分数。仅在负分数已被预过滤时提供。

  • num_entities (int | None) – 实体的数量。仅在启用标签平滑时需要。

Returns:

一个标量损失项。

Return type:

Tensor