Home

Awesome

RankSim: Ranking Similarity Regularization for Deep Imbalanced Regression

This repository contains the code for the paper: <br> RankSim: Ranking Similarity Regularization for Deep Imbalanced Regression <br> Yu Gong, Greg Mori, Fred Tung <br> ICML 2022 <br> [arXiv] [Paper] [Poster]<br>

<p align="center"> <img src="figures/teaser.jpg" width="500"> <br> <b>RankSim </b> (ranking similarity) regularizer encodes an inductive bias that samples that are closer in label space should also be closer in feature space. </p>

Quick Preview

<b>RankSim </b> regularizer is straightforward to implement, can be computed in closed form, and complementary to conventional imbalanced learning techniques. It has two hyperparameters --- interpolation strength lambda and balancing weight gamma.

def batchwise_ranking_regularizer(features, targets, interp_strength_lambda):
    loss = 0

    # Reduce ties and boost relative representation of infrequent labels by computing the 
    # regularizer over a subset of the batch in which each label appears at most once
    batch_unique_targets = torch.unique(targets)
    if len(batch_unique_targets) < len(targets):
        sampled_indices = []
        for target in batch_unique_targets:
            sampled_indices.append(random.choice((targets == target).nonzero()[:,0]).item())
        x = features[sampled_indices]
        y = targets[sampled_indices]
    else:
        x = features
        y = targets

    # Compute feature similarities for ranking
    xxt = torch.matmul(F.normalize(x.view(x.size(0),-1)), F.normalize(x.view(x.size(0),-1)).permute(1,0))

    # Compute the loss of ranking similarity
    for i in range(len(y)):

        label_ranks = rank_normalised(-torch.abs(y[i] - y).transpose(0,1))
        feature_ranks = TrueRanker.apply(xxt[i].unsqueeze(dim=0), interp_strength_lambda) # differentiable ranking operation, defined in ranking.py
        loss += F.mse_loss(feature_ranks, label_ranks)

    return loss

Usage

Please go into the sub-folder to run experiments for different datasets.

Citation

If you find RankSim helpful, please cite our work:

@InProceedings{gong2022ranksim,
  title={{R}ank{S}im: Ranking Similarity Regularization for Deep Imbalanced Regression},
  author={Gong, Yu and Mori, Greg and Tung, Frederick},
  booktitle={International Conference on Machine Learning (ICML)},
  year={2022}

Acknowledgment

The code is based on Yang et al., Delving into Deep Imbalanced Regression, ICML 2021.