论文笔记--PTR: Prompt Tuning with Rules for Text Classification

news2024/9/22 7:31:10

论文笔记--PTR: Prompt Tuning with Rules for Text Classification

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 Pre-training & Fine-tuning & Prompt-based Fine Tuning
    • 3.2 PTR(Prompt Tuning with Rules)
    • 3.3 task decomposition
    • 3.4 Sub-prompts composition
    • 3.5 多个label words的情况
  • 4. 文章亮点
  • 5. 原文传送门
  • 6. References

1. 文章简介

  • 标题:PTR: Prompt Tuning with Rules for Text Classification
  • 作者:Xu Han, Weilin Zhao, Ning Ding, Zhiyuan Liu, Maosong Sun
  • 日期:2022
  • 期刊:AI Open

2. 文章概括

  文章提出了PTR(Prompt Runing with Rules)用于文本多分类任务,核心思想在于将任务分解为子任务,然后根据预先定义的一些sub-prompts组合成新的prompt,从而更好地挖掘模型蕴含的知识。

3 文章重点技术

3.1 Pre-training & Fine-tuning & Prompt-based Fine Tuning

  Pre-training一般通过BERT[1]完形填空来达成训练,如下图(a)所示,我们随机掩码一些token,然后再根据上下文预测这些token。
  在一些任务中,我们要根据task的特性对模型进行微调,也就是Fine-tuning(FT),如下图(b)所示,FT阶段我们会在下游任务数据上微调模型的参数,从而使得模型在特定任务上表现更好。
  但上述预训练和FT由于训练目标(完形填空VS分类/…)的差异会存在gap,为了解决上述gap,我们常用prompt-based FT来进行微调,如下图©所示,我们将标注数据嵌入到prompt中,这样下游任务目标也可以转化为一个完形填空式任务。
  但针对关系提取等较为复杂的NLP任务时,上述prompt-based FT很难挑选合适的prompt和label words来支撑推理,此时可以采用auto-generated prompt方法,让模型自己生成prompt,如下图(d)所示。
  但上述auto-generated prompt会产生额外的计算,为此我们可以通过Soft Prompt来解决,即下图(e),在hard prompt基础上进行梯度搜索。但soft prompt的问题时模型参数要足够大才会有效。
PFPF

3.2 PTR(Prompt Tuning with Rules)

  为了解决上述问题,文章提出了PTR,可以将单个复杂任务分解为几个简单的子任务,然后设计这些子任务的sub-prompt,再将sub-prompts整合成一个prompt。
  具体来说,给定文本分类任务 T = { X , Y } \mathcal{T}=\{\mathcal{X}, \mathcal{Y}\} T={X,Y},文章将任务分解为一系列条件函数 F \mathcal{F} F f ∈ F f \in \mathcal{F} fF用于决定单个条件是否满足。如下图第一个例子所示,我们考虑一个关系提取任务"person:parent",给定句子"Mark Twain was the father of Langdon",我们要判定其中实体的关系。为此文章将任务分解为1) f e s ( ⋅ , ⋅ ) f_{e_s}(\cdot, \cdot) fes(,): "Mark Twain"是一个person 2) f e o ( ⋅ , ⋅ ) f_{e_o}(\cdot, \cdot) feo(,): “Langdon"是一个person 3) f e s , e o ( ⋅ , ⋅ , ⋅ ) f_{e_s, e_o}(\cdot, \cdot, \cdot) fes,eo(,,): “Mark Twain"和"Langdon"的关系为”'s Parent was”,写成表达式即为 f e s ( a , p e r s o n ) ∧ f e s , e o ( a , ′ s   p a r e n t   w a s , b ) ∧ f e o ( b , p e r s o n ) f_{e_s}(a, person) \land f_{e_s, e_o}(a, 's\ parent\ was, b) \land f_{e_o}(b, person) fes(a,person)fes,eo(a,s parent was,b)feo(b,person),其中 e s , e o e_s, e_o es,eo分别代表subject/object实体。
PTR示例

