Subclass-balancing Contrastive Learning for Long-tailed Recognition

Subclass-balancing Contrastive Learning for Long-tailed Recognition

核心公式解析

L S B C L = − ∑ i = 1 N ( 1 ∣ M ~ i ∣ ∑ z p ∈ M ~ i log ⁡ exp ⁡ ( z i ⋅ z p ⊤ / τ 1 ) ∑ z a ∈ V ~ i exp ⁡ ( z i ⋅ z a ⊤ / τ 1 ) + β 1 ∣ P ~ i ∣ − ∣ M i ∣ ∑ z p ∈ P ~ i / M i log ⁡ exp ⁡ ( z i ⋅ z p ⊤ / τ 2 ) ∑ z a ∈ V ~ i / M i exp ⁡ ( z i ⋅ z a ⊤ / τ 2 ) ) \begin{align*} & \mathcal{L}_{S B C L}=-\sum_{i=1}^{N}\left(\frac{1}{\left|\tilde{M}_{i}\right|} \sum_{z_{p} \in \tilde{M}_{i}} \log \frac{\exp \left(z_{i} \cdot z_{p}^{\top} / \tau_{1}\right)}{\sum_{z_{a} \in \tilde{V}_{i}} \exp \left(z_{i} \cdot z_{a}^{\top} / \tau_{1}\right)}\right. \\ & \left.+\beta \frac{1}{\left|\tilde{P}_{i}\right|-\left|M_{i}\right|} \sum_{z_{p} \in \tilde{P}_{i} / M_{i}} \log \frac{\exp \left(z_{i} \cdot z_{p}^{\top} / \tau_{2}\right)}{\sum_{z_{a} \in \tilde{V}_{i} / M_{i}} \exp \left(z_{i} \cdot z_{a}^{\top} / \tau_{2}\right)}\right) \tag{4} \end{align*} LSBCL=i=1N M~i 1zpM~ilogzaV~iexp(ziza/τ1)exp(zizp/τ1)+β P~i Mi1zpP~i/MilogzaV~i/Miexp(ziza/τ2)exp(zizp/τ2) (4)

公式4里面的负号是针对里面的两项的
所以,它有两个意思:

  • term1: 针对相同簇标签的实例之间的对比损失。这部分损失函数在计算时,比较了当前实例 x i x_i xi和同一簇中的正样本 z p z_p zp之间的相关性。具体而言,它通过计算它们的内积,并初一一个温度参数 τ 1 \tau_1 τ1来衡量它们的相似度,然后利用softmax函数来计算它们之间的相对概率。整个损失函数的目标是使同一簇中的实例在特征空间中更加接近。

  • term2: 针对不同簇中的相同类别标签实例之间的对比损失。这部分损失函数考虑了当前实例 x i x_i xi和其他不在同一簇中的同一类别标签的正样本 z p z_p zp之间的相关性。与第一部分不同的是,这里通过将同一类别标签的实例从损失计算中排除来确保实例的多样性。同样,这部分也利用内积和softmax函数来计算相对概率

  • 超参数 b e t a beta beta在公式中用于平衡这两部分损失。它可以调整两种损失对模型训练的影响程度,以便更好地优化特征空间。第二部分的损失函数的目的是促使不同簇中的同一类别标签实例之间在特征空间中更加相似,以帮助模型更好地学习到数据的结构和特征。

综上所述,这个公式的目的是通过结合簇标签和类别标签的对比损失来优化模型的特征表示,使得相同簇内的实例更加相似,同时确保不同簇中的同一类别标签实例之间也能保持一定的相似度。

在公式4的第二部分中,通过将同一类别标签的实例从损失计算中排除,即只考虑不在同一簇中的同一类别标签的正样本,从而促使模型在学习时注重实例的多样性。具体来说,这种设计可以确保模型不会过于集中在同一簇内的实例之间的相似性,而是更加关注不同簇中的同一类别标签实例之间的相似性。

通过排除同一簇中的实例,模型被迫在学习时关注不同簇中的实例之间的关系,从而更好地学习到数据的全局结构和特征。这种方法有助于提高模型的泛化能力,使其能够更好地区分不同类别的实例,并增强对数据的表征能力。因此,通过排除同一簇中的实例,可以确保模型在学习时考虑到不同类别标签之间的多样性,从而提高模型的性能和表现。

