【ACL 2022】用于多标签文本分类的对比学习增强最近邻机制

news2024/11/22 21:44:11

论文地址:https://aclanthology.org/2022.acl-short.75.pdf

1. 摘要

多标签文本分类(MLTC)是自然语言处理中的一项基本且具有挑战性的任务。以往的研究主要集中在学习文本表示和建模标签相关性上。然而,在预测特定文本的标签时,通常忽略了现有的类似实例中的丰富知识。为了解决这一问题,作者提出了一个k最近邻(kNN)机制,该机制检索几个相邻实例并用它们的标签值作为模型的输出。此外,作者设计了一个多标签对比学习目标,使模型学习到kNN的分类过程,并提高了在推理过程中检索到的相邻实例的质量。实验表明,该方法可以为多个MLTC模型带来一致的和可观的性能改进,包括SOTA的预训练和非预训练模型。

2. 方案介绍

方法概述
如上图所示,作者为MLTC设计了一个k个最近邻机制(步骤2,3),并通过使用多标签对比学习目标训练模型(步骤1)对其进行增强。

2.1 问题定义

D = { ( x i , y i ) } i = 1 N D = \{(x_i,y_i)\} ^N_{i=1} D={xiyi}i=1N是由N个实例组成的MLTC训练集。每个 x i x_i xi都是一个文本, y i ∈ 0 , 1 L y_i∈{0,1}^ L yi0,1L为对应的 multi-hot 标签向量,其中L为标签总数。MLTC的目标是学习从输入文本到相关标签的映射。

2.2 最近邻MLTC

