【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录

  • 1 三种多头编码(MHE)实现
    • 1.1 多头乘积(MHP)
    • 1.2 多头级联(MHC)
    • 1.3 多头采样(MHS)
    • 1.4 标签分解策略

论文:Multi-Head Encoding for Extreme Label Classification
作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang
单位:山东大学
代码:https://github.com/Anoise/MHE

论文地址:Online,ArXiv,GItHub

背景动机参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 1
基础知识参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2
算法实现参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3
表示能力参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4
实验结果参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 5
无需预处理见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 6

请各位同学给我点赞,激励我创作更好、更多、更优质的内容!^_^

关注微信公众号,获取更多资讯
在这里插入图片描述

1 三种多头编码(MHE)实现

现在,我们考虑具体化的算法实现,以使MHE适用于各种XLC任务。具体地说,将MHP应用于xsl以实现多头并行加速。在XMLC中使用MHC来防止多个类别之间的混淆,在模型预训练中使用MHS来有效地提取特征,因为该任务不需要分类器。然后,我们提供了一种策略来确定头像的数量和长度。
在这里插入图片描述

图 3 : XLC 任务的三个基于 MHE 的训练和测试流程。红色虚线框表示的部分是为了便于理解,实际中并不需要。

1.1 多头乘积(MHP)

根据推论1,输出可以分解为头部的乘积,这为使用MHP代替普通分类器来训练模型铺平了道路。
如3-a所示,在训练过程中,需要将全局标签 Y i Y_i Yi分配给每个头部,进行局部损失计算。因此,我们首先对 Y i Y_i Yi执行OHE,然后根据头部的长度将其重塑为 H H H阶张量 Y i 1 , . . . , H \mathcal{Y}_i^{1,...,H} Yi1,...,H。最后,将 Y i 1 , . . . , H \mathcal{Y}_i^{1,...,H} Yi1,...,H分解为每个头部上的本地标签 { Y i h } h = 1 H \{Y_i^h\}_{h=1}^H {Yih}h=1H。由于one-hot编码 Y i Y_i Yi的分解仅取决于头部的数量和顺序,因此可以递归地计算为
在这里插入图片描述
其中 j j j k k k为分类头的索引。
在测试期间,必须从局部预测中恢复全局预测。如图3-a所示,我们首先对每个头部执行 I Λ \mathbb{I}_{\varLambda} IΛ,以获得局部预测的标签。然后,通过对每个头部执行乘积并对最终输出应用Argmax来获得全局预测 Y ~ i \tilde{Y}_i Y~i。为了加快这一过程,根据定理1,我们从局部预测和后续正面的长度计算 Y ~ i \tilde{Y}_i Y~i,为
Y ~ i = ∑ k = 1 H − 1 Λ ( O k ) ∏ j = k + 1 H ∣ O j ∣ + Λ ( O H ) . ( 11 ) \tilde{Y}_i = \sum_{k=1}^{H-1} \varLambda(\bm{O}^k) \prod_{j=k+1}^H |\bm{O}^j| + \varLambda(\bm{O}^H). \qquad (11) Y~i=k=1H1Λ(Ok)j=k+1HOj+Λ(OH).(11)
MHP的算法伪代码见附录E-1。它可以用于许多xsl任务,如图像分类、人脸识别等。

1.2 多头级联(MHC)

对于XMLC,每个示例 X i \bm{X}_i Xi对应于多个标签 Y ˉ i ∈ { 0 , 1 } C \bar{\bm{Y}}_i \in \{0,1\}^{C} Yˉi{0,1}C,因此分类器的输出需要执行多热编码和Top- K K K选择,如 Y ~ i = Top- K ( O ˉ ) \tilde{Y}_i = \text{Top-}K(\bar{\bm{O}}) Y~i=Top-K(Oˉ)。在XMLC中不能直接采用MHP。这是因为MHP中的每个头只预测一个标签。如果用于多标签预测,则在计算局部预测的乘积时将导致不匹配。为了解决多标签场景下MHP的不匹配问题,提出了MHC,它将多个头部级联用于模型训练和测试。

