【提示学习】HPT: Hierarchy-aware Prompt Tuning for Hierarchical Text Classification

news2025/5/31 21:08:21

论文信息

名称内容
论文标题HPT: Hierarchy-aware Prompt Tuning for Hierarchical Text Classification
论文地址https://arxiv.org/abs/2204.13413
研究领域NLP, 文本分类, 提示学习, 层级标签文本分类
提出模型HPT(Hierarchy-aware Prompt Tuning)
来源EMNLP 2022
源码https://github.com/wzh9969/HPT

阅读摘要

  本文是较早把Prompt应用到层级多标签文本分类领域的论文。思路是把层级标签分层编入到Pattern中,然后修改损失函数以适应多标签的分类任务。

[0] 摘要

  作者在描述创新点和思路时,主要抓住gap这个词:

  1、使用预训练语言模型PLM微调做层级多标签文本分类的常规方法,与掩模语言模型(MLM)预训练任务之间存在巨大差距,所以要把分类任务移植为MLM的形式,来弥补差距。

  2、MLM任务是多分类任务,层级多标签分类是多标签分类任务,两者的损失函数不一样,存在差距。

  作者思路就是弥补上述两个差距

[1] 介绍

  层次文本分类HTC是一个多标签文本分类问题,分类结果对应于层次结构的一条或多条路径。

在这里插入图片描述
  上图中,(a)表示传统PLM解决HTC的模型结构,文本直接输入PLM里面去编码,层级标签信息会建模成树型或图型结构(通常是GAT,即图注意力网络)。

【注】由于文本编码模型这块已经有点饱和了,所以你可以看到现在好多硕士论文都在探索“标签相关性”的概念,这个概念就会与GAT或者图有关。

  尽管Fine tuning取得了成功,但GPT3的问世引起了大家对Prompt Learning的思考:Fine tuning可能限制了微调模型充分利用PLM中的知识。因此要使用Prompt,弥合PLM的下游任务和预训练任务之间的差距,从而充分挖掘PLM的潜力。

  当使用Prompt Learning(或者说MLM任务)解决HTC任务时,就会产生两个问题:

  1、掩模语言模型(MLM)的标签是平面的,HTC的层次结构标签怎么拓展到MLM任务上。

  2、MLM任务是多分类任务,层级多标签分类是多标签分类任务,如何设置损失函数。

  如上图中(b),作者把层级信息注入到MLM任务的Soft Pattern中,以解决问题1;使用零界多标签交叉熵损失解决问题2。

[2] 相关工作

[2.1] HTC

  根据使用标签层次结构的方式,HTC的现有工作可以分为局部方法和全局方法:局部方法为每个节点或级别构建分类器,而全局方法仅为整个图构建一个分类器。

  早期的全局方法忽略了标签的层次结构,并将问题视为扁平的多标签分类。后来,一些研究尝试通过元学习、强化学习和注意力模块来合并标签结构。虽然这些方法可以捕获分层信息,但通过结构编码器直接编码整体标签结构可以进一步提高性能。

[2.2] Prompt tuning

  主要介绍了Hard PromptSoft Prompt

[4] 方法

  介绍了两点:怎么把树形标签结构过渡到MLM任务中;怎么解决多标签文本分类的损失。
在这里插入图片描述

【注】如上图:
   part 1是模板,可以看到在常规文本输入之后,还拼接了一些特殊的伪标签;
   part 2是分层感知提示模块,标签树的每一层都做一个标记 t i t_i ti,放入模板中, t i t_i ti后面还跟了 e [ P R E D ] e_{[PRED]} e[PRED]来预测这个标记,经过MLM模型后,标记 t i t_i ti只会预测对应层级的标签,文中称之为层级约束Hierarchy Constraint
   part 3MLM任务的损失,许多Prompt Text Classification论文里面又称为auxiliary loss,其实是BERT会对输入随机mask掉15%后计算的损失,它和我们计算分类的损失可以认为是独立的,互不干扰;
   part 4是层级分类的损失函数,论文中没有使用常规的多标签分类损失BCELoss,而是提出了Zero-bounded Multi-label Cross Entropy Loss

