gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils#
Functions#
|
Computes the average positive and negative scores from scores and labels. |
|
Computes Bayesian Personalized Ranking (BPR) loss. |
|
Computes HitRate@K using pure tensor operations. |
|
Computes InfoNCE contrastive loss. |
|
Computes Mean Reciprocal Rank (MRR) using pure tensor operations. |
Module Contents#
- gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils.average_pos_neg_scores(scores, labels)[source]#
Computes the average positive and negative scores from scores and labels.
- Parameters:
scores (torch.Tensor) – Score tensor.
labels (torch.Tensor) – Label tensor of corresponding shape. 1s indicate positive, 0s indicate negative.
- Returns:
(avg_pos_score, avg_neg_score). These are scalars, and the tensors are detached from the computation graph since we don’t want to backprop.
- Return type:
tuple[torch.Tensor, torch.Tensor]
- gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils.bpr_loss(scores, labels)[source]#
Computes Bayesian Personalized Ranking (BPR) loss.
For each positive score s⁺ and its negatives s⁻₁, …, s⁻_K, we compute:
$$ mathcal{L}_text{BPR} = - frac{1}{BK} sum_{i=1}^B sum_{j=1}^K log sigma(s_i^+ - s_{ij}^-) $$
- Parameters:
scores (torch.Tensor) – Score tensor of shape [B, 1 + K], where B is the batch size and K is the number of negatives. 1st column contains positive scores, and the rest are negative scores.
labels (torch.Tensor) – Label tensor of shape [B, 1 + K], where 1 indicates positive and 0 indicates negative. 1st column contains positive labels, and the rest are negative labels.
- Returns:
Scalar BPR loss
- Return type:
torch.Tensor
- gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils.hit_rate_at_k(scores, labels, ks)[source]#
Computes HitRate@K using pure tensor operations.
- HitRate@K is defined as:
- [
ext{HitRate@K} =
- rac{1}{N} sum_{i=1}^N mathbb{1}{ ext{positive in top-K} }
]
- Args:
- scores: Score tensor of shape [B, 1 + K], where B is the batch size and K is the number of negatives.
1st column contains positive scores, and the rest are negative scores.
- labels: Label tensor of shape [B, 1 + K], where 1 indicates positive and 0 indicates negative.
1st column contains positive labels, and the rest are negative labels.
- ks: An integer or list of integers indicating K values. Maximum K should be less than or equal
to the number of negatives + 1.
- Returns:
A tensor (if one K) or dict of tensors (if multiple Ks), each giving HitRate@K.
- Parameters:
scores (torch.Tensor)
labels (torch.Tensor)
ks (Union[int, list[int]])
- Return type:
torch.Tensor
- gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils.infonce_loss(scores, labels, temperature=1.0)[source]#
Computes InfoNCE contrastive loss.
We treat each group of (1 positive + K negatives) as a (1 + K)-way classification:
$$ mathcal{L}_text{InfoNCE} = - frac{1}{B} sum_{i=1}^B log
- rac{exp(s_i^+ / tau)}{sum_{j=0}^{K} exp(s_{ij} / tau)}
$$
- Args:
- scores: Score tensor of shape [B, 1 + K], where B is the batch size and K is the number of negatives.
1st column contains positive scores, and the rest are negative scores.
- labels: Label tensor of shape [B, 1 + K], where 1 indicates positive and 0 indicates negative.
1st column contains positive labels, and the rest are negative labels.
num_negatives: K, number of negatives per positive
- Returns:
Scalar InfoNCE loss
- Parameters:
scores (torch.Tensor)
labels (torch.Tensor)
temperature (float)
- Return type:
torch.Tensor
- gigl.experimental.knowledge_graph_embedding.lib.model.loss_utils.mean_reciprocal_rank(scores, labels)[source]#
Computes Mean Reciprocal Rank (MRR) using pure tensor operations.
- MRR is defined as:
- [
ext{MRR} =
rac{1}{N} sum_{i=1}^N rac{1}{ ext{rank}_i}
] where rank_i is the 1-based index of the positive in the sorted list.
- Args:
- scores: Score tensor of shape [B, 1 + K], where B is the batch size and K is the number of negatives.
1st column contains positive scores, and the rest are negative scores.
- labels: Label tensor of shape [B, 1 + K], where 1 indicates positive and 0 indicates negative.
1st column contains positive labels, and the rest are negative labels.
- Returns:
Scalar tensor with MRR.
- Parameters:
scores (torch.Tensor)
labels (torch.Tensor)
- Return type:
torch.Tensor