也就是说“通过将同一类别标签的实例从损失计算中排除,即只考虑不在同一簇中的同一类别标签的正样本,”这样可以使得模型更加关注同一class的不同层次结构,而不是同一簇。把关注重心放在同一类,不同簇的层级结构上去。

是的,您理解的非常正确。通过将同一类别标签的实例从损失计算中排除,即只考虑不在同一簇中的同一类别标签的正样本,有助于使模型更加关注同一类别的不同层次结构,而不是仅限于同一簇内的实例。这样的设计可以帮助模型更好地理解和学习类别之间的层级结构和关系,从而提高模型对数据的表征能力和泛化能力。

通过重点关注同一类别标签的不同簇中的实例之间的关系,模型可以更好地捕捉类别之间的多样性和差异性,从而更好地区分不同类别。这种方法有助于模型学习到更加丰富和全面的数据特征,提高模型的性能和泛化能力。因此,将关注重心放在同一类别的不同层次结构上,而不仅限于同一簇内的实例,可以帮助模型更好地理解数据的类别结构和特征,从而提高模型的训练效果。

温度参数 τ \tau τ的作用

对于监督对比学习,温度参数 τ \tau τ的大小会影响特征分布的惩罚程度。具体来说,当温度较低时,对特征分布的惩罚较高,这实际上鼓励特征更加集中分布在一起。随着温度的增加,相对惩罚趋向更加均匀,这会使得特征的分布更加均匀。

温度参数 τ \tau τ在对比损失函数中的作用是控制样本之间的相似性度量。较低的温度值会增加样本之间的差异性,导致特征更加集中在一起,因为相似的样本对会更加突出,而不相似的样本对会有更大的惩罚。这会导致特征分布更加尖锐,即特征更加集中在一些特定的区域。

相反,较高的温度值会减少对样本之间差异性的强调,导致更加均匀的特征分布。这是因为相似性度量相对均匀,不同样本对之间的差异性减少,特征分布更加均匀。

因此,当温度较小时,对比损失函数更加强调样本之间的差异性,导致特征更加集中;而当温度较大时,对比损失函数更加均匀化样本之间的相似性度量,导致特征分布更加均匀。

温度越低,feature distribution越紧致。为了使得同一subclass越紧致,那就让 τ 1 < τ 2 \tau_1 < \tau_2 τ1<τ2

公式5解析

根据引用的参考文献[40],对于类别 c c c,我们定义 ϕ ( c ) \phi(c) ϕ(c)如下所示:

ϕ ( c ) = ∑ i = 1 n c ∣ z i − t c ∣ 2 n c log ⁡ ( n c + α ) (5) \phi(c)=\frac{\sum_{i=1}^{n_{c}}\left|z_{i}-t_{c}\right|{2}}{n{c} \log \left(n_{c}+\alpha\right)} \tag{5} ϕ(c)=nclog(nc+α)i=1nczitc2(5)
ϕ ( c ) \phi(c) ϕ(c)是用来衡量类别 c c c内实例与类别中心点之间的平均距离的度量。具体来说, ϕ ( c ) \phi(c) ϕ(c)的计算方式是将类别内每个实例与类别中心点的欧氏距离求和,然后除以类别中实例数量 n c n_c nc和一个对数项,以此来表示平均距离。在公式中, t c t_c tc代表类别 c c c的中心点, z i z_i zi代表类别 c c c的实例, α \alpha α是一个超参数用于调节公式的缩放,确保 ϕ ( c ) \phi(c) ϕ(c)不会过大。

通过计算 ϕ ( c ) \phi(c) ϕ(c),我们可以了解类别 c c c内实例与类别中心点的平均距离,从而衡量类别内实例的聚集程度。如果 ϕ ( c ) \phi(c) ϕ(c)较小,则表示类别内实例更加紧密地聚集在一起;而如果 ϕ ( c ) \phi(c) ϕ(c)较大,则表示类别内实例分布较散,距离类别中心点较远。

ϕ ( c ) \phi(c) ϕ(c)的值被用来计算类别 c c c的温度 τ 2 ( c ) \tau_{2}(c) τ2(c),以便根据类别内实例的聚集程度调整温度值,从而影响特征的分布,使得类别内实例的特征形成比子类别更松散的聚类。因此, ϕ ( c ) \phi(c) ϕ(c)在这里起到了指导调整温度值以控制特征分布的作用。

