作为标注员的LLM(四):开源大语言模型标注效果优化之Bias Calibration篇

关系型数据库数据安全图像处理

引言

系列第三期,笔者曾得出结论:ChatGLM2-6BQwen-7B-Chat在TNEWS数据集上,标注效果不如零样本分类模型 -- Siamese-UniNLUpaddleNLP

本着不抛弃不放弃的精神,在第四期,笔者尝试优化Qwen-7B-Chat的标注效果。

优化方向仍然是In-Context Learning,本期试验的3种技术如下:

  1. Noisy Channel Model
  2. Contextual Calibration(下文简称CC
  3. Domain-context Calibration(下文简称DC

实验表明,在TNEWS(新闻标题分类)和NLPCC2014-Task2(微博情感二分类)数据上, DC可明显提升Qwen-7B-Chat的Zero-Shot效果(+3%),是值得应用的技术 ;在Few-Shot下,DCCC提升了鲁棒性,但均未提升Few-Shot效果, Few-Shot还需再觅良方

背景知识

LLM进行分类的两种方法

有两种方法将LLM用于分类任务:

  • Generative Classifier:直接将LLM的output(即token)作为分类结果,有Greedy DecodeSample两种,第三期实验即采用Sample方法
  • 优点 :推理成本低,一次推理只需调用一次LLM
  • 缺点 :覆盖率 <= 100%,因为LLM的输出格式可能不规范
  • Discriminal Classifier:对每个类别y,计算P(y|x),本期的实验主要属于这类方法
  • 优点 :覆盖率 = 100%,由于可以拿到y的概率分布,扩展性强(可用于蒸馏、卡阈值等)
  • 缺点 :推理成本高,一次推理最多 需要调用 |Y|次LLM,其中|Y| = 标签数量

使用LLM计算P(y|x)的原理示意图如下。

picture.image

有两种基本方法计算P(y|x):

  1. Probability 。采取概率连乘的方式计算,即P(y|x) = P(y1|x) * P(y2|x,y1),因此,P(正面|“物美价廉”) = 0.8 * 0.99 = 0.792P(负面|“物美价廉”)= 0.1 * 0.99 = 0.099
  2. Average Log-Likelihood (简称Avg)。logP(y|x) = (logP(y1|x) + logP(y2|x,y1))/2,因此,P(正面|“物美价廉") = 0.8899P(负面|“物美价廉”) = 0.3146

前人论文[1]指出Avg的方法效果好,因此 本文采取Avg的方法来计算P(y|x)

Noisy Channel Model:反其道而行之

一般来说,分类模型通过P(y|x)来进行分类,但是Noisy Channel Model却使用P(x|y)

picture.image

理论依据如下:


            
P(y|x) = (P(x|y) * P(y)) / P(x)
            

            
由于P(x)与y无关,因此可用P(x|y) * P(y)近似
            

            
假设P(y)为均匀分布,则可采用P(x|y)来进行分类
        

在实现时,要计算P(x|y),只需将Prompt反着写,即将分类任务转化为生成任务:


            
原Prompt:文本:{input_text},标签:
            
现Prompt:标签:{label_name},文本:
        

直观上理解,Noisy Channel Model在分类时需逐字考虑,因此比较鲁棒。详细内容请参阅原论文[2]。

Contextual Calibration(CC):消除3类bias

In-Context Learning具有 高variance 问题,Task Instruction的写法、Few-Shot Examples的选择和呈现顺序等,都对最终的效果有影响。

CC的作者发现了3类bias,可能是variance问题的元凶:

  • majority label bias,指倾向于预测prompt中高频的label
  • recency bias,指倾向于预测prompt中靠后的label
  • common token bias,指倾向于预测在预训练数据中高频的label

作者于是提出校准方法---CC。其公式抽象如下:

P_CC(y|x) = P(y|x) / P(y|NULL)

其中NULL表示content-free input(如''N/A),实现方法比较简单,直接用content-free input替换原本的待推理样本,从而得到P(y|NULL)

论文实验结果表明,在Zero-Shot、Few-Shot设定下,CC都可显著提升效果,并可减少variance。详细内容请参阅原论文[3]。

Domain-context Calibration(DC):再消除domain bias

picture.image

CC的基础上,DC作者再次对bias进行了分类:

  1. vanilla label bias,与LLM本身参数有关,对应CC中的common token bias
  2. context label bias,与prompt有关,对应CC中的majority label biasrecency bias
  3. domain label bias,与input_text的分布有关,未被CC考虑

论文作者举了一个例子,解释何谓domain lable bias

picture.image

Tweet hate数据集上,随机从domain中抽取词语,LLM极大程度地预测其为hate,而随机英文单词的预测结果相对均衡,因此Tweet hatedomain label bias比较大;相比之下,SST-2就几乎没有domain label bias

DC的公式如下:

P_DC(y|x) = P(y|x) / P(y|domain_random_words)

从方法来看,DCCC的主要不同在于,用于校准的input不再是content-free input,而是domain_random_words,其组成方式是:从domain corpus中随机选Lword,其中L为domain data的平均长度。在实践中,常常重复这一步m步,再取m个结果的平均。

从论文结果来看, 引入更多domain信息DC,效果比CC要好,尤其在那些本身的domain label bias比较大的数据集上。详细内容可参阅原论文[4]。

实验设置

实验环境 :ModelScope社区[5]的免费GPU(PAI-DSW),显存为22GB,新用户有36h免费时间

模型训练和推理框架 :ModelScope

实验数据集

  1. CLUE Benchmark[6]中的TNEWS数据集,新闻标题多分类任务,共有15个分类标签,包括教育、科技、娱乐、游戏等主题;选取train集的前200条 进行实验
  2. NLPCC2014-Task2[7],微博情感分类数据集,二分类任务,正负比例1:1,随机采样300条 数据进行实验

评测指标 :Accuracy

标注员 :主要的实验模型为Qwen-7B-Chat[8],baseline仍为两个零样本分类模型(达摩院的Siamese-UniNLU-base[9]、百度的PaddleNLP-零样本分类[10])

问题1:Zero-Shot效果如何?

TNEWS 数据集上:

标注员AccCov
Qwen + GD0.46810.94
Qwen + Avg0.461.0
Qwen + Channel0.2651.0
Qwen + CC0.481.0
Qwen + DC0.494(0.49)1.0
Siamese0.47470.99
PaddleNLP0.5110.91

NLPCC2014-Task2 数据集上:

标注员AccCov
Qwen + GD0.77671.0
Qwen + Avg0.77671.0
Qwen + Channel0.53331.0
Qwen + CC0.78331.0
Qwen + DC0.8113(0.81)1.0
Siamese0.78671.0
PaddleNLP0.81990.7033

根据上述结果,可以发现:

  • Channel Model的效果非常差 。笔者分析发现,该方法的类别区分度太低,因此效果不好
  • CCDC均可提升Zero-Shot效果,效果最好的是DC,Acc可提升3%(绝对值) ,已经可以超过Siamese,与paddleNLP也可一战
  • domain_random_words的改变,对DC的效果影响不大

补充:Cov指标 = Coverage,GD - Greedy Decode;实验中所使用的prompt结构与第三期一致;在prompt确定的情况下,除了DC外,其他方法都没有随机性,因此其他方法的实验只跑了1次,而DC跑了5次,并报告mean Acc和worst- case Acc;DC所使用的domain corpus也来自测试集;DCm = 20CC选择了3个content-free input: ['', '空', '无']

问题2:Few-Shot效果如何?

在Tnews数据集上:

方法#sMeanBestWorst
GD40.464-0.508+0.392-
Avg40.406-0.445-0.375-
CC40.436-0.465-0.4-
DC40.456-0.48-0.415-
GD80.518+0.564+0.455-
Avg80.482+0.51+0.46
CC80.480.495+0.465-
DC80.482-0.505+0.47-

在NLPCC2014-Task2上:

方法#sMeanBestWorst
GD40.774-0.803+0.73-
Avg40.774-0.787+0.76-
CC40.784+0.807+0.76-
DC40.802 -0.827+0.783-
GD80.783+0.813+0.74 -
Avg80.778+0.797+0.75 -
CC80.793+0.797+0.787+
DC80.803-0.827+0.783-

根据上述结果,可以发现:

  • 即使使用了CCDC,Few-Shot的效果还是不尽如人意,效果可能不如Zero-Shot,但增加#shot对效果有帮助
  • GD有潜力,但variance问题仍然明显 ,在TNEWS数据上Best Acc - Worst Acc >10%
  • CCDC均可提升Avg的鲁棒性 ,体现在Best与Worst的差距在减小

补充:所有实验均跑了5次;Few-Shot Example来自验证集前100条,采样方式为随机采样;Noisy Channel Model在初步实验中效果太差,不予展示;各项Acc指标中最后的+代表相比Zero-Shot设定下的Mean Acc有提升,-代表下降

结论

Qwen-7B-Chat为基础模型时,在TNEWSNLPCC2014-Task2数据集上:

  • Bias Calibration(CC、DC)可明显提升Zero-Shot的效果,表现最好的是DC(可以提升 3% 的绝对值),因此, 在Zero-Shot设定下推荐使用DC技术
  • Bias Calibration(CC、DC)在Few-Shot设定下,体现了鲁棒性,可减少Best表现与Worst表现的差距,但Few-Shot的效果不明显,有时效果不如Zero-Shot,因此, 在Few-Shot方面,还需要探索其他的优化技术

实验代码

https://github.com/duanyu/LLM\_annotator/tree/main/experiment\_vol4

Future Work

  • 扩大实验的覆盖面。包括增加数据集和任务类型、增加LLM的数量和类型(如更多的开源LLM、百亿/千亿级LLM)
  • 进一步优化Few-Shot的效果。包括增加#shot、优化example的挑选和顺序等

关注笔者

参考资料

[1] Surface Form Competition: Why the Highest Probability Answer Isn’t Always Right: https://aclanthology.org/2021.emnlp-main.564/

[2] Noisy Channel Language Model Prompting for Few-Shot Text Classification: https://aclanthology.org/2022.acl-long.365/

[3] Calibrate Before Use: Improving Few-shot Performance of Language Models: http://proceedings.mlr.press/v139/zhao21c.html

[4] Mitigating Label Biases for In-context Learning: https://aclanthology.org/2023.acl-long.783/

[5] ModelScope: https://modelscope.cn/my/overview

[6] CLUE: https://github.com/CLUEbenchmark/CLUE

[7] NLPCC2014-Task2: http://tcci.ccf.org.cn/conference/2014/pages/page04\_sam.html

[8] Qwen-7B-Chat: https://modelscope.cn/models/qwen/Qwen-7B-Chat/summary

[9] Siamese-UniNLU-base: https://modelscope.cn/models/damo/nlp\_structbert\_siamese-uninlu\_chinese-base/summary

[10] PaddleNLP-零样本分类: https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/model\_zoo/taskflow.md

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论