引言
LLM时代已经到来,NLP会如何发展?这是个值得研究的问题。
一方面,LLM可以做所有“传统”NLP能做的事,如分类、信息抽取、摘要、翻译等,而且做的相当不错,优秀的Zero-Shot、Few-Shot能力大大拓宽了NLP的应用场景;
但另一方面,LLM的 推理成本高 ,在低延时、高QPS的场景下难以直接应用,而在能应用的场景上 也许投入产出比不如小模型[1]。
在当下这个节点,本着实用主义的心态,笔者将眼光放回到“传统”NLP身上,进而提出问题: “传统”NLP如何从LLM中获益?
最轻量的方式是从数据层切入,即 利用LLM来标注数据 。因此,笔者将开启 作为标注员的LLM 系列,这个系列旨在回答下列问题:
- 为什么要在标注过程中引入LLM?
- 在标注过程中如何引入LLM?
- 怎么用LLM来标注?有哪些方法能让标注的效果更好?
- 如何将LLM的标注结果应用到任务模型中?
作为本系列第一篇,本文以讲解WWW 2023论文(What do LLMs Know about Financial Markets? A Case Study on Reddit Market Sentiment Analysis[2])为主,介绍使用LLM标注的一种最简单方法: 蒸馏法 。
论文摘要
- 在金融市场情感分析任务上,经prompt调优后的PaLM-540B可远超Baseline的结果,在Reddit上ACC=72%(+22%);
- 论文实践出的最佳prompt组合技:
manual few-shot COT + self-consistency
; - 论文提出2种蒸馏方式:基于分类的蒸馏(CLS)、基于回归的蒸馏(REG),最后选择了P-R曲线更平滑的REG;
- 蒸馏到task model(backbone:Charformer[3]的encoder部分)之后,在Reddit上ACC=69%(只降了3个点),并具备迁移相似任务的能力。
技术框架
第一步:利用LLM来标注unlabel data,通过 样本 -> LLM -> hard/soft label,得到weakly labeled data;
第二步:更小的任务模型(T5/BERT等)直接从weakly labeled data中进行监督学习。
用LLM标注的原因
这篇论文关注的任务是 社交媒体中的金融市场情感分析 。任务定义如下:
给定一篇reddit帖子,模型判断这篇帖子表达出的、针对某公司的 financial sentiment
,具体是要进行3分类,候选标签集合为:positive、negative和neutral。
用LLM来标注的理由有二:
- 标注难 。该任务需要同时具有金融 + 社交媒体的知识,对标注员的专业性要求高,在论文作者的实验中,即使是人类也只能达到70%的标注一致性, 仅通过人类难以获得大量的高质量标注样本 ;
- 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%。
需要着重说明的是,作者 进行了prompt enginerring之后,LLM才被逐步调优到最佳效果 。
这套组合技是: manual few-shot COT + self-consistency
。
- manual few-shot COT[4],即在prompt中人工加入包含解题步骤的examples,是few-shot learning和COT的结合。论文中,使用了6个examples(每个类别随机挑2个),COT则是先总结对股票涨跌的 opinion ,然后再给出最终答案。生成opinion是为了 让LLM给自己引入金融领域的知识 ,这种方法对特定domain的任务有启发性;
2. self-consistency[5],多次sample LLM的结果(进行sampling,而非greedy decoding),再将最频繁出现的结果作为最终结果(即所谓
majority vote
)。论文中,temperature设置为0.5,最佳sample次数为8次。
根据作者的消融实验,有以下发现:
- COT、self-consistency的提升效果都很大,ACC从平平无奇的50%提升到了72%;
- 对比PaLM-62B和540B,self-consistency对“小”模型也有帮助,但COT对“小“模型的帮助不大;
- 随机打乱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)来学习。
根据实验结果,CLS和REG的最佳效果接近(80.5 + 68.0 vs 84.2 + 65.5),但两种方法有不同的特性:
- CLS需要更准确的数据 。随着agreement减小,尽管数据多了,但precision会下降,当agreement=8(即8次预测完全一样)时,效果最佳,但此时仅使用了31%的数据(用作蒸馏的数据共20000);
- REG的包容性更强 。可以使用更多的、更难的(LLM预测更不一致)数据,在agreement=5时,效果最佳,可以使用85%的数据。
最终作者选择了REG。一方面,REG用了更多的、更难的数据;另一方面,REG的P-R曲线更平滑一些(在部署时,需要根据预期presion来选择threshold,更平滑的话选点的效果更好)。
笔者认为,从 知识蒸馏的研究[6]来看,从soft label中学习的确是更好的方式,本论文的实验也证明要稍优一些; 用self-consistency来产生soft label,进而蒸馏 的思想,具有启发性
蒸馏模型的效果
在Baseline对比实验中,使用了3份测试数据集:
- FiQA News,来自于FiQA benchmark,任务为 新闻标题 -> 情感二分类,训练/验证/测试比例 = 80/10/10;
- FiQA Post,来自于FiQA benchmark,任务为 推特和Stocktwits的博文 -> 情感二分类,训练/验证/测试比例 = 80/10/10;
- Reddit,任务为 reddit帖子 -> 情感三分类,人工标注100条用作测试,随机采样20000条用于任务模型的蒸馏。
Baseline如下:
- 在FiQA上finetune后的Charformer-encoder(任务模型的backbone)。对应下图第一列模型;
- 两个Pretrained model,FinBERT-ProsusAI、FinBERT-HKUST,未再做微调。对应下图第二列模型;
- 用于标注的LLM(PaLM COT * 8)、蒸馏后的任务模型。对应下图第三列模型。
根据对比实验,结论如下:
- LLM效果最佳 。在三个测试集上,LLM的效果都是显著最好的;
- 蒸馏效果不错 。在reddit上训练任务模型后,acc可以达到69%,只比LLM低3个点;
- 任务模型泛化性不错 。仅在reddit数据上蒸馏后,任务模型在FiQA News和FiQA Post上也具备迁移能力,说明LLM的标注的确让任务模型学到了判定“金融情绪”的较通用方式。
错误分析
更进一步,论文作者对蒸馏后的任务模型进行了错误分析,绘制了混淆矩阵。
通过结果可以看出,任务模型主要是误判或漏判了Neural类别,作者观察数据后发现是因为模型对于包含了 矛盾观点 的帖子、包含了 更高级的投资动作 的帖子难以准确分类,因此有两个针对性的优化点:
- 更好的处理包含矛盾观点的复杂帖子;
- 考虑动态引入金融知识,以避免在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/