为了在推理过程中从现有实例中获取知识,作者提出了一个MLTC的k个最近邻机制,包括两个步骤:

  • 构建训练实例的数据存储(步骤2):给定来自训练集 ( x i , y i ) ∈ D (x_i,y_i)∈D xiyiD的一个实例,其文本表示向量 h i = f ( x i ) h_i = f(x_i) hi=fxi由一个MLTC模型生成。那么,训练实例的数据存储 D ‘ D` D可以通过通过每个训练实例离线构造: D ‘ = { ( h i , y i ) } i = 1 N D‘=\{(h_i,yi)\}^N_{i=1} D={hiyi}i=1N
  • 基于训练实例的数据存储进行kNN预测(步骤3): 在推理阶段,给定一个输入文本x,模型输出预测向量 y ˆ M o ∈ { p ∣ p ∈ [ 0 , 1 ] } L yˆ_{Mo}∈\{p|p∈[0,1]\} ^L yˆMo{pp[0,1]}L。模型还输出文本表示 f ( x ) f (x) f(x),用来查询数据存储D‘,根据欧氏距离获得k最近邻 N = ( h i , y i ) i = 1 k N = {(h_i, y_i)}^k_{i=1} N=(hi,yi)i=1k。然后可以进行kNN预测:
    在这里插入图片描述
    式中, d ( ⋅ , ⋅ ) d(·,·) d为欧氏距离,τ为kNN温度, α i α_i αi为第i个相邻实例的权重。直观地说,一个相邻实例越接近测试实例,它的权重就越大。最终的预测是基础模型输出和kNN预测的组合: y ˆ = λ y ˆ k N N + ( 1 − λ ) y ˆ M o yˆ=λyˆ_{kNN}+(1−λ)yˆ_{Mo} yˆ=λyˆkNN+1λyˆMo,其中λ为比例参数。
    笔者理解,在标签时常变更(下线、新增)的业务场景下,可以将λ设置为1.0,用单纯的kNN检索的方案。该方案好处在于,算对于标签的变更不能及时训练模型,也能支持在新标签体系下的预测。

2.3 多标签对比学习

在MLTC中,模型通常是通过二元交叉熵(BCE)损失的监督学习训练,而不知道kNN检索过程。因此,检索到的相邻实例可能没有与测试实例相似的标签,并且对预测几乎没有什么帮助。为了填补这一空白,作者提出用多标签对比学习目标来训练模型。

现有的监督对比学习方法试图缩小来自同一类的实例之间的距离,并将来自不同类的实例推开。然而,在MLTC中,有两个实例可能共享一些共同的标签,但也可能有一些对每个实例都是唯一的标签。如何处理这些案例是在MLTC中利用对比性学习的关键。因此,为了建模多标签实例之间的复杂相关性,作者设计了一个基于标签相似度的动态系数

考虑一个大小为b的minibatch,作者定义一个函数来输出特定实例的所有其他实例: g ( i ) = { k ∣ k ∈ { 1 , 2 , ⋅ ⋅ ⋅ , b } , k = i } g (i) = \{k|k∈\{1,2,···,b\},k = i\} g(i)={kk{1,2b}k=i} 。每个实例对 ( i 、 j ) (i、j) ij的对比损失可以计算为:
在这里插入图片描述
其中, d ( ⋅ , ⋅ ) d(·,·) d为欧氏距离,τ‘为对比学习温度, z i = f ( x i ) z_i = f(x_i) zi=fxi表示文本表示。 C i j C_{ij} Cij表示i,j之间的标签相似度,由它们的标签向量的点积计算出来。动态系数 β i j β_{ij} βij C i j C_{ij} Cij的归一化处理。

对于一对实例 ( i , j ) (i,j) ij,标签相似度越大, C i j C_{ij} Cij的系数 β i j β_{ij} βij就越大,从而增加其损失项 L c o n i j L^{ij}_{con} Lconij的值。因此,它们的距离 d ( z i , z j ) d(z_i,z_j) dzizj将被优化为更接近。同时,如果它们没有共享的标签 ( β i j = C i j = 0 ) (β_{ij} = C_{ij} = 0) βij=Cij=0,那么 L c o n i j L^{ij}_{con} Lconij的值也为零,它们的距离 d ( z i , z j ) d(z_i,z_j) dzizj将只出现在其他项的分母中。因此,它们的距离将有负的梯度,并被优化到更远。

将BCE损失表示为 L B C E L_{BCE} LBCE,作者的方法的总体训练损失为: L = L B C E + γ L c o n L = L_{BCE}+ γL_{con} L=LBCE+γLcon。参数γ控制了损失之间的权衡。

3. 实验效果

消融试验的 Micro-F1 (%) kNN和CL分别表示k个最近邻机制和对比学习目标
如上图所示,看到在不同的模型基础上该方案都有所提升。但如果是只做了对比学习,可能效果反而会下降。

RCV1-V2数据集上kNN机制的超参数分析

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

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

相关文章

玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!

sql语句group by使用详解group by的基本语法基本语法什么是分组查询(一个字段)多个字段的分组查询1.两个字段的分组查询2.三个字段及N个字段进行分组查询having子句的使用基本语法having是干什么的演示分组查询select关键字后面列名书写的注意事项group by的基本语法 基本语法…

入门必写项目之图书管理系统(分析详解+完美运行+代码可拿)

文章目录一、需求分析二、思路分析三、包分类四、模块代码展示1.1书籍类(Book)实现1.2书架类(BookList类)实现2.1功能接口(IOperation)实现2.2增加图书(Addoperation)实现2.3删除图书…

家庭实验室系列文章-电脑如何配置网络唤醒 (WOL)?

前言 其实这个专题很久很久之前就想写了,但是一直因为各种原因拖着没动笔。 因为没有资格,也没有钱在一线城市买房 (😂😂😂); 但是在要结婚之前,婚房又是刚需。 我和太太最终一起在一线城市周边的某二线城…

Pyspark学习笔记小总

pyspark官方文档: https://spark.apache.org/docs/latest/api/python/index.html pyspark案例教程: https://sparkbyexamples.com/pyspark-tutorial/ 1. 写在前面 这篇文章记录下最近学习的有关Pyspark以及用spark sql去处理大规模数据的一些常用语法,之前总觉得p…

中小企业办公自动化系统设计与实现(SSH)

目 录 摘 要 I ABSTRACT II 目 录 IV 第1章 绪论 1 1.1 课题背景 1 1.1.1 办公自动化概述 1 1.1.2 中小企业办公模式的现状 2 1.2 研究意义 3 1.3 设计技术及开发环境 5 1.3.1 设计技术 5 1.3.2 开发环境 7 第2章 可行性分析 9 2.1 组织和管理可行性 9 2.2 经济可行性 9 2.3 技…

动态规划模板总结(1)

动态规划思想(1) 背包问题 ​ 分类: 01 背包问题 ​ 含义:每个物体最多选1次,在不超过总体积的情况下价值最大图解: f(i,j)表示的是集合的某种属性,是个值。 集合是所有选法 i 只从前i个中选 朴素实现 #include&…

ElasticSearch是什么?ElasticSearch在SpringBoot中怎么用?SpringBoot整合ElasticSearch

写在前面: 继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 3.4.3.4 ElasticSearch(ES) 3.4.3.4.1 介绍 是一个…

MySQL JDBC编程

✏️作者:银河罐头 📋系列专栏:MySQL 🌲“种一棵树最好的时间是十年前,其次是现在” 文章目录前置知识APIJDBC的使用安装数据库代码插入操作查找操作前置知识 API API(Application Program Interface)被定义为应用程…

金属纳米颗粒图像分割和计数

代码下载链接,直接上程序运行的效果: 为了便于大家学习,把原图也都贴上了:

乐趣国学—品读《弟子规》中的“亲仁”之道

文章目录亲仁同是人 类不齐 流俗众 仁者希果仁者 人多畏 言不讳 色不媚能亲仁 无限好 德日进 过日少不亲仁 无限害 小人进 百事坏亲仁 “亲仁”,亲是亲近、学习的意思,亲近那些有道德、有学问、有人生境界、有情操的人,这是讲择师。一个人的学…

【Redis】配置项与发布订阅

一、配置项 redis相关配置项都存放在redis.conf文件中,暂时只列举常见的几个,其余的工作中用到再回来更新 1、网络 bind:指定redis只能接受来自此IP绑定的网卡的请求,注意此默认值默认外网是不可访问的,如果想要开启…

Unity3D制作塔防类游戏

演示 功能简介 制作细节详解 演示 资源包:链接:https://pan.baidu.com/s/15MMtYeKkNk5xChvCx0EckQ?pwdd1ub 提取码:d1ub 对应视频教学:01-开始介绍和创建工程_哔哩哔哩_bilibili 功能简介 分为蓝,紫,粉,红四…

[iOS]UI分析工具Reveal

Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局。 去官网下载安装Reveal,启动后样式如下。 下面介绍一下如何在非越狱设备和越狱设备上用Reveal工具分析UI 一、非越狱设备用Reveal分析UI 1.安装MonkeyDev 安装流程可查看前文[iOS]…

2. Java线程模型

1. 操作系统线程 无论使用何种编程语言编写多线程程序,最终都是通过调用操作系统的线程来执行任务。线程是CPU调度的最小执行单元。 线程有多种实现方式,常见的有:内核线程、用户线程、混合线程。 不同线程模型的主要区别在于线程的调度方不…

bat脚本启动Java服务

bat脚本启动Java服务1.终端cmd窗口运行jar2. bat脚本启动jar包3.后台启动bat脚本4. 运行bat只启动一次jar服务及停止脚本5.注意事项6.所用资源1.终端cmd窗口运行jar Java项目一般会被打包成jar后启动,在windows系统中可以通过终端窗口cmd启动jar包,即在…

5G无线技术基础自学系列 | 移动通信网络的架构

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 第五代(5thGeneraton, 5G) …

计算机中的第一个伟大发明(IR/IAR)

计算机工具的普及极大的推动了科技领域的发展以及提高人们生活的便捷性,那么在其中有哪些举足轻重的发明呢?本节我们来了解一下计算机中第一个伟大的发明:指令寄存器和指令地址寄存器 回顾在步进器加持下的两数两加 前面提到两个数相加的执行…

PyCharm运行PyQT6 (四) 百篇文章学PyQT

本文章是百篇文章学PyQT的第四篇,本文讲述如何使用PyCharm成功运行PyQT6,PyCharm在配置过程中会遇到很多问题,博主在本篇文章中将遇到和踩过的坑总结出来,可以供大家参考,希望大家安装顺利。包括 安装、遇到问题的解决…

Intel芯片、AMD显卡有多强?M1系列呢?

我们知道英特尔是半导体行业和计算创新领域的全球领先厂商 ,创始于1968年。如今,英特尔正转型为一家以数据为中心的公司 。英特尔与合作伙伴一起,推动人工智能、5G、智能边缘等转折性技术的创新和应用突破 ,驱动智能互联世界。…

【由浅入深 - Java笔记】玩转List:List过滤和筛选

文章目录List过滤:Comparator、Comparable 和 Stream1. 使用list的Stream进行筛选2. 增强for循环遍历元素,进行筛选3. 使用list.foreach遍历4. 使用iterator遍历5. 视频笔记List过滤:Comparator、Comparable 和 Stream 花时间精力去凿许多浅井…