论文阅读笔记:Improving Generalization via Scalable Neighborhood Component Analysis

论文地址

代码地址

Problem Statement

  • Parametric Softmax适用于带标签的大数据训练,而应用在开放式场景中(有新类别、样本少)是不可取的。
  • Non-Paramertric embedding的各种方法有被用来处理视觉任务,但是并没有取得有竞争力的结果(如在ImageNet、MSCOCO)。

Research Object

  • 通过优化特征embeddings取代parametric classifiers来处理视觉任务。
  • 发掘Non-Parametric methods的泛化能力。

Contributions

  • 改进NCA来处理大规模的数据集和深层的神经网络,使用augmented memory来存储non-parametric embeddings。
  • 证明最近邻分类器可以在ImageNet这种具有挑战性的数据集上取得优秀的表现,媲美parametric methods。
  • 训练出来的features具有良好的泛化能力,可应用于子类别识别和小样本识别。

Methods

论文阅读笔记:Improving Generalization via Scalable Neighborhood Component Analysis
图片到特征的映射:v=fθ(x)v=f_\theta(x)θ\theta来自数据集DDDD^\prime指进行搜索的数据集,有3种情况:

1.D=DD^\prime=D,这样就是closed-set recognition如ImageNet;

2.DD^\prime有标签,但是和DD不同,这样就是open-set recognition如子类别识别和小样本识别;

3.DD^\prime有标签不完整,可用于泛化的基于内容的图像检索。

1.Neighborhood Component Analysis

  • Non-parametric formulation of classification

    sijs_{ij}表示样本iijj的相似程度(viv_ivjv_j经过l2标准化):sij=cos(ϕ)=viTvivj=viTvjs_{ij}=cos(\phi)=\frac {v_i^T}{|v_i||v_j|}=v_i^Tv_j

    xix_i选择xjx_j作为其邻居的概率为:pij=exp(sij/σ)kiexp(sik/σ),pii=0p_{ij}=\frac {exp(s_{ij}/\sigma)}{\sum_{k\neq i}exp(s_{ik}/\sigma)},p_{ii}=0

    Ωi={jyj=yi}\Omega_i=\lbrace j|y_j=y_i \rbrace表示和xix_i具有相同标签的图片的下标集合,那么xix_i被正确识别的概率为pi=jΩipijp_i=\sum_{j\in \Omega_i}p_{ij}

    那么全局目标就是最小化J=1niJi=1nlog(pi)J=\frac {1}{n} \sum_i J_i = - \frac{1}{n}\log(p_i)

    梯度计算:

    Jivi=1σkpikvk1σkΩip~ikvk\frac {\partial J_i}{\partial v_i}=\frac {1}{\sigma} \sum_k p_{ik}v_k -\frac {1}{\sigma} \sum_{k\in \Omega_i}\tilde{p}_{ik} v_k

    Jivj={1σ(pijp~ij)vi,jΩi1σpijvi,jΩi\frac {\partial J_i}{\partial v_j}= \begin{cases} \frac{1}{\sigma}(p_{ij}-\tilde{p}_{ij})v_i, j \in \Omega_i \\ \frac{1}{\sigma}p_{ij}v_i, j\notin\Omega_i \end{cases}

    p~ik=pik/jΩipij\tilde{p}_{ik}=p_{ik}/\sum_{j\in \Omega_i}p_{ij}

  • Differences from parametric softmax

    主要区别还是在于一个是对样本分类,一个是对样本之间的相关性进行计算。

  • Computational challenges for learning

    为了减少计算的复杂度,采取以下两个措施:

    1.只计算Ji/vi{\partial J_i}/{\partial v_i}而不计算Ji/vj{\partial J_i}/{\partial v_j}

    2.只计算Ji/vi{\partial J_i}/{\partial v_i}的开销也比较大,使用augmented memory来存储embeddings。

2.Learning with Augmented Memory

我们将整个数据集的特征表示作为augmented non-parametric memory,

假设当前正开始第t+1t+1次iteration,网络参数为θ(t)\theta^{(t)},Memory为M(t)={v1(t),v2(t),...,vn(t)}M^{(t)}=\lbrace v_1^{(t)},v_2^{(t)},...,v_n^{(t)} \rbrace

因为Memory总是随着迭代而不断变换,可以近似地认为vi(t)fθ(t)(xi),i=1,2,...,nv_i^{(t)}\approx f_{\theta^{(t)}}(x_i),i=1,2,...,n

那么在计算梯度时可以近似为:Jivi=1σkpikvk(t)1σkΩip~ikvk(t)\frac {\partial J_i}{\partial v_i}=\frac {1}{\sigma} \sum_k p_{ik}v_k^{(t)} -\frac {1}{\sigma} \sum_{k\in \Omega_i}\tilde{p}_{ik} v_k^{(t)}

再计算网络参数θ\theta的梯度Jiθ=Jiviviθ\frac {\partial J_i}{\partial \theta}=\frac {\partial J_i}{\partial v_i}\cdot\frac {\partial v_i}{\partial \theta}

另外每次算完viv_i后,对Memory进行如下更新:vi(t+1)mvi(t)+(1m)viv_i^{(t+1)}\leftarrow m\cdot v_i^{(t)}+(1-m)\cdot v_i

Experiment

1.在ImageNet ILSVRC挑战上进行性能度量,ResNet作为基本结构,kNN进行测试准确度;

2.sub-category discovery,只对粗粒度标注进行训练,转移用于细粒度的标签预测;

3.few-shot recognition。

Conclusion

我们提出了一种用于视觉识别的非参数近邻方法。我们学习CNN将图像嵌入到低维特征空间中,其中图像之间的距离度量根据NCA准则保存分类标签的语义结构。我们通过使用外部扩充存储来处理NCA的计算需求,从而使得NCA可扩展用于大数据集和深层神经网络。我们的实验不仅为这种简单的非参数方法提供了对ImageNet分类的显著性能,但最重要的是,对于子类别发现和小样本识别而言,最重要的是更通用的特征表示。在未来,需要重新研究非参数化方法,用于其他视觉识别问题,如检测和分割。

Notes

类的显著性能,但最重要的是,对于子类别发现和小样本识别而言,最重要的是更通用的特征表示。在未来,需要重新研究非参数化方法,用于其他视觉识别问题,如检测和分割。

Notes

相关文章: