大模型-基于大模型的数据标注

法来自于这篇论文: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 标注流程

整体的流程图,可以参照如下的伪代码:

  1. 对training data中的每个样本x,都生成CoT + y;

  2. 只保留那些答案正确的CoT,构成(x, CoT, y),作为few-shot examples的来源;

  3. 在inference时,使用embedding检索最邻近的k个examples(x,CoT,y),将其作为context,让LLM执行标注任务;

  4. 第三步的最外层,加入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。

可有以下发现:

  1. 只用简单的prompt,GPT-4就已有较强的能力了,在MedQA上接近80%,但对于医学领域,这个准确率可能还不足,因此专业领域LLM有发展空间;

  2. 依此加入few-shot examples, model-generated CoT, kNN few-shot, choice shuffle,均会带来效果提升,最终在MedQA上能从81.7% -> 90.2%(需要注意的是,不能简单认为对指标增益小的技术,就是作用小的技术,因为加入顺序是个重要影响因子);

  3. 通用的foundation LLMs在专业领域也有很大的潜能,prompt engineering则是unlock这些能力的关键;至少在QA任务中,Foundation LLMs + Prompt Engineering是Specific-Domain LLMs的有力竞争者。

相关推荐

  1. 基于模型Code Review

    2024-07-13 11:42:03       25 阅读
  2. 语言模型--数据

    2024-07-13 11:42:03       60 阅读
  3. 语言模型-模型基础文献

    2024-07-13 11:42:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 11:42:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 11:42:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 11:42:03       58 阅读
  4. Python语言-面向对象

    2024-07-13 11:42:03       69 阅读

热门阅读

  1. 【2024暑期实习】接到新需求该如何做?

    2024-07-13 11:42:03       22 阅读
  2. MATLAB中Simulink.exportToTemplate用法

    2024-07-13 11:42:03       22 阅读
  3. C#面:中间件的使用场景有哪些?

    2024-07-13 11:42:03       21 阅读
  4. vue3 学习笔记08 -- computed 和 watch

    2024-07-13 11:42:03       24 阅读
  5. R语言学习笔记6-数据框

    2024-07-13 11:42:03       20 阅读
  6. 菜鸡的原地踏步史07(◐‿◑)

    2024-07-13 11:42:03       18 阅读
  7. C++ 基础练习 - 第一章(英文版)

    2024-07-13 11:42:03       19 阅读