Neighborhood Contrastive Learning for Novel Class Discovery (CVPR 2021)

news2024/11/24 9:05:31

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.coloradmin.cn/o/717743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

setContentView DecorView Activity生命周期

DecorView DecorView是Android中的一个重要类,它是View系统的根View,用于承载应用程序的所有视图层级。下面是一些关于DecorView的信息和相关链接: 1、DecorView是Android系统中的顶级View,它是Window的根视图,负责显…

排序算法解析

常见的排序算法包括以下几种: 冒泡排序(Bubble Sort):重复比较相邻的两个元素,将较大的元素逐渐向后移动,直到整个序列有序。 选择排序(Selection Sort):从未排序部分选…

Nginx负载均衡、虚拟主机

目录 常用的6种负载均衡算法 轮询算法(round robin)默认 权重(weight) 响应时间(fair) 连接数(least_conn) IP_hash url_hash(第三方) 开发优选:一致性哈希 安装步骤: 虚拟主机 常用的6种负载均衡算法 轮询算法(round robin)默认 轮询方式&a…

MMaction2 使用记录1——训练及测试

目录 训练及测试 Training 在你的 PC上训练 Training 多 GPUs Test 训练及测试 Training 在你的 PC上训练 你可以使用tools/train.py在一台有CPU和可选GPU的机器上训练一个模型。 下面是该脚本的完整用法: python tools/train.py ${CONFIG_FILE} [ARGS] 默…

基于Java出租车管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

2023RPA最佳实践案例之:实在智能助力杭州银行打造数字员工智能辅助平台

导语: 近期,实在智能荣登"2023爱分析RPA最佳实践案例"榜单。此次评选活动旨在表彰在RPA领域具备实践领先性、案例创新性、应用成熟度、价值创造等优点的企业和厂商,实在智能以其为杭州银行打造的RPA数字员工解决方案作为目前 RPA …

一天吃透操作系统面试八股文

内容摘自我的学习网站:topjavaer.cn 操作系统的四个特性? 并发:同一段时间内多个程序执行(与并行区分,并行指的是同一时刻有多个事件,多处理器系统可以使程序并行执行) 共享:系统中…

回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现PSO-DNN粒子群算法优化深度神经网络的数据多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现PSO-DNN粒子…

一文教你搞懂性能测试常见指标

目录 1. 性能指标分类 2. 系统性能指标 2.1 响应时间 2.2 系统处理能力 2.3 吞吐量 2.4 并发用户数 2.5 错误率 3. 资源性能指标 3.1 CPU 3.2 内存 3.3 磁盘吐吞量 3.4 网络吐吞量 4. 中间件指标 5. 数据库指标 6. 稳定性指标 7. 可扩展性指标 8. 可靠性…

谷歌浏览器Crx插件库-https://crxdl.com/

地址:https://crxdl.com/ postman插件:talend json插件库:csdn插件 抓取视频:猫抓

C++primer(第五版)第十章(泛型算法)

10.1概述 大多数算法定义在头文件algorithm中.另外头文件numeric中定义了一组数值泛型算法. 一般情况下算法不直接操作容器,而是通过迭代器来对元素进行处理,因此迭代器令算法不依赖容器,但算法依赖于元素类型的操作. 泛型算法本身不会执行容器的操作,它们只会运行于迭代器之…

XD教程笔记

一、快捷键 选择: V 粘贴外观: ctrl alt V 矩形: R 组件: ctrl K 椭圆: E 向某一方向对齐: ctrl shift 方向键 钢笔: P 100%显示: ctrl 1 文本: T 锁定&a…

SAP ABAP 查表数据接口

查 SAP 表数据的接口 1.使用范例: 字段注释QUERY_TABLE查询的表名FIELDNAME查询的字段ROWCOUNT查询的行数ROWCOUNT查询的行数OPTIONS查询条件FIELDS查询字段的释义和字符长度DATA查询的数据TOTALROWS符合条件数据的行数 FIELDS 结果: 外围系统接口调用…

图像像素操作与二值化

目录 1、图像像素比较 1.1 比较函数 1.2 图像最大值最小值寻找 2、图像像素逻辑操作 3、图像二值化 3.1 固定阈值二值化 3.2 自适应阈值二值化 1、图像像素比较 1.1 比较函数 1.2 图像最大值最小值寻找 Mat img imread("F:/testMap/bijiao.png");Mat white i…

Bootstrap - 【echart】 统计图表基本使用

一. 前言 Bootstrap是一个流行的前端框架,而ECharts是一个流行的可视化库。 Bootstrap可以用来设计网站和应用程序的用户界面,而ECharts可以用来创建交互式和可视化的图表。 chart.js中文文档:http://www.bootcss.com/p/chart.js/docs/ 二.…

MYSQL的基础架构

了解MySQL(超详细的MySQL工作原理 体系结构) 1.MySQL体系结构 2.MySQL内存结构 3.MySQL文件结构 4.innodb体系结构 一、了解MySQL前你需要知道的 引擎是什么: MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同…

现货白银投资技巧实战教程

交易的实战技巧是指一些能让交易者获利的方法,当中一般都包含重要的操作纪律以及资金的配置策略,目标是要让投资者以合理的风险控制,来赢得持续的利润。现货白银投资技巧实战教程主要有以下几方面的内容: 1、充分了解交易细则。交…

腾讯云服务器新手入门_省钱入口_搭建网站全流程

腾讯云服务器新手指南从云服务器创建、远程连接到云服务器、安装操作系统、使用阿里云服务器建站教程等全流程,腾讯云服务器网分享腾讯云服务器从创建、使用到搭建网站全流程指南: 目录 一:腾讯云服务器创建 二:腾讯云服务器远…

leetcode84. 柱状图中最大的矩形(单调栈-java)

柱状图中最大的矩形 leetcode84. 柱状图中最大的矩形题目描述单调栈加数组优化栈结构解题代码演示用数组来优化栈结构,时间会更快 单调栈专题 leetcode84. 柱状图中最大的矩形 来源:力扣(LeetCode) 链接:https://leetcode.cn/prob…

01、Linux运维发展与学习路线图

目录 一、Linux运维行业前景二、运维相关岗位三、Linux运维岗位薪酬四、Linux运维岗知识框架4.1、常见站点系统架构演变1 单机2 多机3 缓存4 向外扩展5 Docker 4.2 知识体系框架图4.3 技术人员成长的阶段4.4 方法论 一、Linux运维行业前景 流程化、标准化的工作越来越依赖于信…