【顶刊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

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

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

相关文章

docker中使用Dockerfile设置Volume挂载点

关于在docker中如何使用Volume,可以参考文章: docker中使用Volume完成数据共享-CSDN博客 如果想在生成docker镜像的时候设置好挂载点,而不是在运行镜像生成容器时生成。 下面以自建一个tomcat镜像为例,演示如何在生成镜像时设置…

springboot548二手物品交易boot代码(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统二手物品交易信息管理难度大,容错率低&#x…

通往O1开源之路

“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发,深入分析了实现类似OpenAI o1模型性能的路线图,聚焦于策略初始化、奖…

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念,所以直接整理可能用到的东西。 sd简单的说…

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key,DeepSeek 2. 安装iTerm2 AI Plugin插件,https://iterm2.com/ai-plugin.html,插件解压后直接放到和iTerms相同的位置,默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

MySQL数据库笔记——多版本并发控制MVCC

大家好,这里是Good Note,关注 公主号:Goodnote,本文详细介绍MySQL的并发控制:多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…

电脑里msvcr120.dll文件丢失怎样修复?

电脑里msvcr120.dll文件丢失的修复指南 在电脑的日常使用中,我们可能会遇到各种各样的系统文件丢失问题,其中msvcr120.dll文件的丢失就是较为常见的一种。作为一名在软件开发领域深耕多年的从业者,我将为大家详细解析msvcr120.dll文件的重要…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上,用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而,不少用户发现自己的IP属地显示与实际位置不符,这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据,并提供解决IP属…

【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 题外话:trait的概念非常非常非常重要!!!整个第10章全都是Rust的重难点!&#x…

大白话拆解——多线程中关于死锁的一切(七)(已完结)

前言: 25年初,这个时候好多小伙伴都在备战期末 小编明天还有一科考试,日更一篇,今天这篇一定会对小白非常有用的!!! 因为我们会把案例到用代码实现的全过程思路呈现出来!&#xff…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…

《数据结构》期末考试测试题【中】

《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为?22. 单链表的存储密度比1?23.单链表的那些操作的效率受链表长度的影响?24.顺序表中某元素的地址为?25.m叉树第K层的结点数为?26. 在双向循环链表某节点…

「Mac畅玩鸿蒙与硬件54」UI互动应用篇31 - 滑动解锁屏幕功能

本篇教程将实现滑动解锁屏幕功能,通过 Slider 组件实现滑动操作,学习事件监听、状态更新和交互逻辑的实现方法。 关键词 滑动解锁UI交互状态管理动态更新事件监听 一、功能说明 滑动解锁屏幕功能包含以下功能: 滑动解锁区域:用…

螺栓松动丢失腐蚀生锈检测数据集VOC+YOLO格式504张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):504 标注数量(xml文件个数):504 标注数量(txt文件个数):504 标注…

Postman测试big-event

报错500。看弹幕,知道可能是yml或sql有问题。 所以检查idea工作台, 直接找UserMapper检查,发现完全OK。 顺着这个error发现可能是sql有问题。因为提示是sql问题,而且是有now()的那个sql。 之后通过给的课件,复制课件…

如何使用大语言模型进行事件抽取与关系抽取

诸神缄默不语-个人CSDN博文目录 文章目录 1. 什么是事件抽取与关系抽取?2. 示例:使用大语言模型进行事件抽取与关系抽取 1. 什么是事件抽取与关系抽取? 事件抽取是指从文本中识别出与某些“事件”相关的信息。这些事件通常包括动作、参与者、…

NAT网络技术

NAT(Network Address Translation,网络地址转换)是一种常用的网络技术,主要用于在私有网络和公共网络之间转换IP地址。在家庭和小型企业网络当中用的比较多。它的主要功能有IP地址重用和增强网络的安全性。   NAT允许一个整个网…

SpringBoot框架开发中常用的注解

文章目录 接收HTTP请求。RestController全局异常处理器Component依赖注入LombokDataBuildersneakyThrowsRequiredArgsConstructor 读取yml文件配置类注解 接收HTTP请求。 RequestMapping 接收HTTP请求。具体一点是 GetMapping PostMapping PutMapping DeleteMapping 一共…

TVS二极管选型【EMC】

TVS器件并联在电路中,当电路正常工作时,他处于截止状态(高阻态),不影响线路正常工作,当线路处于异常过压并达到其击穿电压时,他迅速由高阻态变为低阻态,给瞬间电流提供一个低阻抗导通…

Azkaban其二,具体使用以及告警设置

目录 Azkaban的使用 1、使用Flow1.0(比较老旧) 2、Flow2.0的用法 1、小试牛刀 2、YAML格式的数据 3、多任务依赖 4、内嵌流(嵌套流)案例 5、动态传参 3、Azkaban的报警机制 1)邮箱通知 2)电话报警机制 4、关…