Neighborhood Contrastive Learning for Novel Class Discovery (CVPR 2021)

news/2024/5/20 5:59:30 标签: 机器学习, 人工智能, 聚类, 深度学习

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=1Clyilogϕ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)=ziuzju/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)(1y^i,j)log(1pi,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=1Cl(ϕil(zl)ϕil(z^l))2+Cu1j=1Cu(ϕ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=1Mueδ(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 topk个相似特征:
ρ 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ρklogeδ(zu,z^u)/τ+m=1Mueδ(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ˉjlMl: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=1Mleδ(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ˉuMl,并计算如下:
ζ = μ ⋅ 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有以下属性:

  1. 它们几乎就是真正的反例;
  2. 对网络来说,很难将它们和查询样本区分开。
    最后,我们将新生成的混合反例添加到查询列表 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


http://www.niftyadmin.cn/n/1675875.html

相关文章

Python 安装 MySQL-python ImportError: No module named 'ConfigParser'

系统: CentOS-6.4-x86_64 Python : Python 3.4.5 和 Python 3.5.2 安装 MySQL-python ,结果出错: ImportError: No module named ConfigParser Command "python setup.py egg_info" failed with error code 1 in…

iphone怎样关闭副屏_iphone负一屏怎么关闭

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。以iphone 6为例,其负一屏是iOS系统桌面本身自带的功能,无法关闭,但可以通过安装第三方桌面来达到这个效果。iPhone6这款设计图出自设计师卡萨巴-纳…

Redis 发布订阅简测

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。发布者可以向多个订阅者发布消息,订阅者也可以向多个发布订阅,发布和订阅之间的通讯是通过通道确定的。 结构如图: 发布订阅有6…

Ajax实现二级(多级)联动——Asp.Net

下拉标签的联动功能在网站开发中很常见,也是网站开发中必备的基本技能。WebForm中仅用DropDownList就可以轻易地实现下拉框的联动功能,但是太局限。MVC的日益强大,传统的WebForm组件就变得不是很实用。所以想要随着时代的脚步前进&#xff0c…

mysql分组后取前几组_MySQL 排名、分组后组内排名、取各组的前几名

转载:https://www.cnblogs.com/niniya/p/9046449.html一、排名/*普通排名:从1开始,顺序往下排*/SELECT cs.*,r :r 1 AS rankFROM cs,(SELECT r : 0) rORDER BY score;/*并列排名:相同的值是相同的排名*/SELECT cs.* ,CASEWHEN ps…

输入行太长。命令语法不正确。classpath_Minecraft命令全教程(1):基本知识

这个系列的文章旨在让即使是新手玩家也能掌握命令,从而将MC用作一种开发工具来编写自己的东西。那么我们首先要知道:命令是什么?Minecraft Wiki中对命令的定义为:命令(Command)是通过输入特定文本字符串而激…

go http header 大小写指定_28. 一文了解Go语言中编码规范

大家好,我是明哥。由于某些不可抗力,之前该专栏的所有内容都被删除了。因此之后的一段时间内,我会重新发布这些文章,先给已经看过的关注者提个醒。本文原文:http://golang.iswbm.comGithub:http://github.c…

Redis 高可用: 主从复制

Centos 6.4 安装 redis 3.2. (安装参考:Redis 源码安装) Centos222 Centos224 [centos222]# redis-cli 127.0.0.1:6379>set kk 123 127.0.0.1:6379>get kk "123" 127.0.0.1:6379>get mm (nil) 127.0.0.1:6379>exit …