作为标注员的LLM(一)-- 蒸馏法

大模型NoSQL数据库机器学习

引言

LLM时代已经到来,NLP会如何发展?这是个值得研究的问题。

一方面,LLM可以做所有“传统”NLP能做的事,如分类、信息抽取、摘要、翻译等,而且做的相当不错,优秀的Zero-Shot、Few-Shot能力大大拓宽了NLP的应用场景;

但另一方面,LLM的 推理成本高 ,在低延时、高QPS的场景下难以直接应用,而在能应用的场景上 也许投入产出比不如小模型[1]。

在当下这个节点,本着实用主义的心态,笔者将眼光放回到“传统”NLP身上,进而提出问题: “传统”NLP如何从LLM中获益?

最轻量的方式是从数据层切入,即 利用LLM来标注数据 。因此,笔者将开启 作为标注员的LLM 系列,这个系列旨在回答下列问题:

  1. 为什么要在标注过程中引入LLM?
  2. 在标注过程中如何引入LLM?
  3. 怎么用LLM来标注?有哪些方法能让标注的效果更好?
  4. 如何将LLM的标注结果应用到任务模型中?

作为本系列第一篇,本文以讲解WWW 2023论文(What do LLMs Know about Financial Markets? A Case Study on Reddit Market Sentiment Analysis[2])为主,介绍使用LLM标注的一种最简单方法: 蒸馏法

论文摘要

  1. 在金融市场情感分析任务上,经prompt调优后的PaLM-540B可远超Baseline的结果,在Reddit上ACC=72%(+22%);
  2. 论文实践出的最佳prompt组合技: manual few-shot COT + self-consistency
  3. 论文提出2种蒸馏方式:基于分类的蒸馏(CLS)、基于回归的蒸馏(REG),最后选择了P-R曲线更平滑的REG;
  4. 蒸馏到task model(backbone:Charformer[3]的encoder部分)之后,在Reddit上ACC=69%(只降了3个点),并具备迁移相似任务的能力。

技术框架

picture.image

第一步:利用LLM来标注unlabel data,通过 样本 -> LLM -> hard/soft label,得到weakly labeled data;

第二步:更小的任务模型(T5/BERT等)直接从weakly labeled data中进行监督学习。

用LLM标注的原因

这篇论文关注的任务是 社交媒体中的金融市场情感分析 。任务定义如下:

给定一篇reddit帖子,模型判断这篇帖子表达出的、针对某公司的 financial sentiment,具体是要进行3分类,候选标签集合为:positive、negative和neutral。

用LLM来标注的理由有二:

  1. 标注难 。该任务需要同时具有金融 + 社交媒体的知识,对标注员的专业性要求高,在论文作者的实验中,即使是人类也只能达到70%的标注一致性, 仅通过人类难以获得大量的高质量标注样本
  2. LLM标注效果好 。试验使用LLM + In-Context Learning来标注,在进行了promp工程之后发现效果不错,在Reddit上ACC达到72%,考虑到任务的难点,LLM标注效果符合预期,于是采用LLM来标注。

LLM的标注效果

首先,论文作者把情感分析任务改成了 预测股票涨跌 的任务,positive 对应 看涨、negative 对应 看跌、neutral 对应 不确定。

笔者认为,这个调整让任务更加 具体 ,对LLM以及人类来说,判断股票涨跌 要比 判断抽象的金融情绪 更好理解。“具体”本就是prompt的原则之一。

在PaLM-540B COT * 8(8代表self-consistency中sample的次数)的设置下,在各项数据集上可以取得远超Baseline的结果,在Reddit上Acc= 72% ,而FinBERT-HKUST仅为50%。

picture.image

需要着重说明的是,作者 进行了prompt enginerring之后,LLM才被逐步调优到最佳效果

这套组合技是: manual few-shot COT + self-consistency

  1. manual few-shot COT[4],即在prompt中人工加入包含解题步骤的examples,是few-shot learning和COT的结合。论文中,使用了6个examples(每个类别随机挑2个),COT则是先总结对股票涨跌的 opinion ,然后再给出最终答案。生成opinion是为了 让LLM给自己引入金融领域的知识 ,这种方法对特定domain的任务有启发性;

picture.image 2. self-consistency[5],多次sample LLM的结果(进行sampling,而非greedy decoding),再将最频繁出现的结果作为最终结果(即所谓 majority vote)。论文中,temperature设置为0.5,最佳sample次数为8次。

picture.image

根据作者的消融实验,有以下发现:

  1. COT、self-consistency的提升效果都很大,ACC从平平无奇的50%提升到了72%;
  2. 对比PaLM-62B和540B,self-consistency对“小”模型也有帮助,但COT对“小“模型的帮助不大;
  3. 随机打乱example的顺序,variance问题仍然比较明显。

笔者认为,In-Context Learning是LLM迅速adapt到下游任务的关键,更大的LLM + 更好的prompt技巧(如few-shot、COT、self-consistency)又是提效果的关键。

两种蒸馏方法