如图3-b所示,在训练过程中,MHC的标签分解过程与MHP相同。在测试期间,选择输出的顶级 K K K激活。然后,通过预定义的候选集 C 1 \mathbb{C}^1 C1获得该头部的局部预测,并采用该候选集表示后续头部的标签集,方便检索,减少计算量。 h h h\text{-}头的最终输出 O ~ h \tilde{\bm {O}}^h O~h由嵌入的 Y ~ h − 1 \tilde{\bm{Y}}^{h-1} Y~h1和当前输出 O h \bm{O}^h Oh的乘积得到。然后,根据 O ~ h \tilde{\bm {O}}^h O~h的前 K K K激活项,从 C h \mathbb{C}^h Ch中选择 Y ~ h \tilde{\bm {Y}}^h Y~h。重复此过程,直到获得 Y ~ H \tilde{\bm {Y}}^H Y~H的标签为
在这里插入图片描述
其中   i h = ∏ j = 1 h ∣ O j ∣ \ i_h = \prod_{j=1}^h |\bm{O}^j|  ih=j=1hOj, E h \mathbb{E}^h Eh h h h\text{-}头的嵌入层, C [ 1 , . . . , i h + 1 ] ( i h , ∣ O h + 1 ∣ ) \mathbb{C}_{[1,...,i_{h+1}]}^{(i_h,|\bm{O}^{h+1}|)} C[1,...,ih+1](ih,Oh+1)为元素为 1 1 1 i h + 1 i_{h+1} ih+1,形状为 ( i h , ∣ O h + 1 ∣ ) (i_h, |\bm{O}^{h+1}|) (ih,Oh+1)的索引矩阵。由公式12可知,MHC是一种由粗到精的分层预测方法,它依次从前一个头部中选择Top- K K K候选标签。请注意,MHC仅依赖于Eq. 10进行标签分解,不需要HLT或标签聚类等预处理技术。MHC的算法伪代码见附录E-2。

1.3 多头采样(MHS)

对于模型预训练任务,训练完成后丢弃香草分类器,只采用模型提取的特征 F \bm F F对下游任务进行微调。因此,需要训练分类器中权值的所有参数来提取更多的判别特征,但是训练权值的所有参数计算开销很大。因此,提出MHS通过选择地面真值标签所在的头部来更新模型参数。

如图3-c所示,MHS将原始分类器平均分为 H H H组,使 O = ∑ h H ∣ O h ∣ \bm{O} = \sum_h^H |\bm{O}^h| O=hHOh。训练时,选择标签 Y i Y_i Yi所在的头部进行模型训练,称为正头部。当然,我们也可以随机选择几个负头像一起训练模型,从而使模型具有更多的负样本信息。 O h {\bm O}^{h} Oh的MHS正演过程可表示为
O h = O h ∪ { O j } = W h F ∪ { W j } F ,      ( 13 a ) Y h = Y h ∪ { 0 } = Y [ ∣ O h − 1 ∣ : ∣ O h ∣ ] ∪ { 0 } , ( 13 b ) \bm{O}^h = \bm{O}^h \cup \{\bm{O}^j\} = \mathcal{W}^h\bm{F} \cup \{\mathcal{W}^j\}\bm{F}, \qquad \quad \ \ \ \ (13a) \\ \bm{Y}^h = \bm{Y}^h \cup \{0\} = \bm{Y}[|\bm{O}^{h-1}|:|\bm{O}^{h}|] \cup \{\bm{0}\}, \qquad (13b) Oh=Oh{Oj}=WhF{Wj}F,    (13a)Yh=Yh{0}=Y[Oh1:Oh]{0},(13b)
其中 { O j } \{\bm{O}^j\} {Oj} { W j } \{\mathcal{W}^j\} {Wj}分别表示负头的输出和权重集, ∪ \cup 表示串联操作。等式13-b表示用 0 \bm 0 0 s填充 Y h \bm{Y}^h Yh以对齐 O h \bm{O}^h Oh的长度,其中 ∣ O h ∣ = 0 |\bm{O}^h|=0 Oh=0表示 h = 0 h=0 h=0

式13中的方法可以表示为MHS- S S S,其中 S S S为所选头像的个数。我们的实验表明MHS- 1 1 1(仅正样本)在模型预训练上取得了很好的效果。对于 S = 2 S=2 S=2, MHS近似或优于香草分类器。为了加快MHS的速度,在同一批次中选择含有其他样品标签的头作为阴性头。MHS的算法伪代码见附录E-3。

1.4 标签分解策略

到目前为止,我们已经介绍了三种MHE算法,其实现取决于头的数量和长度。因此,在本小节中,我们引入误差积累和混淆度的概念来衡量头部数量和长度对基于mhe的算法性能的影响。

