使用chatgpt进行文本分类指令 广告行业中那些趣事系列63:使用chatgpt类大模型进行文本分类任务
摘要:本篇主要介绍了使用类大语言模型进行文本分类任务。首先介绍了背景,论文中提出了一种使用LLM模型基于线索收集和推理CARP进行文本分类任务;然后介绍了设计,主要包括任务描述、示例和输入文本,还介绍了三种不同的示例获取方法;接着介绍了收集线索和推理流程;然后通过实验对比了微调模型、zero-shot和few-shot场景细使用三种不同的提示词进行文本分类的效果,还通过消融实验对比了示例数量、示例中不同的组件元素、不同标签结果词、不同线索词以及示例顺序对模型效果的影响。最后在我们实际的业务场景中实践了CARP提示词策略。对于希望使用类大语言模型上进行数据标注、文本分类和关键词抽取等任务感兴趣的小伙伴可能有帮助。
下面主要按照如下思维导图进行学习分享:
01.背景介绍
调研通过/gpt4等大语言模型LLM进行文本分类、关键词抽取等任务,辅助我们标注语料,提升文本分类效果等。
论文资料:/abs/2305.08377
项目地址://GPT-CLS-CARP
尽管 GPT-3 等大规模语言模型 (LLM) 取得了显著的成功,但它们在文本分类任务中的性能仍然明显低于经过微调类的模型,主要原因有两个:
(1)缺乏处理复杂语言现象(如强化、对比、反讽等)的推理能力;
(2)在上下文学习中,允许的标记token数量有限。
为了解决这个问题,论文作者构建了一套基于线索推理的CARP(Clue And )方法。整体思路:首先提示LLM大语言模型寻找表面线索,这里的线索可以是关键词、短语、上下文信息、语义、语义关系、语气、引用等;然后根据这些线索词进行推理得到最终决策。
为了解决大模型token限制的问题,CARP使用微调后模型在监督数据集上使用KNN搜索示例用于上下文学习ICL( in- ),通过这种方法不仅可以使模型可以利用LLM 的泛化能力,而且还可以使用特定任务下全量标注数据集提供的知识。
通过实验,CARP在五个常用的文本分类公共数据集中有四个达到了SOTA效果。更值得惊喜的是,使用CARP方法每个类仅采样16条的文本分类效果就可以媲美每个类别使用1024条样本的有监督学习模型,使用少量的标注样本就可以达到大量样本的效果,对于我们实际业务场景中,不仅可以减少样本标注数量,节约标注人力,而且还可以有效提升文本分类模型效果。
02.设计.1 内容
CARP的内容主要包括以下三部分:
(1)任务描述。以情感分类任务为例,任务描述可以表示为: the of the input as or ;
(2)提供示例。对于few-shot场景需要提供K个示例,主要有两个目的:第一个目的是为LLM模型做决策提供知识,可以有效提升效果;第二个目的是提供LLM模型输出需要遵循的格式,使得文本语言更容易转化成标签;
(3)输入。用于分类的文本输入数据。
2.2 获取示例
对于few-shot场景需要提供示例,论文中主要有两种获取示例的策略:
(1)随机采样。从训练集中每个类别随机采样K条样本;
(2)KNN搜索样本。随机采样策略的优点是比较简单,缺点是很难保证获取的示例和输入样本是语义相关的。为了解决这个问题,通过KNN搜索从训练集中获取和输入样本语义相近的示例。这里分别使用两种来表征文本:
[1]使用对比学习模型获取语句。使用Sup---Large 作为编码器,这种方法的好处在于通过可以获取语义相近的样本示例,但是找到的样本可能标签不同。
[2]使用微调后的模型获取语句。使用这一类模型虽然可以搜索到语义相似的实例,但是不一定适合特定的文本分类任务。为了解决这个问题,CARP使用训练集微调之后的模型作为KNN搜索的编码器。首先使用训练集在模型上微调,然后获取[CLS]句向量用于KNN搜索。通过这种方式,不仅可以利用LLM 的泛化能力,而且还可以使用特定任务下全量标注数据集提供的知识。
03.收集线索和推理3.1 收集线索和推理流程3.1.1 收集线索
对于文本序列,线索是像关键词、短语、上下文信息、语义、语义关系、语气、引用等这样的局部事实证据。举例说明:
输入: turns in a that curls at the edges; it’s so you want to hate it.
线索:"", "", "want to hate it" are clues for the of the input .
ps:输入文本翻译成中文
翻译:斯蒂尔斯的剧本充满活力,边缘卷曲;它太聪明了,你想讨厌它。
翻译:斯蒂尔斯创作的故事情节犀利而紧凑,弯曲的角度让人着迷;它如此聪明让你不由得想去憎恨它。
3.1.2 推理
推理阶段,考虑到例如否定、强化、反讽等语言现象,LLM需要根据上面得到的线索信息去挖掘更深层观点,拼接局部证据形成最终决定。对于上面的例子进行推理过程:
(1) The " " that the is of a high and is well-.
(2)The "curls at the edges" that the is .
(3) The "so you want to hate it" is a , which that the is the use of the word "hate".
翻译:
(1)“精彩的剧本”一词意味着这个剧本的质量很高,写得很好 ;
(2)“卷边”的这个词语意味着这个剧本是巧妙地写成的;
(3)“太聪明以至于你想恨它”是一个矛盾的陈述,尽管使用了“恨”这个词语,但它暗示了情感是积极的。3.1.3 做决策
基于上面的线索进行推理,得到如下决策:
, the clues and point to a for the input .
将收集线索和推理结合使用具有以下优点:
(1)它促使模型逐步思考和做出决策:收集线索更侧重于关键词等表面特征,而推理则基于表面特征进行更深入的论证。这个过程更好地模拟了人类决策的方式;
(2)收集线索和推理为人类干预提供了一个通道:在少样本学习中,需要在实例中提前准备好线索和推理,我们可以根据需要进行修改。这对于在提示构建阶段进行纠错很有帮助;
(3)从可解释性和不确定性估计的角度来看,少样本学习中的线索和推理是人类可读的影响函数;
(4)在少样本学习中,和数据对(文本、标签)相比,在提示中结合收集线索和推理过程更符合指令调整目标。通过这种方式可以大大降低LLM的训练目标与下游任务的上下文学习之间的差异。
3.2 zero-shot场景下的推理流程
zero-shot场景下不需要提供示例,也就不需要提供CLUES和,只需要让模型输出CLUES和,如下:
This is an fier for .
First, list CLUES (i.e., , , , , , tones, ) for the of the input.
Next, a from clues and the input to the .
, the of input as or clues, the and the input.
INPUT:
CLUES:
:
:
翻译:
这是一个针对意见片段的情感分类器。
首先,列出用于确定输入整体情感的线索(关键字、短语、语境信息、语义关系、语义含义、语调和参考)。
接下来,从提示和输入中推导出诊断推理过程以确定总体情感。
最后,考虑线索,推理过程和输入,确定输入的情感为积极或消极。
下图展示了zero-shot场景下不同方法的文本分类效果,其中a部分是常规方法,b部分是基于思维链的方法,c是论文提出的CARP的方法。
图1 zero-shot场景下不同方法的文本分类效果3.3 few-shot场景下的推理流程
few-shot场景下需要提前准备好训练集样本对应的CLUES和,这样就可以作为候选信息提供给输入样本。输入样本根据KNN检索找到K条示例用于文本分类。如下:
This is a fier for input .
First,List CLUES(i.e.,,, , , , tones, ) that the of the input.
Next, the from (i.e., clues, input) that the .
, based on clues, the and the input, the of input as or .
input:
clues:
:
:
input:
clues:
:
: ... ...
input:
clues:
:
:
下图展示了few-shot场景下(使用一条示例)不同方法的文本分类效果:
图2 few-shot(K=1)场景下不同方法的文本分类效果
上图中a部分展示了普通方法,b部分展示了基于思想链Chain-of-(CoT)的方法,c部分展示了CARP的promp方法。可以看出CARP能识别出press the key是消极的。
3.4 投票确定最终决策
传统的文本分类模型会得到确定的分类结果,而基于上下文学习的LLM模型生成结果时由于采用多种不同的采样策略会导致多次请求返回结果存在差异,论文中使用如下两种投票策略:
(1)多数投票。将投票频率高的作为最终结果;
(2)加权投票。基于加权求和得到最终投票结果。
04.实验结果4.1 整体对比不同模型效果
下图对比了五种公共数据集中有监督学习模型、zero-shot场景下三种方法和few-shot场景下使用随机采样、的KNN检索和微调模型的KNN检索下的文本分类效果:
图3 整体对比不同模型效果
从上图实验结果中可以看出:
(1)LLM大语言模型中few-shot效果要明显优于zero-shot;
(2)对于zero-shot场景中,论文提出的CARP提示方法要优于常规的和基于思维链Chain-of-(CoT)的方法;
(3)对于few-shot场景中,使用微调之后的模型进行KNN检索效果(经过投票之后效果更优)要优于随机采样和基于获取句向量特征进行KNN检索;
(4)整体来看效果,使用LLM+CARP+few-shot》有监督学习模型》LLM+CoT+few-shot》LLM+zero-shot。
4.2 对比不同样本下模型效果
下图对比了每个类别分别获取n个样本下不同模型的效果:
图4 对比不同样本下模型效果
从上图实验结果中可以看出:少样本情况下,LLM模型效果整体优于有监督学习的微调模型,并且样本数量越小,差距越明显。说明LLM+在小样本情况下有明显的优势,尤其每个类别使用16条样本,LLM模型很容易达到90%的效果。
4.3 对比域自适应效果
下图对比了模型在不同分布数据集下的效果,比如使用SST-2数据集训练模型,分别在SST-2和Yelp测试集上查看模型效果,
图5 对比模型域自适应效果
从上图中可以看出,有监督学习模型在域自适应方面效果要差于LLM+CARP模型。
05.消融实验
下面对CARP进行消融实验查看模型效果的影响因素。
5.1 示例数量对模型效果的影响
下图是常规和CARP下不同示例数量对模型效果的影响:
图6 不同示例数量对模型效果的影响
上图中左边部分是使用常规在few-shot场景下的模型效果情况,可以看出三种采样策略效果差距不明显;右边部分是CARP在few-shot场景下的模型效果,整体来看效果依次是FT KNN-》 KNN-》 。
5.2 示例中不同组件对模型效果的影响
下图展示了示例中text、clue、和label对模型效果的影响:
图7 示例中不同组件对模型效果的影响
从上图中可以看出,示例中各组件对模型效果影响从大到小依次是text》clue》》label。
5.3 不同标签结果词 label words对模型效果的影响
下图展示了使用不同策略的标签结果词对模型效果的影响:
图8 使用不同策略的标签结果词对模型效果的影响
上图中主要对比了以下六种标签结果词:
(1) index:标签索引的数字,比如1,2...;
(2) words:标注词,比如情感分类例子中的, ;
(3) words:同义词,比如great, ;
(4) words:反向词,比如用代表积极的文本,而代表消极的文本;
(5) words:随机词,随机从词表中选取词作为标签结果词;
(6) :特殊符号的词,比如使用
代表积极类别,代表消极类别。
可以发现使用标注词效果是最好的,而反向词会使模型效果急速下降。
5.4 不同线索词对模型效果的影响
线索词主要包括关键词、短语、上下文信息、语义、语义关系、语气、引用等,下面分别对了关键词/短语、上下文信息、语义关系、语气和引用对模型效果的影响,可以看出关键词/短语对模型效果影响最大,引用对模型效果影响最小。
图9 不同线索词对模型效果的影响5.5 示例顺序对模型效果的影响
论文作者发现提供的示例顺序对CARP模型的效果也有一定影响,分别对比了随机顺序、从高到低和从低到高三种示例顺序对模型效果的影响,整体来看根据相似度从低到高排序示例模型效果是最好的。
图10 示例顺序对模型效果的影响06.将CARP应用到我们实际的业务场景实践
:
这是一个输入文本识别是否和汽车标签有关的分类器。
第一步,列出和汽车标签相关的线索词(即关键词、短语、上下文信息、语义含义、语义关系、语气、参考资料)。
接下来,从已有的线索词和输入中推导出诊断推理过程。
最后,根据线索、推理和输入将输入文本识别为汽车或者“其他”。
示例:
输入:五菱荣光单排和双排有什么区别
线索词:五菱荣光、单排、双排
推理流程:1. 五菱荣光是汽车品牌和车型。
2. 单排和双排可能是指车辆的座位排列方式。