Neighborhood Contrastive Learning for Novel Class Discovery (CVPR 2021)
摘要
在本文中,我们解决了新类发现(NCD)的问题,即给定一个具有已知类的有标签数据集,在一组未标记的样本中揭示新的类。我们利用ncd的特性构建了一个新的框架,称为邻域对比学习(NCL),学习对聚类性能至关重要的判别表示。我们的贡献是双重的。首先,我们发现在标记集上训练的特征提取器会生成表示,其中一个通用查询样本和它的邻居可能共享同一个类。我们利用这一观察结果,通过对比学习来检索和聚集伪正对,从而鼓励模型学习更多有区别的表示。其次,我们注意到大多数实例都很容易被网络识别,对对比损失的贡献较小。为了克服这一问题,我们提出了通过在特征空间中混合带标签和无标签样本来产生困难反例的方法。
Baseline for NCD
在baseline中,我们采用和之前工作相似的三阶段学习流程。第一,通过自监督学习,我们同时在有标签数据集和无标签数据集上学习一个没有标签参与的图像表征模型,这种方式已经被证明可以很好的在网络模型的前几层提取低级特征。
接着,无有标签数据集学习高级特征。给定一个样本和对应的标签 ( x , y ) ∈ D l (x,y) \in D^l (x,y)∈Dl,我们用交叉熵优化该模型:
ℓ c e = − 1 C l ∑ i = 1 C l y i log ϕ i l ( Ω ( x ) ) \ell_{c e}=-\frac{1}{C^{l}} \sum_{i=1}^{C^{l}} y_{i} \log \phi_{i}^{l}(\Omega(x)) ℓce=−Cl1i=1∑Clyilogϕil(Ω(x))
最后,我们简化聚类发现的步骤,不再采用统计排名的方式估计两两伪标签,而是采用特征之间的余弦相似度。我们发现,这种修正方式在我们的方法里可以产生相似结果,但是更加高效以及容易实现。具体来说,给定一对从 D u D^u Du中采样的图像 ( x i u , x j u ) (x^u_i,x^u_j) (xiu,xju),我们提取特征 ( z i u , z j u ) (z^u_i,z^u_j) (ziu,zju)并计算余弦相似度 δ ( z i u , z j u ) = z i u ⊤ z j u / ∥ z i u ∥ ∥ z j u ∥ \delta\left(z_{i}^{u}, z_{j}^{u}\right)=z_{i}^{u \top} z_{j}^{u} /\left\|z_{i}^{u}\right\|\left\|z_{j}^{u}\right\| δ(ziu,zju)=ziu⊤zju/∥ziu∥ zju ,两两伪标签可以通过以下方式分配:
y ^ i , j = 1 [ δ ( z i u , z j u ) ≥ λ ] \hat{y}_{i, j}=\mathbb{1}\left[\delta\left(z_{i}^{u}, z_{j}^{u}\right) \geq \lambda\right] y^i,j=1[δ(ziu,zju)≥λ]
其中 λ \lambda λ是表示两个样本分配到同一潜在类别的最小相似度阈值。接着,两两伪标签与无标签头的输出结果之间的内积比较 p i , j = ϕ u ( z i u ) T ϕ u ( z j u ) p_{i,j}=\phi_u(z^u_i)^T\phi_u(z^u_j) pi,j=ϕu(ziu)Tϕu(zju)。该模型可以用二元交叉熵优化:
ℓ b c e = − y ^ i , j log ( p i , j ) − ( 1 − y ^ i , j ) log ( 1 − p i , j ) \ell_{b c e}=-\hat{y}_{i, j} \log \left(p_{i, j}\right)-\left(1-\hat{y}_{i, j}\right) \log \left(1-p_{i, j}\right) ℓbce=−y^i,jlog(pi,j)−(1−y^i,j)log(1−pi,j)
我们baselin的最后一个构建块是一致性损失,它迫使网络对图像 x i x^i xi及其相关视图 x ^ i \hat{x}^i x^i产生类似的预测。这对于无标签数据尤其重要。尽管如此,我们发现一致性对标注和未标注的样本都有帮助。这一步采用均方误差:
ℓ m s e = 1 C l ∑ i = 1 C l ( ϕ i l ( z l ) − ϕ i l ( z ^ l ) ) 2 + 1 C u ∑ j = 1 C u ( ϕ j u ( z u ) − ϕ j u ( z ^ u ) ) 2 . \begin{aligned}\ell_{m s e}= & \frac{1}{C^{l}} \sum_{i=1}^{C^{l}}\left(\phi_{i}^{l}\left(z^{l}\right)-\phi_{i}^{l}\left(\hat{z}^{l}\right)\right)^{2}+ \\& \frac{1}{C^{u}} \sum_{j=1}^{C^{u}}\left(\phi_{j}^{u}\left(z^{u}\right)-\phi_{j}^{u}\left(\hat{z}^{u}\right)\right)^{2} .\end{aligned} ℓmse=Cl1i=1∑Cl(ϕil(zl)−ϕil(z^l))2+Cu1j=1∑Cu(ϕju(zu)−ϕju(z^u))2.
总体损失表示如下:
ℓ b a s e = ℓ c e + ℓ b c e + ω ( t ) ℓ m s e \ell_{b a s e}=\ell_{c e}+\ell_{b c e}+\omega(t) \ell_{m s e} ℓbase=ℓce+ℓbce+ω(t)ℓmse
邻里对比学习法(Neighborhood Contrastive Learning, NCL)
给定一系列随机图像变换方式,我们保证一个无标签样本的两个相关视图 ( x u , x ^ u ) (x^u,\hat{x}^u) (xu,x^u)被当作正对(positive pair)。接着,我们从视图中用模型提取特征 ( z u , z ^ u ) (z^u,\hat{z}^u) (zu,z^u),在大小为 B B B的批量数据上执行相同的操作。维持一个查询列表 M u M^u Mu存储过往训练过程中的特征,这些特征最初被认为是不是同一类的,用 z ˉ u \bar{z}^u zˉu表示。正对的对比损失写作:
ℓ ( z u , z ^ u ) = − log e δ ( z u , z ^ u ) / τ e δ ( z u , z ^ u ) / τ + ∑ m = 1 ∣ M u ∣ e δ ( z u , z ˉ m u ) / τ \ell_{\left(z^{u}, \hat{z}^{u}\right)}=-\log \frac{e^{\delta\left(z^{u}, \hat{z}^{u}\right) / \tau}}{e^{\delta\left(z^{u}, \hat{z}^{u}\right) / \tau}+\sum_{m=1}^{\left|M^{u}\right|} e^{\delta\left(z^{u}, \bar{z}_{m}^{u}\right) / \tau}} ℓ(zu,z^u)=−logeδ(zu,z^u)/τ+∑m=1∣Mu∣eδ(zu,zˉmu)/τeδ(zu,z^u)/τ
其中 δ ( ⋅ , ⋅ ) \delta(\cdot, \cdot) δ(⋅,⋅)表示余弦相似度, τ \tau τ是控制分布尺度的温度参数。
不幸的是,对比学习一个出名的缺点就是即使样本属于同一类也会被认为是不同类,由于缺少标签的信息。然而,直观地说,如果正对和负对对应于所期望的潜在类,则表示的质量应该是有益的。一个缓解该问题方式就是模型自身生成伪正对的样本,例如,考虑将表征向量 z u z^u zu的邻居作为同一类的样本。选择合理的伪正对是一项艰巨的任务,特别是在训练开始时,当表征的质量较差。然而,在NCD中,我们可以利用标记的数据集 D l D^l Dl来引导表示,然后使用它们来推断 D u D^u Du中无标签数据之间的关系。
准确来说就是,给定baseline中前两个阶段预寻训练的网络 Ω \Omega Ω。我们可以在查询列表中选择和查询向量 z u z^u zu最相近的 t o p − k top-k top−k个相似特征:
ρ k = argtop z ˉ u ( { δ ( z u , z ˉ i u ) ∣ ∀ i ∈ { 1 , … , ∣ M u ∣ } } ) \rho_{k}=\underset{\bar{z}^{u}}{\operatorname{argtop}}\left(\left\{\delta\left(z^{u}, \bar{z}_{i}^{u}\right) \mid \forall i \in\left\{1, \ldots,\left|M^{u}\right|\right\}\right\}\right) ρk=zˉuargtop({δ(zu,zˉiu)∣∀i∈{1,…,∣Mu∣}})
假设 ρ k \rho_{k} ρk中的样本都是假负(实际和 z u z^u zu属于同一类),我们可以将它们视为伪正,并将它们在对比损失中的贡献写如下:
ℓ ( z u , ρ k ) = − 1 k ∑ z ˉ i u ∈ ρ k log e δ ( z u , z ˉ i u ) / τ e δ ( z u , z ^ u ) / τ + ∑ m = 1 ∣ M u ∣ e δ ( z u , z ˉ m u ) / τ \ell_{\left(z^{u}, \rho_{k}\right)}=-\frac{1}{k} \sum_{\bar{z}_{i}^{u} \in \rho_{k}} \log \frac{e^{\delta\left(z^{u}, \bar{z}_{i}^{u}\right) / \tau}}{e^{\delta\left(z^{u}, \hat{z}^{u}\right) / \tau}+\sum_{m=1}^{\left|M^{u}\right|} e^{\delta\left(z^{u}, \bar{z}_{m}^{u}\right) / \tau}} ℓ(zu,ρk)=−k1zˉiu∈ρk∑logeδ(zu,z^u)/τ+∑m=1∣Mu∣eδ(zu,zˉmu)/τeδ(zu,zˉiu)/τ
最后,总体损失写作:
ℓ n c l = α ℓ ( z u , z ^ u ) + ( 1 − α ) ℓ ( z u , ρ k ) \ell_{n c l}=\alpha \ell_{\left(z^{u}, \hat{z}^{u}\right)}+(1-\alpha) \ell_{\left(z^{u}, \rho_{k}\right)} ℓncl=αℓ(zu,z^u)+(1−α)ℓ(zu,ρk)
其中, α \alpha α控制两个部分的权重。
有监督对比学习
在有标签数据 D l D^l Dl中,我们不需要用网络去挖掘为伪正样本,对于一个样本 x i l x^l_i xil对应特征 z i l z^l_i zil,我们可以直接用真实标签检索查询列表 M l M^l Ml取出正例特征:
ρ = { z ˉ j l ∈ M l : y i = y j } ∪ z ^ i l \rho=\left\{\bar{z}_{j}^{l} \in M^{l}: y_{i}=y_{j}\right\} \cup \hat{z}_{i}^{l} ρ={zˉjl∈Ml:yi=yj}∪z^il
注意, ρ \rho ρ包含相关视图 x ^ i L \hat{x}^L_i x^iL的 z ^ i L \hat{z}^L_i z^iL和属于同一类的其他样本的特征。利用这种监督方法,可以将邻域对比损失简化为监督对比损失:
ℓ s c l = − 1 ∣ ρ ∣ ∑ z j l ∈ ρ log e δ ( z i l , z ˉ j l ) / τ e δ ( z i l , z ^ i l ) / τ + ∑ m = 1 ∣ M l ∣ e δ ( z i l , z ˉ m l ) / τ \ell_{s c l}=-\frac{1}{|\rho|} \sum_{z_{j}^{l} \in \rho} \log \frac{e^{\delta\left(z_{i}^{l}, \bar{z}_{j}^{l}\right) / \tau}}{e^{\delta\left(z_{i}^{l}, \hat{z}_{i}^{l}\right) / \tau}+\sum_{m=1}^{\left|M^{l}\right|} e^{\delta\left(z_{i}^{l}, \bar{z}_{m}^{l}\right) / \tau}} ℓscl=−∣ρ∣1zjl∈ρ∑logeδ(zil,z^il)/τ+∑m=1∣Ml∣eδ(zil,zˉml)/τeδ(zil,zˉjl)/τ
Hard Negative Genration
He等人证明了拥有一个极大内存覆盖大量负面样本对对比学习的重要性。最近有研究发现,负面样本和查询样本之间有极低的相似度。我们用实验证明了该现象在出现在我们将对比学习应用在NCD领域中时。我们发现从查询列表中移除最近的消极样本并不会影响性能,这表示这样的消极样本在训练过程中贡献极少。但是并不是我们想要的,这样会浪费内存和计算量。另一方面,自动选择困难的负面样本非常困难,因为我们并没有无标签数据中潜在类别的信息。因此我们可以选择积极样本。然而,在NCD中,我们假设有标签数据和无标签数据中的类别集合是不相交的。这要求一个集合的所有样本对另一个集合的样本是消极的的,反之亦然。受到使用图像/特征混合的正则化技术的进步的启发,我们使用这个概念,通过混合有标签和无标签的样本来生成困难的消极样本。
给定图像的一个视角 x u x^u xu属于无标签数据集,它在特征空间的表征是 z u z^u zu,,我们可以选择简单的负面样本通过查看队列中相似性最小的特征:
ε k = argtop z ˉ i u ( { − δ ( z u , z ˉ i u ) ∣ ∀ i ∈ { 1 , … , ∣ M u ∣ } } ) \varepsilon_{k}=\underset{\bar{z}_{i}^{u}}{\operatorname{argtop}}\left(\left\{-\delta\left(z^{u}, \bar{z}_{i}^{u}\right) \mid \forall i \in\left\{1, \ldots,\left|M^{u}\right|\right\}\right\}\right) εk=zˉiuargtop({−δ(zu,zˉiu)∣∀i∈{1,…,∣Mu∣}})
注意相似性的负号。由于网络可以自信地从查询中区分这些样本,我们可以安全地假设它们很可能是真正的负面样本,即它们与查询不属于同一类。请注意,这与最近关于挖掘困难的负面样本的文献形成了对比,后者对困难的负面样本进行采样,从而引发了假的负面样本的问题。
让我们也考虑一个查询队列 M l M^l Ml,它包含从过去的训练步骤中存储的有标签样本。如上所述,根据定义,这些是关于 x u x^u xu的真的负面样本。我们的想法是,通过线性插值这两个集合的样本,我们可以产生新的,更有希望有信息的负面样本。在实践中,对于每个 z ˉ u ∈ ε k \bar{z}^{u} \in \varepsilon_{k} zˉu∈εk,我们随机抽样一个特征 z ˉ u ∈ M l \bar{z}^{u} \in M^l zˉu∈Ml,并计算如下:
ζ = μ ⋅ z ˉ u + ( 1 − μ ) ⋅ z ˉ l \zeta=\mu \cdot \bar{z}^{u}+(1-\mu) \cdot \bar{z}^{l} ζ=μ⋅zˉu+(1−μ)⋅zˉl
其中, μ \mu μ是混合因子。通过遍历 ε k \varepsilon_{k} εk重复操作 N N N次,这样得到的混合消极样本 η \eta η包含 k × N k \times N k×N特征。接着,最苦难的负面样本用余弦相似度从 η \eta η中筛选出来:
η k = argtop ζ i ( { δ ( z u , ζ i ) ∣ ∀ i ∈ { 1 , … , k × N } } ) \eta_{k}=\underset{\zeta_{i}}{\operatorname{argtop}}\left(\left\{\delta\left(z^{u}, \zeta_{i}\right) \mid \forall i \in\{1, \ldots, k \times N\}\right\}\right) ηk=ζiargtop({δ(zu,ζi)∣∀i∈{1,…,k×N}})
困难的负面样本集合 η k \eta_{k} ηk有以下属性:
- 它们几乎就是真正的反例;
- 对网络来说,很难将它们和查询样本区分开。
最后,我们将新生成的混合反例添加到查询列表 M u M^u Mu:
M u ′ = M u ∪ η k M^{u^{\prime}}=M^{u} \cup \eta_{k} Mu′=Mu∪ηk
然后将上述计算损失值的函数中的 M u M^{u} Mu替换成 M u ′ M^{u^{\prime}} Mu′。
总体损失
考虑基线模型、无标签数据的邻域对比学习、有标签数据的监督对比学习、无标签数据的困难反例生成,我们模型的总体损失为:
ℓ a l l = ℓ b a s e + ℓ n c l + ℓ s c l \ell_{a l l}=\ell_{b a s e}+\ell_{n c l}+\ell_{s c l} ℓall=ℓbase+ℓncl+ℓscl