[4.1] 分层感知提示

  层级约束

  为了合并标签层次结构,提出分层提示。由于标签层次结构是树状结构,因此基于层次结构的深度来构造模板。

  给定一个预定义的标签层次yh = (Y, E),深度为L,输入文本为x,则模板为[CLS] x [SEP] [V1] [PRED] [V2] [PRED]…”[vl] [pred] [sep]。特殊的[PRED]令牌进行标签预测,表示多标签预测。

  对于verbalizer,为每个标签yi创建一个可学习的虚拟标签单词vi,并通过对其对应标记的平均嵌入来初始化其嵌入vi。如图2中绿色部分所示,不预测一个槽中的所有标签,而是根据标签的层将标签分成不同的组,并约束[PRED]只预测一个层上的标签。为此,每个模板词[Vi]后面跟着一个[PRED]标记,用于第i层的预测。

  层级注入

  层级约束只引入了标签的深度,但缺乏它们的连通性与层级结构。为了解决标签层次的连通性问题,文章提出层级注入

  如part 2的蓝色部分,作者使用GAT来编码标签信息,并把层级信息注入到输入的模板中。

[4.2] 零界多标签交叉熵损失

  首先MLM任务是多类别分类,单标签分类,使用的是交叉熵损失,并不适用我们的层级多标签分类。

  常规的层级多标签分类使用的是二元交叉熵损失(BCELoss),但是作者说BCE忽略了标签之间的相关性,为了弥合这种多标签和多类别的差距,在本文中,我们期望所有目标标签的分数大于所有非目标标签的分数,而不是单独计算每个标签的分数。

  在论文中,作者提出了两种损失函数:多标签交叉熵损失(MLCE)和零边界多标签交叉熵损失(ZMLCE)。

  多标签交叉熵损失如下:

在这里插入图片描述

  其中 N p N^p Np表示目标标签集合, N n N^n Nn表示非目标标签集合, y i y_i yi是每个标签的sigmoid之后的概率。损失函数的目标是最大化目标标签的得分与非目标标签的得分之间的差距。然而,在实际推断过程中,上面的公式没法算。

  为了解决这个问题,引入了一个常数得分为0的锚定标签,并希望目标标签和非目标标签的得分都大于和小于0。这样,他们提出了零边界多标签交叉熵损失:

在这里插入图片描述

  它由两部分组成:第一部分是目标标签的得分,第二部分是非目标标签的得分。这样就很容易计算了。但是这个损失只是一层的损失,最后要求和。

在这里插入图片描述
  模型的总损失是每一层的 Z M L C E ZMLCE ZMLCE损失加上 M L M MLM MLM损失。

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

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

相关文章

SpringBoot AOP切面编程 使用案例

参考资料 Springboot AOP实现指定敏感字段数据加密 (数据加密篇 二)【SpringBoot-3】切面AOP实现权限校验:实例演示与注解全解【小家Spring】Spring AOP中Pointcut切入点表达式最全面使用介绍AOP编程过程中的Signature接口 本篇文章核心思想…

(详解)vue中实现主题切换的三种方式

目录 一、背景 二、实现思路 方法1:定义全局的CSS变量 方法2:切换已定义好的css文件 方法3:切换顶级CSS类名 (需使用css处理器,如sass、less等) 一、背景 在我们开发中我们会遇到像是需要切换程序风格、主题切换啦这种应用场景。 参考大佬…

经典智能合约案例之发红包

经典智能合约案例:发红包 角色分析:发红包的人和抢红包的人 功能分析: 发红包:发红包的功能,可以借助构造函数实现,核心是将ether打入合约; 抢红包:抢红包的功能,抢成…

Flume系列:案例-Flume 聚合拓扑(常见的日志收集结构)

目录 Apache Hadoop生态-目录汇总-持续更新 1:案例需求-实现聚合拓扑结构 3:实现步骤: 2.1:实现flume1.conf - sink端口4141 2.2:实现flume2.conf- sink端口4141 2.3:实现flume3.conf - 监听端口4141 …

32 KVM管理系统资源-管理虚拟内存热插

文章目录 32 KVM管理系统资源-管理虚拟内存热插32.1 概述32.2 约束限制32.3 操作步骤32.3.1 配置虚拟机XML32.3.2 热插并上线内存 32 KVM管理系统资源-管理虚拟内存热插 32.1 概述 在虚拟化场景下,虚拟机的内存、CPU、外部设备都是软件模拟呈现的,因此…

深度学习进阶篇-国内预训练模型[5]:ERINE、ERNIE 3.0、ERNIE-的设计思路、模型结构、应用场景等详解

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

旧键盘打字 两数之和

💕"不要因为别人的成功而感到沮丧,你的时机会来,只要你继续努力、坚持不懈。"💕 🐼作者:不能再留遗憾了🐼 🎆专栏:Java学习🎆 🚗本文章主要内容:使用哈希表的思…

