Decoupling Representation and Classifier for Long-tailed Recognition

文章目录

    • 主要内容
      • Sampling
      • 分类器
    • 代码

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 = n j q ∑ i = 1 C n i q , j = 1 , 2 , ⋯   , C p_j = \frac{n_j^q}{\sum_{i=1}^C n_i^q}, \quad j = 1,2,\cdots, C pj=i=1Cniqnjq,j=1,2,,C
其中 p j p_j pj是采样第 j j j类的概率, n j n_j nj是第 j j j的训练数据的数目, 共有 C C C类.
通过指定不同的 q ∈ [ 0 , 1 ] q \in [0, 1] q[0,1], 有下面的不同采样方式:

  • Instance-balanced sampling: q = 1 q=1 q=1, 就是我们最常使用的, 每一个样本都是等概率被选中的;
  • Class-balanced sampling: q = 0 q=0 q=0, 可以看成先等概率选择采样的类, 再在此类中等概率选择样本;
  • Square-root sampling: q = 1 / 2 q=1/2 q=1/2;
  • Progressively-balanced sampling: 这是一个混合, 在训练的开始阶段, 偏向instance-balanced sampling, 在训练的后期阶段, 偏向class-balanced sampling:
    p j P B ( t ) = ( 1 − t T ) p j I B + t T p j C B . p_j^{PB}(t) = (1 - \frac{t}{T})p_j^{IB} + \frac{t}{T} p_j^{CB}. pjPB(t)=(1Tt)pjIB+TtpjCB.

分类器

分类器作者列举了三种:

  1. Classifier Re-training (cRT). 即固定encoder部分, 随机初始化 W , b W,b W,b, 然后重新训练它们( W T f + b W^Tf + b WTf+b);
  2. Nearest Class Mean classifier (NCM). 首先对每个类计算归一化的均值, 然后看输入的特征和哪个最接近( ℓ 2 \ell_2 2或者cosine 相似度);
  3. τ \tau τ-normalized classifier ( τ \tau τ-normalized):
    w ~ i = w i ∥ w i ∥ τ , \widetilde{w}_i = \frac{w_i}{\|w_i\|^{\tau}}, w i=wiτwi,
    w ~ i \widetilde{w}_i w i替换 w i w_i wi, 其中 τ ∈ ( 0 , 1 ) \tau \in (0, 1) τ(0,1). 因为作者认为 ∥ w i ∥ \|w_i\| wi的大小反应了数据量的大小. τ \tau τ通过交叉验证的方式来选择;
  4. Learnable weight scaling (LWS):
    w ~ i = f i ⋅ w i , f i = 1 ∥ w i ∥ τ , \widetilde{w}_i = f_i \cdot w_i, \quad f_i = \frac{1}{\|w_i\|^{\tau}}, w i=fiwi,fi=wiτ1,
    这里 f i f_i fi是可学习的.

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

代码

原文代码

你可能感兴趣的:(neural,networks)