最新 | Ask Me Anything 一种提示(Prompt)语言模型的简单策略(斯坦福大学 含源码)

本文主要是介绍最新 | Ask Me Anything 一种提示(Prompt)语言模型的简单策略(斯坦福大学 含源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源: AINLPer微信公众号(每日干货分享!!)
编辑: ShuYini
校稿: ShuYini
时间: 2022-09-30

引言

提示(Prompt)的微小变化就会引起大型语言模型(LLM)较大的性能变化,这将会有大量时间花费在提示(prompt)设计上。为此本文提出了ASK ME ANYTHING(AMA)方法,该方法首先产生多个有效且不完美的prompt,然后将它们进行聚合,最后产生高质量的提示(prompt)。
在这里插入图片描述

关注 AINLPer公众号,最新干货第一时间送达

背景介绍

 大型语言模型(LLM)让我们更接近任务无关机器学习的目标。LLM 不是为新任务训练模型,而是开箱即用地应用于新任务。在上下文学习的范式中,通过自然语言任务规范或提示(prompt)来控制LLM。其中提示(prompt)由模板定义,该模板包含用于描述和表示任务输入和输出的占位符。

 最近的工作评估了LLM在一系列任务中的提示(prompt)性能,实验发现,提示(prompt)的微小变化会导致较大的性能变化。并且提示(prompt)性能还取决于所选LLM系列和模型大小。为了提高可靠性,大量的工作致力于精心设计一个完美的提示(prompt)。例如,就有专家建议用户手动探索大型搜索空间的策略,以便在逐个任务的基础上优化提示(prompt)。

 相反,本文考虑聚合多个有效但不完美的提示(prompt)的预测,以提高在各种的模型和任务上的提示(prompt)性能。 给定一个任务输入,每个提示(prompt)都会对输入的真实标签进行投票,这些投票被聚合以产生最终预测。

遇到的问题

 在追求聚合的高质量提示(prompt)过程中,我们面临以下挑战:

高质量的提示(Effective prompts):高质量的提示是聚合效果提升的首要条件。在两个SuperGLUE任务(CB, RTE)中,我们采用了原始提示,这些提示产生了近乎随机的性能。以相同的格式生成多个提示并在提示之间进行多数投票预测的影响较小(CB为+4%),甚至可能损害平均提示性能(RTE为-2%)。许多改进提示(prompt)的建议关注单一任务类型,并基于单一模型系列和/或大小进行评估。为此,我们需要一个跨任务和模型工作的提示结构

可扩展的集合(Scalable collection) :在确定有效的提示格式之后,我们需要获得这些格式的多个提示----这些提示主要是为输入的真实标签收集投票。任务的原始格式变化很大,之前的工作以特定于任务的方式手动将输入示例重写为新格式,这是具有挑战性的扩展。我们需要一种可伸缩的策略来重新格式化任务输入

提示聚合(Prompt aggregation) :使用上面的提示(对于CB和RTE),我们看到准确性的平均变化为9.5%,并且错误的Jaccard指数比识别提示错误高出69%。之前提示工作中,多数投票(MV)是主要无监督聚合策略,但它没有考虑这两种特性,因此不可靠。我们需要一种策略来解释不同的准确性和依赖性

AMA模型方法介绍

问题解决

 1、识别提示的属性,这些属性可以提升跨任务、模型类型和模型大小的效率。我们研究了先前工作分类的标准提示格式,发现支持开放式回答(“约翰去哪儿了?”)的提示比将模型输出限制为特定tokens 的提示更有效。例如,将[Brown等人,2020]中最初的限制性格式中的三个SuperGLUE任务(CB、RTE、WSC)转换为开放式格式可以提高72%的性能。给定一个任务输入,我们发现根据输入形成问题、提示LLM回答问题的简单结构,可以适用于相当普遍的情况并在不同的基准测试任务中提升性能。

 2、提出了一种可伸缩地将任务输入重新格式化为(1)中发现的有效格式的策略。通过在固定的两步管道中递归地使用LLM本身,将任务输入转换为有效的开放式问答格式。我们首先使用question()提示符,它包含如何将语句转换为各种(例如,yes-no,完形填空)问题的任务无关示例,然后使用answer()提示符演示回答问题的方法(例如,简明或冗长的回答)。应用提示链-答案(问题(x)) ----给出输入 x 2 x^2 x2的最终预测。该链可以在输入之间重复使用,并组合不同的功能提示对来产生多样性。我们将不同的功能提示链应用于输入,为输入的真实标签收集多次投票。

 3、使用弱监督(WS)来可靠地聚合预测。实验发现,由不同链的预测所产生的误差可以是高度变化和相关的。虽然多数投票(MV)可能在某些提示集上表现良好,但在上述情况下表现不佳。AMA通过识别提示之间的依赖关系并使用WS来解释这些情况,WS是在没有任何标记数据的情况下建模和组合噪声预测的过程。这里,本文首次将WS广泛应用于提示,表明它提高了使用现成的LLM并且无需进一步训练。

AMA模型方法

 总结以上问题解决方法,本文提出了 ASK ME ANYTHING PROMPTING (AMA),这是一种简单的方法,它不仅使开源 LLM 的参数减少30倍,而且超过了 GPT3-175B 的Few-Shot性能。

 其中如上图所示:AMA首先递归地使用LLM将任务和提示重新格式化为有效的格式,然后使用弱监督聚合跨提示的预测。重新格式化是使用提示链来执行的,提示链由在不同的任务输入上操作的功能性(固定的、可重用的)提示组成。在这里,给定输入示例,提示链包括一个question()提示符,LLM通过这个提示符将输入声明转换为一个问题,以及一个answer()提示符,LLM通过这个提示符回答它生成的问题。不同的提示链(即不同的上下文问题和答案演示)导致对输入的真实标签的不同预测。

实验结果

1、下表1中比较开源GPT-J-6B和Few-Shot(k∈[32…70])GPT3- 175B的基准测试结果。可以发现,在20个基准测试中,有15个开源6B参数模型超过了GPT3-175B模型的平均Few-Shot性能。在20个任务中,AMA比6B参数模型的少次数(k = 3)性能平均提高了41%。

2、跨模型大小的分析和基准评估。 我们报告了 AMA 对少样本 (k = 3) 性能的绝对提升,平均超过 7 个任务,置信区间为 95%(左)。 按 7 项任务的平均 AMA 提升排序(右)。

3、Sanh等人实验结果T0的性能与prompt-source中10种不同提示格式的多数投票(MV)和弱监督(WS)相比。当使用prompt-source时,MV和WS的平均提升分别为3.6分和6.1分。

推荐阅读

[1] 一文了解EMNLP国际顶会 && 历年EMNLP论文下载 && 含EMNLP2022

[2]【历年NeurIPS论文下载】一文带你看懂NeurIPS国际顶会(内含NeurIPS2022)

[3]【微软研究院 && 含源码】相比黑盒模型,可解释模型同样可以获得理想的性能

[4]【IJCAI2022&&知识图谱】联邦环境下,基于元学习的图谱知识外推(阿里&浙大&含源码)

[5]【NLP论文分享&&语言表示】有望颠覆Transformer的图循环神经网络(GNN)

[6]【NeurIPS && 图谱问答】知识图谱(KG) Mutil-Hop推理的锥形嵌入方法(中科院–含源码)

[7]【NLP论文分享 && QA问答】动态关联GNN建立直接关联,优化multi-hop推理(含源码)

[8]【历年IJCAI论文下载 && 论文速递】无数据对抗蒸馏、垂直联合、预训练微调范式图神经网络(GNN)

[9]【NLP论文分享&&中文命名实体识别】如何构建一个优秀的Gazetteer/地名词典(浙大&含源码)

这篇关于最新 | Ask Me Anything 一种提示(Prompt)语言模型的简单策略(斯坦福大学 含源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/383784

相关文章

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解