头的数量: 带 H H H头的MHE的近似过程可表示为
O ≈ O 1 ⊗ O ~ 2 ≈ O 1 ⊗ O 2 ⊗ O 3 ~ ⏟ ≈ O ~ 2 ≈ O 1 ⊗ O 2 ⊗ ⋯ ⊗ O H ⏟ ≈ O ~ H − 1 . ( 14 ) {\bm O} \approx {\bm O}^1 \otimes \tilde{\bm O}^2 \approx {\bm O}^1 \otimes \underbrace{{\bm O}^2 \otimes \tilde{{\bm O}^3}}_{\approx \tilde{\bm O}^2} \approx {\bm O}^1 \otimes {\bm O}^2 \otimes \underbrace{\cdots \otimes {\bm O}^H}_{\approx \tilde{\bm O}^{H-1}}. \qquad (14) OO1O~2O1O~2 O2O3~O1O2O~H1 OH.(14)
如等式14所示,增加一个头部相当于又累积了一个时间误差。虽然增加头的数量会显著减少分类器的参数和计算量,但也会导致更大的累积误差。因此,在计算资源和运行速度允许的情况下,应尽量减少分类头的数量。

头的长度:混淆度是当采用MHE来近似原始标签空间时由共享组件引起的不匹配的度量。它与近似误差成正比,如下所示
D = m a x π ( O 1 , ⋯   , O H ) ( ∏ h = 2 H ∏ k = h H ∣ O k ∣ ∣ O k − 1 ∣ ) ,    ( H ≥ 2 ) , ( 15 ) D = \mathop{max}\limits_{\pi({\bm O}^1, \cdots, {\bm O}^H)} \left ( \prod_{h=2}^H \frac{\prod_{k=h}^H |{\bm O}^k|}{|{\bm O}^{k-1}|}\right ), \ \ (H \ge 2), \qquad (15) D=π(O1,,OH)max(h=2HOk1k=hHOk),  (H2),(15)
其中 π \pi π是正面的排列策略。希望 D D D的值尽可能小。由于 π \pi π依赖于具体的分解过程,我们详细分析了MHE不同算法的混淆程度。因此,

  • 对于MHP,由于磁头是平行的,需要组合,因此混淆程度与磁头的排列无关。也就是说,等式15中的 m a x max max可以在头的长度按升序排列时删除。因此,我们得出结论,MHP中每个头部的长度应尽可能一致,以最小化 D D D,即 ∣ O h ∣ ≈ C H |{\bm O}^h| \approx \sqrt[H]{C} OhHC
  • 对于MHC,由于头部是顺序级联的,我们可以选择一个更好的策略 π \pi π最小化 D D D。显然,当 π \pi π按降序排列( ∣ O 1 ∣ ≥ ⋯ ≥ O H |{\bm O}^1| \ge \cdots \ge {\bm O}^H O1OH)时, D D D是最小的。
  • 对于MHS,这些多个磁头是相互关联的,需要组合(与 m a x max max操作无关)。也就是说,我们可以选择与MHC相同的策略来最小化D。

背景动机参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 1
基础知识参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2
算法实现参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3
表示能力参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4
实验结果参见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 5
无需预处理见 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 6

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来

——细节满满,看完立马写出一篇合格的PPT 总述 形式服务于内容,同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT,内容一定是第一位的,在内容篇(可点击查看)已经很详细地给出了提纲思路,那如何落实到…

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要,因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误,提升代码质量和系统稳定性。同时,它促进了团队成员间的沟通与协作,确保项目按时交付。此外,…

大模型(LLM) 的长上下文与 RAG:评估与回顾

大模型的长上下文与 RAG 以下是本文的主要发现: 在问答基准测试中,LC 的表现通常优于 RAG 基于摘要的检索与 LC 性能相当,而基于块的检索则落后 RAG 在基于对话和一般性问题查询方面具有优势 本文对结果进行了深入分析,请查看。 …

SSR 【1】【nuxt安装】

文章目录 前言如何解决 前言 nuxt提供了nuxi脚手架工具&#xff0c;让开发者便捷生成nuxt模板项目。nuxt官网 npx nuxilatest init <project-name>但是几乎大部分的人在安的时候都会遇到这个问题 如何解决 在C:\Windows\System32\drivers\etc\hosts中增加如下解析记录…

性能测试05|JMeter:分布式、报告、并发数计算、性能监控

目录 一、JMeter分布式 1、应用场景 2、原理 3、分布式相关注意事项 4、分布式配置与运行 二、JMeter报告 1、聚合报告 2、HTML报告 三、并发用户数&#xff08;线程数&#xff09;计算 四、JMeter下载第三方插件 五、性能监控 1、Concurrency Thread Group 线程组…

CURSOR 应用:深入理解字符前缀条件算法(Character Prefix Conditioning)

