文献阅读:AnnoLLM: Making Large Language Models to Be Better Crowdsourced Annotators

1. 文章简介

这一篇文章是我司的另一篇关于GPT模型的Prompt工程调优的文章,不过这篇文章的方法挺有启发意义的,而且这篇文章的工作本身也和我最近在做的工作比较契合,因此打算在这里对这篇文章进行一下整理。

这篇文章的核心工作如前所述,是一个prompt调优的工作,用于使得GPT任务在分类任务的标注上获取更好的效果。

而这篇文章的核心思路其实还是对齐,他在文章中引入了一个叫做explain-then-annotate的方法,算是一个few-shot的变体,不过不同于few-shot的直接给答案或者人工给一些答案,文中采用的方式是先给模型一些人工标注的ground-truth,然后要求模型对此生成explanation来作为few-shot的内容。

用这种方式,某种意义上可以强制LLM对齐任务的判断标准与人的标准相同,从而使得模型在标注任务当中能够收获更好的效果。

2. 方法介绍

下面,我们来具体看一下文中的prompt的具体构造方法以及给出一个具体的prompt例子。

首先,我们来看一下AnnoLLM的整体的设计,这个可以用文中的图表进行展示:

在这里插入图片描述

其中,左侧是人工标注的流程,而右侧则是AnnoLLM的过程。

可以看到,其主要是包含了两个步骤:

  1. 给出task description以及一些标注数据,让模型来说明标注这些label的理由;
  2. 将上述task description,样例数据以及模型回答的理由作为few-shot prompt输入给模型,然后要求模型回答目标问题。

其具体的一个样例如下表所示:

在这里插入图片描述

其中,粗体的部分就是预先给到LLM答案之后由LLM自己生成的explanation,其具体的prompt如下:

在这里插入图片描述

通过这种方式,我们就可以迫使模型去对齐ground truth当中人类的判断标准,从而获得一个更好的效果表达。

3. 实验考察

下面,我们来看一下文中给出具体实验结果。

1. 实验结果

文中实验主要使用了如下三个数据集:

在这里插入图片描述

其中:

  1. QK数据集是一个query与keyword的relevance判断问题;
  2. BoolQ数据集是一个针对doc以及question的是非判断问题;
  3. WiC数据集则是判断同一个词在两个sentence当中是否有相同的语义;

给出三个数据集下的实验结果如下:

  1. QK

    在这里插入图片描述

  2. BoolQ

    在这里插入图片描述

  3. WiC

    在这里插入图片描述

可以看到:

  • 在三个任务当中,模型都获得了很好的效果。

2. 消解实验

为了验证这个CoT方法的有效性,文中还给出了消解实验的实验结果如下:

在这里插入图片描述

我们首先来看一下各组实验都是什么:

  1. baseline,先用label生成explanation,然后在explanation之后拼上label进行强调;
  2. 先用label生成explanation,然后删掉句首的label内容,只保留explanation,但是在句尾拼上label的内容;
  3. 先用label生成explanation,然后只将explanation拼到label之后;
  4. 和1在格式上保持一致,但是在生成explanation时并不事先告诉模型ground truth,而是让模型自由发挥,然后在模型自由生成的explanation之后拼上ground truth;
  5. 和4在格式和内容上保持一致,但是对explanation通过一些简单的过滤规则进行一些后处理,去除掉那些和ground truth不一致的解释。

可以看到:

  • 实验2,3主要是在考察格式对结果的影响;
  • 实验4,5主要是在考察explanation的生成方式对结果的影响;

结论来说:

  1. 比较1和2,可以看到,句首的grouth truth对于模型的理解有很重要的作用,删除会对模型效果有所影响,即使句末会给到真实的ground truth也一样;
  2. 比较1和3,我们注意到句末的ground truth label的拼接对于模型效果的影响是比较微弱的;
  3. 比较1和4,我们发现,如果不使用label让模型生成explanation,事实上并没有起到标准对齐的效果,模型infer的效果下降会很明显;
  4. 比较4和5,我们注意到即使通过一些规则过滤掉一些明显与ground truth不一致的explanation的情况下,模型效果依然无法恢复到baseline的水平,这可能由于某些问题模型自身始终无法给到正确的explanation,因此无法通过简单规则过滤得到ground truth对应的解释。

3. Consistency & Stability

最后,文章中还考察了一下这一方法的一致性和稳定性,具体来说,就是以下两个点:

  1. 一致性:生成的不同explanation作为prompt是否都能获得较好的效果;
  2. 稳定性:不同的few-shot上面CoT是否都能稳定的获得收益;

给出文中的具体实验结果图如下:

在这里插入图片描述

可以看到:

  • CoT的提升效果是稳定且一致的。

4. 结论 & 思考

综上,这篇文章依然还是一个prompt调优的工作,不过确实感觉很有启发意义。

且核心的思路根据我的理解依然还是在于对齐,虽然文中称之为CoT,不过我个人觉得不是特别合适,因为并没有看出来Chain的效果,更多的感觉还是一个个单例来迫使模型对齐了标准,从而提升了模型判断与人类判断的一致性。

而另一个好的点在于这篇文章的方法论事实上是比较泛化的,基本上可以无缝衔接到所有的分类问题当中,而且实现上也非常简单,倒是可以在我们自己的工作中也试试看,应该可以获得比较好的效果。