3.3 task decomposition

  上述思想中一个关键的技术为如何将任务进行分解。文章利用了各个数据集中的标注信息来得到结构化信息,比如意图分类中,“card_activating”和"card_linking"均包含"card",从而我们可以将任务拆分为"card"部分和后缀部分。根据类似的规则,可以将文本多分类任务表示为层级分类格式,并根据每一层级设计一个条件函数。
  对于每个条件函数 f ∈ F f\in\mathcal{F} fF,文章手动设计一个与之对应的sub-prompt。下表展示了文章针对关系提取任务设计的一些prompt。比如针对类别为"person:country_of_birth",文章设计的prompt为" < S 1 > <S1> <S1>. The person < E 1 > <E1> <E1> was born is the country < E 2 > <E2> <E2>",其中 < S 1 > <S1> <S1>表示原句, < E 1 > , < E 2 > <E1>, <E2> <E1>,<E2>表示subject/object实体。

条件函数

3.4 Sub-prompts composition

  将子任务分解之后,我们可以得到每个任务对应的sub-prompt,接下来需要将这些sub-prompts进行整合。考虑到 f e s , e o ( a , ′ s   p a r e n t   w a s , b ) f_{e_s, e_o}(a, 's\ parent\ was, b) fes,eo(a,s parent was,b)的概率可能基于 f e s ( a , p e r s o n ) f_{e_s}(a, person) fes(a,person) f e o ( b , p e r s o n ) f_{e_o}(b, person) feo(b,person),文章考虑将所有sub-prompts整合为一个prompt:直接concat所有promp,即 T ( x ) = [ T f e s ( x ) ; T f e s , e o ( x ) ; T f e o ( x ) ; ] = x   t h e   [ M ] 1   e s   [ M ] 2   [ M ] 3 [ M ] 4   t h e   [ M ] 5   e o T(x) = [T_{f_{e_s}}(x);T_{f_{e_s, e_o}}(x);T_{f_{e_o}}(x);] \\= x\ the\ [M]_1\ e_s\ [M]_2\ [M]_3 [M]_4\ the\ [M]_5\ e_o T(x)=[Tfes(x);Tfes,eo(x);Tfeo(x);]=x the [M]1 es [M]2 [M]3[M]4 the [M]5 eo。其中 ; ; ;表示sub-prompts之间的聚合操作,对应的联合概率为 p ( y ∣ x ) = ∏ j = 1 n p ( [ M ] j = ϕ j ( y ) ∣ T ( x ) ) ∑ y ‾ ∈ Y ∏ j = 1 n p ( [ M ] j = ϕ j ( y ‾ ) ∣ T ( x ) ) (1) p(y|x) = \frac {\prod_{j=1}^n p([M]_j = \phi_j(y) | T(x))}{\sum_{\overline{y}\in\mathcal{Y} \prod_{j=1}^n p([M]_j = \phi_j(\overline{y}) | T(x))}} \tag{1} p(yx)=yYj=1np([M]j=ϕj(y)T(x))j=1np([M]j=ϕj(y)T(x))(1),其中 n n n为template T ( x ) T(x) T(x)中的掩码个数。推理阶段我们直接采用上式来预测每个mask即可。
  在训练阶段,我们会考虑将独立概率和联合概率结合,最终的PTR的损失函数为 L = 1 ∣ X ∣ ∑ x ∈ X ( L i n d e p ( x ) + L j o i n t ( x ) ) = 1 ∣ X ∣ ∑ x ∈ X [ − 1 n ∑ j = 1 n log ⁡ p ( [ M ] j = ϕ j ( y x ) ∣ T ( x ) ) − log ⁡ p ( y x ∣ x ) ] \mathcal{L} = \frac 1{|\mathcal{X}|} \sum_{x\in\mathcal{X}} (\mathcal{L}_{indep}(x) + \mathcal{L}_{joint}(x))\\=\frac 1{|\mathcal{X}|} \sum_{x\in\mathcal{X}} \left[-\frac 1n \sum_{j=1}^n \log p([M]_j = \phi_j (y_x) | T(x)) -\log p(y_x|x)\right] L=X1xX(Lindep(x)+Ljoint(x))=X1xX[n1j=1nlogp([M]j=ϕj(yx)T(x))logp(yxx)],其中 log ⁡ p ( y x ∣ x ) \log p(y_x|x) logp(yxx)由(1)定义。

3.5 多个label words的情况

  针对一些场景,同一个y值可能对应多个label words。如情感分类中positive可能对应"great, good"等,此时我们需要调整上面的等于关系为包含关系,特别地我们可以针对每个label words增加权重,最后的概率可表示为 1 m ∑ k = 1 m λ k p ( [ M ] j = w j , k ∣ T ( x ) ) \frac 1m \sum_{k=1}^m \lambda_k p([M]_j = w_{j,k}|T(x)) m1k=1mλkp([M]j=wj,kT(x)),其中 λ k \lambda_k λk为每个label word的权重,默认为1。

4. 文章亮点

  文章提出了PTR,一种可以将复杂NLP任务进行分解,并通过将每个子任务的sub-prompt进行整合得到最终的prompt。文章在关系分类、实体提取和意图分类上进行了数值试验,结果表明,PTR相比于FT方法效果大幅提升,和其它prompt-based FT方法相比也有小幅提升或追平SOTA。文章论证了“预训练模型中包含足够多的下游任务相关知识,我们可以通过增加规则来用合适的prompt引导模型作出正确的推理。”

5. 原文传送门

PTR: Prompt Tuning with Rules for Text Classification

6. References

[1] 论文笔记–BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

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

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

相关文章

平衡二叉搜索树--AVL详解剖析

目录 一、什么是AVL树 二、AVL树的作用 三、树节点的定义 四、节点的插入 五、旋转 1.左单旋 2.右单旋 左右双旋代码 &#xff1a; 4.右左双旋 一、什么是AVL树 AVL树就是二叉搜索树的进一步的优化&#xff0c;二叉搜索树虽可以缩短查找的效率&#xff0c;但是当数据有…

SDN系统方法 | 1. 概述

随着互联网和数据中心流量的爆炸式增长&#xff0c;SDN已经逐步取代静态路由交换设备成为构建网络的主流方式&#xff0c;本系列是免费电子书《Software-Defined Networks: A Systems Approach》的中文版&#xff0c;完整介绍了SDN的概念、原理、架构和实现方式。原文: Softwar…

SpringFactoriesLoader解析

一、SpringFactoriesLoader 介绍 1.1 SpringFactoriesLoader 简介 SpringFactoriesLoader 工厂加载机制是 Spring 内部提供的一个约定俗成的加载方式&#xff0c;与 java spi 类似&#xff0c;只需要在模块的 META-INF/spring.factories 文件中&#xff0c;以 Properties 类型…

DOT slam论文翻译

DOT:视觉SLAM的动态目标跟踪 摘要 - 在本文中&#xff0c;我们提出了DOT(动态目标跟踪)&#xff0c;这是一个添加到现有SLAM系统中的前端&#xff0c;可以显着提高其在高动态环境中的鲁棒性和准确性。DOT结合实例分割和多视图几何来生成动态对象的掩模&#xff0c;以允许基于刚…

实现 Rollup 插件alias 并使用单元测试提高开发效率

本篇文章是对 实现 Rollup 插件 alias | 使用 TypeScript 实现库的基本流程 | 使用单元测试提高开发效率 的总结。其中涉及到开发一个组件库的诸多知识点。 实现一个经常用的 rollup 插件 alias 首先执行npm init命令初始化一个package.json文件&#xff0c;因为插件使用了ty…

DevOps系列文章之Argo CD 使用

一、什么是 argo cd Argo CD 是用于 Kubernetes 的声明性 GitOps 连续交付工具。 二、为什么使用 argo cd Argo CD 可在指定的目标环境中自动部署所需的应用程序状态&#xff0c;应用程序部署可以在 Git 提交时跟踪对分支&#xff0c;标签的更新&#xff0c;或固定到清单的特…

测试开发之路 ---- 可读性,可维护性,可扩展性

目录 前言 测试框架与测试脚本的目标&#xff08;部分&#xff09; 分层 使用类似 xml 这种可扩展性强的语义存储数据 代码复用&#xff1a;抽象一切可抽象的&#xff0c;减少一切可能的代码相似与重复 活用 java 注解和反射&#xff08;python 中应该也有相关的机制&…

如何从视频中提取音频?分享三个免费的方法给大家!

在数字时代&#xff0c;视频和音频的使用越来越广泛。有时&#xff0c;您可能希望从视频中提取音频&#xff0c;以便单独使用或与他人分享。无需购买昂贵的软件或具备专业技能&#xff0c;下面将介绍三种免费的方法&#xff0c;帮助您从视频中提取音频。这些方法简单易行&#…

Unity学习笔记--siki学院保卫萝卜

生命周期&#xff1a; 在同一个脚本中的执行先后顺序&#xff1a;先左后右 Inspector 赋值 > 外部调用 > Awake > OnEnable > Start 脚本对象的失活与激活不作用于Awake方法&#xff0c;当方法中只有Awake方法时&#xff0c;控制脚本激活失活的对勾会消失掉 当…

vue3 中ref的函数用法

简介 这里说的ref不是响应式ref,是用在组件身上的ref标识&#xff0c;一般都是ref“某一个字符串”&#xff0c;本文介绍第二种用法&#xff0c;ref“()>{}”,对没错&#xff0c;ref可以等于一个回调函数 ref可以是一个回调 <el-input:ref"(vc: any) > (inputAr…

lwip-2.1.3自带的httpd网页服务器使用教程(三)使用CGI获取URL参数(GET类型表单)

上一篇&#xff1a;lwip-2.1.3自带的httpd网页服务器使用教程&#xff08;二&#xff09;使用SSI动态生成网页部分内容 认识URL参数 在上网的时候&#xff0c;我们经常会见到在网址后面带有?AB&CD这样的语法格式。例如&#xff1a;https://blog.csdn.net/ZLK1214/articl…

OpenCV的HSV颜色空间在无人车中颜色识别的应用

RGB属于三基色空间&#xff0c;是大家最为熟悉的&#xff0c;看到的任何一种颜色都可以由三基色进行混合而成。然而一般对颜色空间的图像进行有效处理都是在HSV空间进行的&#xff0c;HSV(色调Hue,饱和度Saturation,亮度Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角…

如何撤销git上一次的commit(或已push)

如何撤销git上一次的commit&#xff08;或已push&#xff09; 当多人开发时&#xff0c;我们本地commit后&#xff0c;刚要push&#xff0c;发现忘记pull最新代码&#xff0c;此时会有冲突push失败&#xff0c; 我们想要撤销最近的一次commit 我们先简单介绍一下git git有三大…

GreenPlum数据库日常维护

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第3部分:添加跟踪算法

介绍 对象跟踪是随着时间的推移识别一系列帧中的特定对象或多个对象的过程。它涉及定位对象在每个帧中的位置并跟踪其跨帧的移动。对象跟踪在各个领域都有广泛的应用,包括监控、机器人、自动驾驶、运动分析等。 跟踪算法使用各种技术(例如颜色直方图、运动分析、深度学习等)…

【多线程】(二)线程安全问题与线程同步

文章目录 一、多线程带来的风险1.1 观察线程不安全1.2 线程安全概念1.3 线程不安全的原因1.4 线程安全的解决方法 二、synchronized关键字2.1 synchronized 的特性2.2 synchronized 使用示例2.3 Java 标准库中的线程安全类 三、volatile关键字3.1 保证内存可见性3.2 禁止指令重…

Java反射的应用:动态代理

代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 对于静态代理&#xff0c;特征是代理类和目标对象的类都是在编译期间确定下来&#xff0c;不利于程…

基于FPGA的按键消抖

文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四&#xff1a;总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动&#xff1a;按键抖动通常的按键所用开关为机械弹性开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性…

怎么使用Netty解码自定义通信协议

网络协议的基本要素 一个完备的网络协议需要具备哪些基本要素 魔数&#xff1a;魔数是通信双方协商的一个暗号&#xff0c;通常采用固定的几个字节表示。魔数的作用是防止任何人随便向服务器的端口上发送数据。协议版本号&#xff1a;随着业务需求的变化&#xff0c;协议可能…

SAP顾问生涯闲记:在SAP工作是什么体验

又有一段时间没更新自己的公众号了&#xff0c;为什么突然决定新开一篇SAP顾问生涯闲记系列的文章呢&#xff0c;是因为最近很荣幸地当选了SAP雇主品牌推广大使&#xff0c;作为SAP官方的推广大使在收获这份荣誉的同时&#xff0c;也承担了一些工作以及责任。 集结完毕︱SAP雇…