方法来自于这篇论文:
Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine。
一.背景
假设,存在一批标注好的数据D_labeled,其包含m个标注样本(x, y)。
目标是,基于D_labeled,构建基于LLM的数据标注器L,其中L(x)=y_pred,目标是对于任意数据x,标注器能够进行尽量准确的标注。
二.标注流程
2.1 关键技术点:
-
model-generated Chain Of Thought。在直接预测y之前,先让模型生成推理过程(即Chain Of Thought,简称CoT),提升效果与可信度;有特色的是,除了在inference时使用,也对训练数据D_labeled生成CoT,并以此构建(x, CoT, y),用于few-shot learning;
-
kNN few-shot learning。在inference时,将k个最相似的(x, CoT, y)作为few-shot examples;In Context Learning奏效的原理是“类比”,即context中如果有A->B,那么对于A*,模型会预测B*;kNN方法提供相似的样例,因此理论上ICL的效果会更好;
-
ensemble。对于QA任务,更换choice的顺序,跑N次结果,取majority结果;核心是为了消除position bias的影响。
2.2 标注流程
整体的流程图,可以参照如下的伪代码:
-
对training data中的每个样本x,都生成CoT + y;
-
只保留那些答案正确的CoT,构成(x, CoT, y),作为few-shot examples的来源;
-
在inference时,使用embedding检索最邻近的k个examples(x,CoT,y),将其作为context,让LLM执行标注任务;
-
第三步的最外层,加入ensemble策略,以QA为例,可以把各个choice进行N次随机shuffle,得到N个标注结果,然后通过majority vote选择最终答案。
这套方法的厉害之处在于,全程只需使用标注数据D_labeled即可,无需再引入任何专家人力,整个过程是非常自动化的。
以上这套流程,原本是为了解决QA任务,但也适用于标注任务;其中kNN Few Shot Learning(简称kNN FSL)和model-generated CoT是通用的方法,ensemble策略则需要有所调整:
-
对于NLU任务,可以对标签顺序进行shuffle,然后同样使用majority vote;
-
对于NLG任务,可以将N次生成结果一齐给LLM,让其基于N个结果来生成答案,这种方法称之为ensemble refining。
三.效果对比
原论文主要focus在医学QA任务,选择的LLM为GPT-4,对比模型为经过领域微调的Med-Palm2。
可有以下发现:
-
只用简单的prompt,GPT-4就已有较强的能力了,在MedQA上接近80%,但对于医学领域,这个准确率可能还不足,因此专业领域LLM有发展空间;
-
依此加入few-shot examples, model-generated CoT, kNN few-shot, choice shuffle,均会带来效果提升,最终在MedQA上能从81.7% -> 90.2%(需要注意的是,不能简单认为对指标增益小的技术,就是作用小的技术,因为加入顺序是个重要影响因子);
-
通用的foundation LLMs在专业领域也有很大的潜能,prompt engineering则是unlock这些能力的关键;至少在QA任务中,Foundation LLMs + Prompt Engineering是Specific-Domain LLMs的有力竞争者。