前言 在代码补全中&#xff0c;用户期待智能模型能根据输入快速、准确地给出建议。但现代语言模型基于Token序列运作&#xff0c;这在处理非Token边界输入时会带来偏差。为了解决这一问题&#xff0c;本文将探讨一种高效算法——字符前缀条件算法&#xff08;Character Prefix…

滤波器设计流程

sos滤波器是什么为什么要 zpk2sos如何实现零相位滤波&#xff0c;优缺点分别是什么 滤波器的计算流程 滤波器的计算设计流程&#xff1a; 1.输入验证和处理&#xff1a; 2.检查频率范围是否合法&#xff0c;计算归一化的频率。 3.滤波器设计&#xff1a;设计带通 Butterworth…

【游戏设计原理】53 - 解决问题的障碍

1. 分析并总结原理 核心观点 游戏本质是一系列问题解决的过程&#xff0c;通过设计巧妙的问题和决策场景&#xff0c;游戏能激发玩家的兴趣和投入感。然而&#xff0c;当问题解决的过程被阻碍时&#xff0c;会降低玩家的体验甚至让他们放弃游戏。文中提到的四种障碍反映了玩家…

【多线程初阶篇¹】线程理解| 线程和进程的区别

目录 一、认识线程Thread 1.为啥引入线程 2.线程理解 &#x1f525; 3.面试题&#xff1a;线程和进程的区别 一、认识线程Thread 1.为啥引入线程 为了解决进程太重量的问题 解释&#xff08;为什么说线程比进程更轻量&#xff1f;/为什么说线程创建/销毁开销比进程小&#…

平面坐标转大地坐标(arcgisPro中进行)

1、将需要转换的红线导入arcgisPro中&#xff0c;如下&#xff1a; 2、在地图菜单栏中&#xff0c;选择坐标转换工具&#xff0c;如下&#xff1a; 3、打开坐标转换工具 4、开启捕捉 5、 设置大地坐标显示格式 6、如下&#xff1a; 7、显示如图&#xff1a; 8、再依次添加几个待…

CentOS: RPM安装、YUM安装、编译安装(详细解释+实例分析!!!)

目录 1.什么是RPM 1.1 RPM软件包命名格式 1.2RPM功能 1.3查询已安装的软件&#xff1a;rpm -q 查询已安装软件的信息 1.4 挂载&#xff1a;使用硬件&#xff08;光驱 硬盘 u盘等&#xff09;的方法&#xff08;重点&#xff01;&#xff01;&#xff01;&#xff09; 1…

n8n - AI自动化工作流

文章目录 一、关于 n8n关键能力n8n 是什么意思 二、快速上手 一、关于 n8n n8n是一个具有原生AI功能的工作流自动化平台&#xff0c;它为技术团队提供了代码的灵活性和无代码的速度。凭借400多种集成、原生人工智能功能和公平代码许可证&#xff0c;n8n可让您构建强大的自动化…

GWAS数据和软件下载

这部分主要是数据获取,以及软件配置方法。 一、配套数据和代码 数据和代码目前在不断的更新,最新的教程可以私信,我通过后手动发送最新版的pdf和数据代码。发送的压缩包,有电子版的pdf和数据下载链接,里面是最新的百度网盘的地址,下载到本地即可。然后根据pdf教程,结合配套的…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代&#xff0c;需要对不同迭代版本升级版本号&#xff0c;且因为项目工程本身是多模块结构&#xff0c;且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时&#xff0c;一直报Failure to find com.xxx.x…

STM32 I2C硬件配置库函数

单片机学习&#xff01; 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…

JavaEE初阶——计算机工作原理

一、什么是JavaEE JavaEE&#xff08;Java Platform&#xff0c;Enterprise Edition&#xff09;是sun公司&#xff08;2009年4月20日甲骨文将其收购&#xff09;推出的企业级应用程序版本。这个版本以前称为 J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器…

【微服务】2、网关

Spring Cloud微服务网关技术介绍 单体项目拆分微服务后的问题 服务地址问题&#xff1a;单体项目端口固定&#xff08;如黑马商城为8080&#xff09;&#xff0c;拆分微服务后端口各异&#xff08;如购物车808、商品8081、支付8086等&#xff09;且可能变化&#xff0c;前端难…

【JAVA】Java开发小游戏 - 简单的2D平台跳跃游戏 基本的2D平台跳跃游戏框架,适合初学者学习和理解Java游戏开发的基础概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

【学Rust开发CAD】1 环境搭建

文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具&#xff0c;这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统&#xff0c;往…

【HTML】Day02

【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用&#xff1a;布局内容排列整齐…