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

news2024/11/26 20:00:48
  • 文献阅读:AnnoLLM: Making Large Language Models to Be Better Crowdsourced Annotators
    • 1. 文章简介
    • 2. 方法介绍
    • 3. 实验考察
      • 1. 实验结果
      • 2. 消解实验
      • 3. Consistency & Stability
    • 4. 结论 & 思考
  • 文献链接:https://arxiv.org/abs/2303.16854

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的效果,更多的感觉还是一个个单例来迫使模型对齐了标准,从而提升了模型判断与人类判断的一致性。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/872437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F429IGT6使用CubeMX配置SPI通信(W25Q256芯片)

1、硬件电路 需要系统性的看一下W25Q256芯片手册 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置SPI 4、生成工程配置 5、相关代码 #define sFLASH_ID 0XEF4019 // W25Q256#define SPI_FLASH_PageSize 256 #define SPI_FLASH_PerWritePageSize 256#def…

爬虫小白-如何辨别请求头referer/origin反爬

目录 一、网站分析二、最终代码一、网站分析 1、网站,研究这块数据从哪个接口来的 2、反爬参数:请求头referer/origin校验和x-api-key 3、详细分析流程,看b站十一姐时一视频, 或者知识星球时光漫漫图文文章 二、最终代码 # -*- coding: utf-8 -*- # @Time : 2023-08-13

为了监控上厕所次数,我开发了一个软件

背景 最近整了一个好玩的东西,一个快捷指令,实现点击之后显示当前的日期,同时后台将这个时间记录到一个文件里。文件在icloud上,实现多个设备的同步。话不多说,先看看效果吧。 这个是我的“软件”图标: 怎…

网络安全 Day30-容器架构上

容器架构上 1. 容器架构1.1 什么是容器1.2 容器 vs 虚拟机(化) :star::star:1.3 Docker极速上手指南1)使用rpm包安装docker2) docker下载镜像加速的配置3) 载入镜像大礼包(老师资料包中有) 1.4 Docker使用案例1) 案例01&#xff1…

第12集丨Vue 江湖 —— 内置指令

目录 一、v-text二、v-html2.1 基本使用2.2 cookie原理2.2.1 登入成功后cookies的信息2.2.2 手动增加cookie值2.2.3 cookie edit 三、v-cloak3.1 案例 四、v-once五、v-pre 到本节为止,我们学过的指令: v-bind :单向绑定解析表达式v-model :…

idea生成springboot单元测试用例

1、找到需要生成单元测试的类型,右键Go To -> Test 2、选择JUnit4 和勾选需要测试的方法 3、查看自动生成的文件 public class CategoryMapperTest {Testpublic void findById() {}Testpublic void queryById() {} } 4、添加测试代码 RunWith(SpringRunner.cla…

【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作

【JavaEE】MyBatis框架要点总结(2) 文章目录 【JavaEE】MyBatis框架要点总结(2)1. 单表查看操作1.1 (条件查询)通过id查找用户1.1.1 接口上声明方法1.1.2 xml文件中去实现方法1.1.3 测试 1.2 传递参数的重点问题:sql注…

【LeetCode周赛】LeetCode第358场周赛

LeetCode第358场周赛 数组中的最大数对和翻倍以链表形式表示的数字限制条件下元素之间的最小绝对差 数组中的最大数对和 给你一个下标从0开始的整数数组nums。请你从nums中找出和最大的一对数,且这两个数数位上最大的数字相等。 返回最大和,如果不存在满…

手机商城网站的分析与设计(论文+源码)_kaic

目录 摘 要 1 1 绪论 2 1.1选题背景意义 2 1.2国内外研究现状 2 1.2.1国内研究现状 2 1.2.2国外研究现状 3 1.3研究内容 3 2 网上手机商城网站相关技术 4 2.1.NET框架 4 2.2Access数据库 4 2.3 JavaScript技术 4 3网上手机商城网站分析与设…

基于grpc从零开始搭建一个准生产分布式应用(3) - GRPC实现

本章开始会进入GRPC子专题,先实现前面章节中提到的例子。然后就使用的知识点展开全面的描述。本章代码任务:1、实现一个简单的GRPC服务;2、实现GRPC拦截器。 本章的代码承接上一章的代码进行迭代。因模块间存在相互依赖关系,读者一…

SpringBoot复习:(42)WebServerCustomizer的customize方法是在哪里被调用的?

ServletWebServletAutoConfiguration类定义如下: 可以看到其中通过Import注解导入了其内部类BeanPostProcessorRegister。 BeanPostProcessor中定义的registerBeanDefinition方法会被Spring容器调用。 registerBeanDefinitions方法调用了RegistrySyntheticBeanIf…

【MongoDB】一文带你快速掌握MongoDB数据库和集合基础操作

文章目录 前言一、案例需求二、数据库操作1. 选择和创建数据库2. 数据库的删除 三、集合操作1. 集合的显式创建(了解)2. 集合的隐式创建3. 集合的删除 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便…

pycorrector一键式文本纠错工具,整合了BERT、MacBERT、ELECTRA、ERNIE等多种模型,让您立即享受纠错的便利和效果

pycorrector:一键式文本纠错工具,整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer、T5等多种模型,让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具。支持中文音似、形似、语法错误纠正,pytho…

激活函数总结(七):激活函数补充(Softsign、Threshold、Sinc)

激活函数总结(七):激活函数补充 1 引言2 激活函数2.1 Softsign激活函数2.2 Threshold (Unit step activation function) 激活函数2.3 Sinc激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Lea…

Java-运算符和控制语句(下)(基于c语言的补充)

输出到控制台 System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出 从键盘输入 使用 Scanner 读取字符串/整数/浮点数 首先需要导入util包 自动导入util包 这里把回车看…

21-因子个数

题目 一个正整数可以分解成一个或多个数组的积。例如362*2*3*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。 输入描述: 输入包括多组数据。 每组数…

Ubuntu22开机后正上方弹出“Printer addded(已添加打印)”等提示框

一、问题描述 Ubuntu22开机后正上方弹出“Printer addded(已添加打印)”等提示框。如下 二、问题分析 1、列出当前所有开机启动服务 service --status-all msmoshui:~$ service --status-all[ - ] alsa-utils[ - ] anacron[ ] apparmor[ ] app…

预测算法|改进粒子群算法优化极限学习机IDM-PSO-ELM

回归拟合: 分类 本文是作者的预测算法系列的第四篇,前面的文章中介绍了BP、SVM、RF及其优化,感兴趣的读者可以在作者往期文章中了解,这一篇将介绍——极限学习机 过去的几十年里基于梯度的学习方法被广泛用于训练神经网络&am…

全网最详细,Pytest自动化测试框架-Fixture固件实战,你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 什么是固件 Fixt…

SpringBoot整合Redis完整篇

SpringBoot整合Redis完整篇 1、在springboot项目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…