Decoupling Representation and Classifier for Long-tailed Recognition

Kang B., Xie S., Rohrbach M., Yan Z., Gordo A., Feng J. and Kalantidis Y. Decoupling representation and classifier for long-tailed recognition. In International Conference on Learning Representations (ICLR), 2014.

本文通过拆解特征学习和分类器训练得出, Instance-sampling能学习到足够好的特征, 我们只需对分类器进行一些处理, 就能得到更好的处理结果.

主要内容

Sampling

针对长短尾的数据, 我们常用重采样的方式来应对, 一般的采样方式可以表述为如下的形式:

[p_j = frac{n_j^q}{sum_{i=1}^C n_i^q}, quad j = 1,2,cdots, C ]

其中(p_j)是采样第(j)类的概率, (n_j)是第(j)的训练数据的数目, 共有(C)类.
通过指定不同的(q in [0, 1]), 有下面的不同采样方式:

  • Instance-balanced sampling: (q=1), 就是我们最常使用的, 每一个样本都是等概率被选中的;
  • Class-balanced sampling: (q=0), 可以看成先等概率选择采样的类, 再在此类中等概率选择样本;
  • Square-root sampling: (q=1/2);
  • Progressively-balanced sampling: 这是一个混合, 在训练的开始阶段, 偏向instance-balanced sampling, 在训练的后期阶段, 偏向class-balanced sampling:

[p_j^{PB}(t) = (1 - frac{t}{T})p_j^{IB} + frac{t}{T} p_j^{CB}. ]

分类器

分类器作者列举了三种:

  1. Classifier Re-training (cRT). 即固定encoder部分, 随机初始化(W,b), 然后重新训练它们((W^Tf + b));
  2. Nearest Class Mean classifier (NCM). 首先对每个类计算归一化的均值, 然后看输入的特征和哪个最接近((ell_2)或者cosine 相似度);
  3. ( au)-normalized classifier (( au)-normalized):

[widetilde{w}_i = frac{w_i}{|w_i|^{ au}}, ]

(widetilde{w}_i)替换(w_i), 其中( au in (0, 1)). 因为作者认为(|w_i|)的大小反应了数据量的大小. ( au)通过交叉验证的方式来选择;
4. Learnable weight scaling (LWS):

[widetilde{w}_i = f_i cdot w_i, quad f_i = frac{1}{|w_i|^{ au}}, ]

这里(f_i)是可学习的.

注: 这些分类器训练的时候, 也是可以应用re-balance方法的.
注: 按照作者的说明, 看来作者训练encoder的方式就是单纯联合训练, 我以为使用自监督方法.

代码

原文代码

原文地址:https://www.cnblogs.com/MTandHJ/p/14465603.html