首先,在实验中作者仅保留了用于self-consistency的8次sample中,一致次数>=5次的样本(即丢弃了置信度低的样本,这些样本通常准确率也较低);然后,采取以下2种方式来进行蒸馏:

CLS :每个样本得到hard label(即最频繁出现的label),直接通过正常的分类loss(cross entropy)来学习;

REG :每个样本得到soft label(把sample 8次结果的agreement ratio,转换为label分布),通过regression loss(MSE)来学习。

picture.image

根据实验结果,CLS和REG的最佳效果接近(80.5 + 68.0 vs 84.2 + 65.5),但两种方法有不同的特性:

  1. CLS需要更准确的数据 。随着agreement减小,尽管数据多了,但precision会下降,当agreement=8(即8次预测完全一样)时,效果最佳,但此时仅使用了31%的数据(用作蒸馏的数据共20000);
  2. REG的包容性更强 。可以使用更多的、更难的(LLM预测更不一致)数据,在agreement=5时,效果最佳,可以使用85%的数据。

最终作者选择了REG。一方面,REG用了更多的、更难的数据;另一方面,REG的P-R曲线更平滑一些(在部署时,需要根据预期presion来选择threshold,更平滑的话选点的效果更好)。

picture.image

笔者认为,从 知识蒸馏的研究[6]来看,从soft label中学习的确是更好的方式,本论文的实验也证明要稍优一些; 用self-consistency来产生soft label,进而蒸馏 的思想,具有启发性

蒸馏模型的效果

在Baseline对比实验中,使用了3份测试数据集:

picture.image

  1. FiQA News,来自于FiQA benchmark,任务为 新闻标题 -> 情感二分类,训练/验证/测试比例 = 80/10/10;
  2. FiQA Post,来自于FiQA benchmark,任务为 推特和Stocktwits的博文 -> 情感二分类,训练/验证/测试比例 = 80/10/10;
  3. Reddit,任务为 reddit帖子 -> 情感三分类,人工标注100条用作测试,随机采样20000条用于任务模型的蒸馏。

Baseline如下:

  1. 在FiQA上finetune后的Charformer-encoder(任务模型的backbone)。对应下图第一列模型;
  2. 两个Pretrained model,FinBERT-ProsusAI、FinBERT-HKUST,未再做微调。对应下图第二列模型;
  3. 用于标注的LLM(PaLM COT * 8)、蒸馏后的任务模型。对应下图第三列模型。

picture.image

根据对比实验,结论如下:

  1. LLM效果最佳 。在三个测试集上,LLM的效果都是显著最好的;
  2. 蒸馏效果不错 。在reddit上训练任务模型后,acc可以达到69%,只比LLM低3个点;
  3. 任务模型泛化性不错 。仅在reddit数据上蒸馏后,任务模型在FiQA News和FiQA Post上也具备迁移能力,说明LLM的标注的确让任务模型学到了判定“金融情绪”的较通用方式。

错误分析

更进一步,论文作者对蒸馏后的任务模型进行了错误分析,绘制了混淆矩阵。

picture.image

通过结果可以看出,任务模型主要是误判或漏判了Neural类别,作者观察数据后发现是因为模型对于包含了 矛盾观点 的帖子、包含了 更高级的投资动作 的帖子难以准确分类,因此有两个针对性的优化点:

  1. 更好的处理包含矛盾观点的复杂帖子;
  2. 考虑动态引入金融知识,以避免在COT过程中,LLM没有引入相关的金融知识。

LLM与人类的协作标注

对于LLM与人类在标注上的关系,论文作者在最后提出了一个启发性问题:

  • 人类标注者,能否不再是简单地标注数据,而是帮助设计一种 domain-knowledge-injected prompt,帮助LLM来执行任务或者是与LLM进行协同?

笔者认为,LLM作为一个工具,如何适当地使用它,让整个标注系统更加的低成本、高质量、高效率,才是人类设计者的最终目的。

下期预告

作为标注员的LLM 系列第二期,笔者将介绍 LLM与弱监督标注的结合 ,在Snorkel[7]弱监督标注框架下,LLM与标注系统进行了更深入的协作,其使用方式更加灵活,而通过对一个样本进行多角度标注,甚至可能带来更好的标注效果。

参考资料

[1] The economic trade-offs of large language models: A case study: https://arxiv.org/abs/2306.07402

[2] What do LLMs Know about Financial Markets? A Case Study on Reddit Market Sentiment Analysis: https://arxiv.org/pdf/2212.11311.pdf

[3] Charformer: https://openreview.net/pdf?id=JtBRnrlOEFN

[4] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models: https://proceedings.neurips.cc/paper\_files/paper/2022/file/9d5609613524ecf4f15af0f7b31abca4-Paper-Conference.pdf

[5] Self-Consistency Improves Chain of Thought Reasoning in Language Models: https://openreview.net/pdf?id=1PL1NIMMrw

[6] Distilling the Knowledge in a Neural Network: https://arxiv.org/pdf/1503.02531.pdf

[7] Snorkel: https://snorkel.ai/

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