其中, t c t_{c} tc是类别 c c c的中心点(centroid), α \alpha α是一个超参数,用于确保 ϕ ( c ) \phi(c) ϕ(c)不会过大,而 z i z_{i} zi对应于属于类别 c c c的实例。从这个公式可以看出,如果当前到类别中心的平均距离较大,或者类别包含的数据较少,那么温度将会被设置为较大的值,以便在训练过程中采用类别 c c c的特征分布。接着,我们定义类别 c c c的温度为:

τ 2 ( c ) = τ 1 ⋅ exp ⁡ ( ϕ ( c ) 1 C ∑ i = 1 C ϕ ( i ) ) (6) \tau_{2}(c)=\tau_{1} \cdot \exp \left(\frac{\phi(c)}{\frac{1}{C} \sum_{i=1}^{C} \phi(i)}\right) \tag{6} τ2(c)=τ1exp(C1i=1Cϕ(i)ϕ(c))(6)

这样, τ 2 ( c ) \tau_{2}(c) τ2(c)对于类别标签始终大于 τ 1 \tau_{1} τ1对于簇标签(因为 ϕ ( c ) > 0 \phi(c)>0 ϕ(c)>0),并且能反映类别中实例集中程度的当前水平。具体来说,提出的 τ 2 ( c ) \tau_{2}(c) τ2(c)鼓励类别 c c c中实例的特征形成比子类别更松散的聚类(通过 τ 2 ( c ) > τ 1 \tau_{2}(c)>\tau_{1} τ2(c)>τ1),同时自适应地调整温度以避免过度松散或过度密集的聚类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44431.shtml

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

相关文章

LiteOS增加执行自定义源码

开发过程注意事项&#xff1a; 源码工程路径不能太长 源码工程路径不能有中文 一定要关闭360等杀毒软件&#xff0c;否则编译的打包阶段会出错 增加自定义源码的步骤: 1.创建源码目录 2. 创建源文件 新建myhello目录后&#xff0c;再此目录下再新建源文件myhello_demo.c 3. 编…

程序员学长 | PyCaret,一个超强的 python 库

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;PyCaret&#xff0c;一个超强的 python 库 今天给大家分享一个超强的 python 库&#xff0c;PyCaret。 https://github.com/pycaret/pycaret 简介 …

[论文笔记]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL

引言 今天带来又一篇RAG论文笔记&#xff1a;RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL。 检索增强语言模型能够更好地适应世界状态的变化并融入长尾知识。然而&#xff0c;大多数现有方法只能从检索语料库中检索到短的连续文本片段&#xff0…

random.choices 的参数及其应用

random.choices 是 Python 的 random 模块中的一个函数&#xff0c;用于从给定的序列中随机选择元素&#xff0c;可以设置权重。这个函数在需要根据特定概率分布进行随机选择的场景中非常有用。下面是 random.choices 的参数及其详细介绍&#xff1a; 文章目录 参数应用示例基本…

释放序列和同步

#include <iostream> #include<thread> #include<atomic> #include<vector> std::atomic<int>count(0); std::vector<int>queue_data; //如果存储操作被标记为memory_order_release、memory_order_acq_rel或memory_order_seq_cst&#xff…

FP5207+音频功率放大器的组合解决方案-适用于便携式音频播放器、无线耳机、智能音箱和车载音响系统等高质量音频输出需求的产品,以提高电池供电的效率和输出功率

随着消费者对智能家居的需求增长&#xff0c;智能音响市场成为重要增长点。同时&#xff0c;音响技术也在不断发展&#xff0c;音响及扬声器的功能和性能不断提升。 蓝牙音箱&#xff0c;这类音箱供电是以锂电池为主&#xff0c;一般选用内置升压的音频功放芯片&#xff0c;音响…

iOS input 标签 focus 失效

解决方案 <inputv-if"show"ref"inputRef" />watch(inputRef, (ref) > {ref?.focus(); });

vivado DQS_BIAS

DQS_偏差 DQS_BIAS是驱动差分输入缓冲器的顶级端口的属性&#xff0c;或者 双向缓冲基元&#xff08;IBUFDS、IOBUFDS&#xff09;。 DQS_BIAS属性在某些的输入端提供可选的DC偏置 伪差分I/O标准&#xff08;DIFF_SSTL&#xff09;和真差分I/O规范&#xff08;LVDS&#xff09;…