2023年江苏省中职网络安全Web渗透测试解析(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问地址http://靶机IP/web1,分析页面内容,获取flag值,Flag格式为flag{xxx}; 2.访问地址http://靶机IP/web2,访问登录页面。用户user01的密码为1-1000以内的数,获取用户user01的密码,将密码作为Flag进行提交,Flag格式为…

Java数据结构之第十四章、泛型进阶

补充复杂示例&#xff1a; public class MyArray<E extends Comparable<E>> { ... } 表明E必须是实现了Comparable接口的 泛型基础内容 目录 一、通配符 二、通配符上界 三、通配符下界 一、通配符 ? 用于在泛型的使用&#xff0c;即为通配符 示例&#xf…

如何使用 Python Nornir 实现基于 CLI 的网络自动化?

在现代网络环境中&#xff0c;网络自动化已成为管理和配置网络设备的重要工具。Python Nornir 是一个强大的自动化框架&#xff0c;它提供了一个简单而灵活的方式来执行网络自动化任务。本文将详细介绍如何使用 Python Nornir 实现基于 CLI 的网络自动化。 1. Python Nornir 概…

jacoco增量覆盖率平台开发

先聊聊做这个平台的意义&#xff0c;从项目管理角度来说&#xff0c;测试说项目测试完成&#xff0c;该如何证明呢&#xff1f;一般情况下我们进行验收时没什么问题就算完成了&#xff0c;但是实际上测试很多情况并没有考虑到。所以该平台可以反哺测试的测试用例&#xff0c;让…

GO的服务

1.go的安装 1.1 确认版本go version go version go1.20.4 darwin/amd64 可以看到是macos10.14版本。如果是m1 需要安装对应的版本 1.2 用vscode 进行编写go的简单例子 先进入vscode的界面&#xff0c;新建一个目录为godemo&#xff0c;里面就是go的例子的工作目录&#xff0…

计算机的大小端存储模式(计算机小白必看!)

目录 1.什么是大端小端 2.为什么会有大小端模式之分呢&#xff1f; 3.如何判断当前机器为大端字节序还是小端字节序 本文将介绍计算机存储数据时的大小端问题 1.什么是大端小端 大端&#xff08;存储&#xff09;模式&#xff0c;是指数据的低位保存在内存的高地址中&…

可视化库seaborn常用操作介绍

目录 1.seaborn 概括2.Seaborn的调色板3.单变量绘图分析4.回归分析绘图5.分类图绘制6.FacetGrid使用7.Heatmap 1.seaborn 概括 seaborn库是一个用于数据可视化的Python库&#xff0c;它建立在matplotlib之上&#xff0c;可以让你轻松地创建各种美观的图表和图形。 在seaborn中…

致敬科技工作者:我们的世界因你们而美好

在我们的日常生活中&#xff0c;科技无处不在&#xff0c;而这一切离不开科技工作者的辛勤付出。作为一名科技从业者&#xff0c;我深深地理解并感悟到&#xff0c;科技工作者们的作用是不可替代的。 二十一世纪&#xff0c;科技的发展日新月异。我们见证了第一台计算机的发明…

RT1170启动详解:Boot配置、Bootable image头的组成

文章目录 1 基础知识2 BOOT配置2.1 BOOT_CFG配置2.2 BOOT_MODE 3 Bootable image3.1 文件格式3.2 Bootable image头的组成3.3 Bootable image的生成3.4 例&#xff1a;BootROM之non-XIP加载过程3.5 例&#xff1a;bin文件分析 1 基础知识 &#xff08;1&#xff09;BootROM Bo…

地面分割--Patchwork

文章目录 1问题定义2同心区域模型3按照区域划分的平面拟合4地面点似然估计&#xff08;GLE&#xff09;总结 patchwork是一种比较优秀的地面分割方法。其过程主要分为三个部分&#xff1a;同心圆环区域(CZM:concentric Zone Model)&#xff0c;按照区域划分的平面拟合(R-GPF:re…

OpenCV基础操作(5)图像平滑、形态学转换、图像梯度

import numpy as np import cv2 as cv from matplotlib import pyplot as plt一、图像平滑 1、2D卷积 我们可以对 2D 图像实施低通滤波&#xff08;LPF&#xff09;&#xff0c;高通滤波&#xff08;HPF&#xff09;等。 LPF 帮助我们去除噪音&#xff0c;模糊图像。HPF 帮助…

【数字信号处理】Goertzl算法详解推导及双音多频(DTMF)信号检测

Geortzel算法 【要点解析】 根据卷积公式 y ( n ) = ∑ m = − ∞ ∞ x ( m )

前端切图仔跑路真经

一、闭包 谈到闭包&#xff0c;我们首先要讨论的就是作用域。 1、作用域&#xff1a; 是指程序源代码中代码定义的范围。规定了如何设置变量&#xff0c;也就是确定了当前执行代码对变量的访问权限。 JavaScript采用词法作用域&#xff0c;也就是静态作用域&#xff0c;就是在…