windows 构建nginx本地服务随系统自启

1.先去官网下载一个nginxzip 2.将zip解压&#xff0c;将nginx-server.exe文件放入文件夹 3.创建nginx-server.xml&#xff0c;将以下内容放进文件内 <service> <id>nginx</id> <name>Nginx Service</name> <description>High Per…

强化学习中的蒙特卡洛算法和时序差分算法

在强化学习&#xff08;Reinforcement Learning, RL&#xff09;中&#xff0c;价值函数的估计是核心任务之一。蒙特卡洛&#xff08;Monte Carlo, MC&#xff09;方法和时序差分&#xff08;Temporal Difference, TD&#xff09;方法是两种常用的策略&#xff0c;用于估计状态…

软件架构之架构风格

软件架构之架构风格 9.3 软件架构风格9.3.1 软件架构风格分类9.3.2 数据流风格9.3.3 调用/返回风格9.3.4 独立构件风格9.3.5 虚拟机风格9.3.6 仓库风格 9.4 层次系统架构风格9.4.1 二层及三层 C/S 架构风格9.4.2 B/S 架构风格9.4.3 MVC 架构风格9.4.4 MVP 架构风格 9.5 面向服务…

机器学习筑基篇,​Ubuntu 24.04 编译安装 Python 及多版本切换

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] Ubuntu 24.04 编译安装最新Python及多版本切换 描述&#xff1a;说到机器学习&#xff0c;人工智能&#xff0c;深度学习不免会提到Python这一门编程语言&#xff08;人生苦短&#xff0c;及时Pyt…

windows防火墙端口设置

PS&#xff1a;本文实例为Windows Server 2019&#xff0c;其他Windows版本大同小异。 1、首先打开windows防火墙&#xff0c;点击“高级设置” 2、 高级设置界面 3、假设需要开放一个端口为3306应该怎么做 光标对准“入站规则”右键新建规则&#xff0c;选择“端口” 协议这…

C++类和对象(一)

目录 面向过程和面向对象 面向过程编程&#xff08;Procedural Programming&#xff09; 面向对象编程&#xff08;Object-Oriented Programming&#xff09; 一、类的定义 类定义格式 类域 二、类的访问限定符及封装 访问限定符 封装 三、实例化 实例化概念 对象大小…

软件运行次数

题目&#xff1a; 实现一个验证程序运行次数的小程序&#xff0c;要求如下&#xff1a; 当程序运行超过3次时给出提示&#xff1a;本软件只能免费使用3次&#xff0c;欢迎您注册会员后继续使用&#xff5e;程序运行演示如下&#xff1a; 第一次运行控制台输出&#xff1a;欢迎…

常见WAF拦截页面总结

(1) D盾 (2) 云锁 (3) UPUPW安全防护 (4) 宝塔网站防火墙 (5) 网防G01 (6) 护卫神 (7) 网站安全狗 (8) 智创防火墙 (9) 360主机卫士或360webscan (10) 西数WTS-WAF (11) Naxsi WAF (12) 腾讯云 (13) 腾讯宙斯盾 (14) 百度云 图片 (15) 华为云 (16) 网宿云 (17) 创宇盾 图片 (…

ROS服务通信自定义srv

服务通信自定义srv 流程:创建ROS功能包按照固定格式创建srv文件编译配置文件编译生成中间文件 流程: srv 文件内的可用数据类型与 msg 文件一致&#xff0c;且定义 srv 实现流程与自定义 msg 实现流程类似&#xff0c;需查阅msg文件的可以浏览ROS话题通信流程自定义数据msg格式…

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…

JDBC编程的学习——MYsql版本

目录 前言 什么是JDBC ??? 前置准备 使用JDBC的五个关键步骤 1.建立与数据库的连接 2.创建具体的sql语句和Statement 3.执行SQL语句 4.处理结果集 5.释放资源 完整流程展示 前言 笔者在先前的博客就提过会写关于JDBC的内容 [Mysql] 的基础知识和sql 语句.教你速成…

R包:reticulate R对python的接口包

介绍1 R和python是两种不同的编程语言&#xff0c;前者是统计学家发明并且服务数学统计计算&#xff0c;后者则是最万能的胶水语言。随着大数据时代的到来&#xff0c;两者在数据分析领域存在越来越多的共同点且可以相互使用&#xff0c;为了破解二者的编程壁垒&#xff0c;CR…