OpenAI大模型DecryptPrompt

news2025/2/7 12:51:54

what is prompt

  • 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评)
  • 综述2. Paradigm Shift in Natural Language Processing(四星推荐)
  • 综述3. Pre-Trained Models: Past, Present and Future

Prompt即提示学习,是继预训练+微调范式后众望所归的第四范式。在预训练+微调的范式中我们调整预训练模型来匹配下游任务数据,本质是对预训练学到的众多信息进行重新排列和筛选。而Prompt是通过引入“提示信息”,让模型回忆起预训练中学过的语言知识,也就是调整下游数据来适配预训练模型,进而把所有NLP任务都统一成LM任务。

举几个例子,以下[x]为prompt提示词,[z]为模型预测

  1. 分类任务:
    相比情绪分类对应的多分类0~N的输出,Prompt会输出对应代表情绪的token

  1. 抽取任务

  1. 生成任务

看着非常玄妙!但其实部分原理就来自于于超大的预训练数据中包含的丰富文本知识。例如English2French的翻译任务,在预训练文本中会自然出现一些英法的对应文本如下。而提示词的加入可以理解为尝试还原模型在以下场景中的上下文(Attention)

那和预训练+微调的范式相比,Prompt有什么优势?

  • 微调参数量更小:这几年模型越来越大,连微调都变成了一件很奢侈的事情,而prompt出现提供了新的选择,可以freeze模型只对提示词进行微调
  • 小样本场景: 不少Prompt模型是面向zero-shot,few-shot场景设计的
  • 多任务范式统一:一切皆为LM!

Prompt模型的设计主要包含以下几个模块,

  • Pretrain Model Choice:GPT等Decoder,BERT等Encoder,BART等Encoder-Decoder
  • Prompt Engineering:离散模板(文本),连续模板(embedding)的设计。模型效果对模板的敏感性,以及人工模板设计的不稳定的和难度是需要解决的问题
  • Answer Engineering: 包括答案文本的搜索,和预测文本到标签的映射。相比分类标签,Prompt范式输出的答案多为文本,因此多了一步文本到标签的解析
  • Training Strategy:主要有4种不同类型,LM和Prompt都冻结的Tunning-free,微调LM冻结Prompt,冻结LM微调Prompt,和LM+Prompt微调

我们先按照Training Strategy的不同,来梳理下各个方向的基础模型,再进阶的前沿模型,哈哈所以得花点时间才能轮到ChatGPT。第一章介绍Tunning-Free Prompt,在下游任务使用中LM和Prompt都是冻结的,不需要针对下游任务进行微调,可以用于Zero-shot和few-shot场景,主要介绍下GPT2,GPT3,LAMA和AutoPrompt。

GPT2

  • GPT2:Language Models are Unsupervised Multitask Learners,2019.2
  • 任务:NLG
  • Prompt: Discrete + Hand crafted Prompt
  • 核心:Language Model本身就是无监督的多任务学习

在前BERT时代,通用文本表征-GenSen就探索过通过多任务得到在不同下游任务中泛化能力更好的文本表征,而后BERT时代,MQPN,MTDNN等模型也探索过如何通过多任务学习得到更加通用的大模型。

GPT2更往前迈了一步,它认为如果语言模型足够优秀,则在拟合P(output|input)的过程中,对p(output|input,task)也会进行学习,因为NLP任务信息本身就会在丰富的预训练预料中出现,例如上面我们举的翻译的case。和GPT相比,GPT2的创新就是在“LM是无监督多任务”这个观点上,所以GPT2的评测是基于无finetune的zero-shot场景进行的,旨在证明足够优秀的语言模型是可以不经过微调直接用在不同的下游场景中的。

那如何让模型针对不同的任务给出预测呢?作者通过在原始Input上加入任务相关提示词的方式,这不prompt就来了!举个栗子

  • Translation:English = 输入 French = ?
  • Summarization:文章 + TL;DR:?,这里TL;DR是Too Long; Didn't Read的缩写,可类比咱的‘一言以蔽之‘,会出现在大段文本的末尾作为总结升华,或者对话中

几年前看GPT2的论文,只觉得模型更大了(评估是用的1542M的版本是Bert-large的5倍),样本更多了,zero-shot的能力挺新奇但是效果差点意思。如今从Prompt的角度重读,GPT2更像是在探索模型zero-shot能力的时候不小心推开了prompt的大门,从最直观的视角构建了Prompt提示词,也就是类似的任务在常规文本中是以什么形式(关键词)出现的,就以该形式构建文本输入即可~

除此之外GPT2对模型的微调以及构造了更大质量更高的数据集这里就不细说了~

GPT3

  • GPT3: Language Models are Few-Shot Learners, 2020.5
  • Making pre-trained language models better few-shot learners
  • 任务:无所不能
  • Prompt: Discrete + Hand crafted Prompt + Prompt Augmentation
  • 核心:大力出奇迹!175B大模型在few-shot,zero-shot的模型表现甚至可以比肩微调

GPT3是GPT2的延续,一方面旨在进一步提高模型的zero-shot能力,方法简单粗暴加参数就完事了!175Billion的参数首次证明了规模的量变会带来质变![Ref8]详细论证了大模型会带来一些奇迹般的能力,包括更强的复杂推理,知识推理,和样本外泛化能力!

另一方面GPT3在few-shot场景做了很多尝试,提出了自带神秘光环的in-context learning,可以被归类为multi-prompt中的prompt augmentation方案~

175Billon!

GPT3的模型结构延续GPT系列,但测试了不同模型参数量级的8个模型在不同下游任务上的效果,从125M到175B,模型效果在zero/one/few-shot的设定下都有稳步提升。在TriviaQA等任务上175B的GPT3甚至超越微调模型拿到了SOTA,算是预训练模型超越微调模型的第一次。但在NLI(判断两个句子是相似,对立,中性),WiC(判断一个单词是否在两个句子中含义相同)两个任务上GPT3的表现非常差,看起来似乎对涉及两个句子间逻辑推断的任务并不擅长。或许因为类似两个文本的逻辑推断在预训练文本中未出现过?

针对GPT3变态的模型大小,咱不聊技术垄断,OpenAI好有钱blabla我更好奇的是增长的参数究竟是如何提升模型能力?是更多的参数可以记忆更多的知识?还是更大的向量空间可以让模型学到更加线性可分的空间表征,使得下游任务对信息的解码更加简单,所以在few-shot场景有更好的表现?还没看到较严谨的论证,有知道的盆友求答疑解惑

In-context learning

论文在GPT2已有的zero-shot的基础上,提出了In-Context learning的概念,也称类比学习,上下文学习或者语境学习。有one-shot和few-shot两种方案,对应不同的增强Prompt的构建方式。随着模型参数量级的提升,few-shot,one-shot带来的效果提升更加显著。以英翻法任务为例

  1. zero-shot: Prompt为任务描述

  1. one-shot: Prompt Augmentation,任务描述+一个带答案的样本

  1. few-shot: Prompt Augmentation,任务描述+多个带答案的样本

GPT3对其他NLP任务的prompt构建方案详见论文附录G~

对于Prompt Augmentation带来的效果提升,个人感觉in-context这个词的使用恰如其分,就是带答案的样本输入其实做了和任务描述相似的事情,也就是让待预测的输入处于和预训练文本中任务相关语料相似的上下文。带答案的样本比任务描述本身更接近自然的上下文语境。

不过prompt增强的构建还有许多细节待研究,例如抽取哪些样本更好,不同样本模型预测结果是否稳健,样本答案的构建方式,样本的顺序是否有影响等等。针对素材生成的场景没啥所谓,但是对抽取,分类,QA等任务,如果不同的prompt会得到显著不同的结果,就让人很头疼了~

[Ref6]的论文更深入的探究了in-context具体提供了哪些信息,作者定位到以下4类信息

  1. 输入标签的对应关系: 把样本标签改成错误标签,模型效果下降有限
  2. 标签分布:把标签改成随机单词,模型效果有显著下降
  3. 输入分布:在prompt中加入领域外文本,模型效果有显著下降
  4. 输入输出格式:改变双输入格式,在prompt中只保留标签或者只保留输入,模型效果都会有显著下降

GPT3正式推开了in-context learning的大门,模型参数也断层式的增长进入了Billon级别,后面的Flan,PaLM,LaMDA皆是这个大小。不过就效果而言GPT3在部分任务上依旧会被小模型T5吊打,以至于模型规模增长到底是否是正确的技术方向一度被质疑,直到之后的Chain of Thought出现才被逆转,这个放在后面章节再说~

LAMA

  • LAMA: Language Models as Knowledge Bases? 2019.9
  • Github: GitHub - facebookresearch/LAMA: LAnguage Model Analysis
  • 任务:NLU(实事抽取)
  • prompt: cloze + Hand Craft Prompt
  • 核心:不经过微调的Bert在知识抽取和开放与问答上效果惊人的好,可以比肩有监督的KG基准

LAMA是在GPT2和GPT3之间提出的一个探测(probe)任务,旨在研究预训练模型存储的知识信息,这里只考虑实体关系三元组(Subject, Relation, Object)。

LAMA设计的Probe方案就是人工设计的完形填空(cloze)类型的prompt模板。例如把出生地实体识别,转化成小明出生于[MASK]的完形填空任务,如果模型预测MASK正确,就认为模型掌握了这一知识。

来具体说下LAMA针对不同关系构建的Prompt模板。论文使用以下4个评测数据

  1. Google-RE

Wikipedia抽取的事实,包括5种关系,论文只保留了出生地,死亡地,出生日期3种关系,因为剩余两种的预测结果为多token,而LAMA的答案模板限制只预测1个token。每种关系作者手工构建了Prompt填空模板,举个栗子

  • 出生时间
    • Federico Falco is an Argentinian writer born in [MASK] .
    • Steve Lindsey (born May, 6th [MASK]) is an American record producer
  • 出生地
    • Lucy Toulmin Smith was born at [MASK], Massachusetts, USA
    • Born in [MASK], New Jersey, Connor attended parochial schools as a child
  • 死亡地
    • Uvedale Tomkins Price died at [MASK] in 1764
    • Lewin died on December 18, 2010, at the age of 84 in [MASK]
  1. T-REx

wikidata三元组,比Google-RE范围更广,作者选取了41种关系,每种关系采样了1000条事实。每种关系作者手工构建了Prompt模板,部分Prompt如下

  1. ConceptNet

多语言词之间的常识关系,作者只考虑object为英文单字的16种关系,部分prompt如下

  1. SQuAD

QA数据集,论文选取了305条上下文无关,且回答为单字的问题。prompt模板通过人工把问题改造成MLM语句得到,举个例子

  • The Normans combine with the [MASK] culture in Ireland
  • Isaac's chains made out of [MASK].

因为LAMA只检测实体三元组关系,所以除Squad外的prompt模板可以抽象为'[X] relation [Y]'的完形填空形式, 但是prompt构建本身还是依赖人工,完整的LAMA数据集详见github~

这类Hand Crafted Prompt的构建主要有2个问题,一个是全靠人工,另一个在论文中也有提到就是不同的prompt对结果有较大影响,那如何找到最优的构建方案是个需要解决的问题

在Answer模板上LAMA限定了答案只能是token,这和它选择的预训练模型是BERT有关,所以Answer的解析没啥好说的就判断预测token是否正确即可。

其他探测任务相关的细节这里就不展开,感兴趣的盆友可以去看论文~

AutoPrompt

  • paper: AutoPrompt Eliciting Knowledge from Language Models,2020.10
  • github: GitHub - ucinlp/autoprompt: AutoPrompt: Automatic Prompt Construction for Masked Language Models.
  • 任务:NLU(NLI,实事抽取,关系抽取)
  • prompt: Discrete + Gradient Search Prompt

AutoPrompt是在LAMA上的改进,针对LAMA需要人工构造Prompt的问题,提出了一种基于梯度自动生成提示词的方案。论文针对分类任务,作者设计了通用的prompt模板如下,在原始文本输入的基础上,拼接多个触发词[T],最后一个MASK token为模型预测[P]。

下面分别针对Prompt和Answer Engineering来说下细节

LAMA的一个核心问题就是人工构造Prompt的成本和效果的不确定性,AutoPrompt借鉴了文本对抗AdvTrigger的梯度搜索方案,给定样本和模型可以自动搜索任务相关触发词。

AdvTrigger旨在找到和输入以及模型无关的通用Trigger,把这个Trigger拼接在输入文本的开头或者结尾可以使得模型得到特定的结果,可以是增加模型的误判率,使得模型输出有种族歧视的文本,或者让模型输出相同的错误结果等等。以下是AdvTrigger中给出的例子(注意以下案例只显示模型结果)

AutoPrompt使用了相同的Trigger搜索方式,首先把触发词用[MASK]初始化,然后逐步迭代来最大化以下似然函数,即加入触发词后MASK预测为正确标签的概率最大化

每一步迭代通过用以下一阶泰勒展开来近似把触发词改成j后似然函数的变化(梯度*词向量),得到最大化似然函数的topK个触发词。然后把触发词拼接输入,重新计算上述似然函数。以上两步迭代多次,得到最终的TopK触发词,这里K作为超参可以有{3,6}个

所以AutoPrompt虽然省去了人工构建prompt,但是需要下游标注任务样本来搜索触发词,一定程度上不算是tunning-free范式,更像是Fixed-LM Prompt-Tunning,除非搜索得到的触发词能直接迁移到相同任务其他领域数据中,不过这部分论文中并未评测。

Auto Label Token Selection

AutoPrompt除了评估事实抽取任务,还加入了对分类任务的评估所以需要对Answer部分进行额外处理把模型预测的token映射到分类标签。这里主要是多token到单label的映射,例如哪些单词代表情感正向,哪些是负向。依旧是基于下游人物样本的有监督方案,top-k标签词的选择需要两步

第一步是label表征,作者使用了模型对[MASK]的模型输出作为x,真实标签作为Y,训练了一个logit classifer,这时模型权重(hidden_size * label_size )其实就是标签的空间表征

第二步是token打分,作者把[MASK]替换为其他候选token,p(y|htoken)�(�|ℎ�����)概率值越高,意味着token的输出向量和标签向量相似度越高,因此选择概率值最高的K个token来作为标签的答案词。

最后我们看下AutoPrompt搜索得到的触发词和答案长啥样,可以说是完全出乎意料,毫无逻辑可言,触发词和答案候选词都很离谱哈哈哈

至于效果AutoPrompt超越LAMA嘛,本身AutoPrompt就是使用下游任务样本搜索的Prompt和label,不好才奇怪不是~~~

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

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

相关文章

LeetCode刷题--- 优美的排列

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​​http://t.cs…

SQL手工注入漏洞测试(MySQL数据库)

一、实验平台 https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe 二、实验目标 获取到网站的KEY,并提交完成靶场。 三、实验步骤 ①、启动靶机,进行访问查找可能存在注入的页面 ②、通过测试判断注入点的位置(id) (1)…

Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE

我的报错: PICO4企业版。安装apk,报错“安装失败。(所属的Unity项目打包的apk,被我在同一台pico4安装了20次) 调试方法: PIco4发布使用UNITY开发的Vr应用,格式为apk,安装的时候发生…

Java多线程技术六——线程的状态(备份)

1 概述 线程在不同的运行时期存在不同的状态,状态信息在存在于State枚举类中,如下图。 每个状态的解释如下图 调用于线程有关的方法是造成线程状态改变的主要原因,因果关系如下图 从上图可知,在调用与线程有关的方法后&#xff0…

Scikit-Learn线性回归(一)

Scikit-Learn线性回归一 1、线性回归概述1.1、回归1.2、线性1.3、线性回归1.4、线性回归的优缺点1.5、线性回归与逻辑回归2、线性回归的原理2.1、线性回归的定义与原理2.2、线性回归的损失函数3、Scikit-Learn线性回归3.1、Scikit-Learn线性回归API3.2、Scikit-Learn线性回归初…

mac终端自定义登录欢迎语

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 shigen看着单调的终端,突然有了一丝丝的念头,我要搞的炫酷一点。让我想到的一个场景…

VMvare虚拟机之文件夹共享与防火墙设置

共享文件夹 什么是共享文件夹 共享文件夹是一种在网络上共享文件和文件夹的方法。它允许多个用户通过网络连接到共享文件夹,并可以访问其中的文件和文件夹,进行文件的读取、修改、删除等操作。共享文件夹可以用于方便地共享文件和协作工作,…

STL:std::array 和 基本数组类型array 浅谈一二三

一、优缺点比较 在C中,std::array是标准库提供的数组容器,相比于基础数据类型的数组,它具有以下优点和缺点: 优点: 安全性:std::array提供了边界检查,可以避免数组越界访问的问题。 可以作为…

在Centos7中利用Shell脚本:实现MySQL的数据备份

目录 自动化备份MySQL 一.备份数据库脚本 1.创建备份目录 2.创建脚本文件 3.新建配置文件(连接数据库的配置文件) 4.给文件权限(mysql_backup.sh) ​编辑 5.执行命令 (mysql_backup.sh) ​编辑 二.数据库通过备份恢复 1.创建脚…

jsonhandle 插件下载

网盘地址: 链接:https://pan.baidu.com/s/1hj4GKuGNyDNP2JzsJTLFtg 提取码:87rw 1.打开谷歌浏览器,选择扩展程序,记得选择为开发者模式,然后把下载好的CRX文件拖进去就行了

TCP通信流程

// TCP 和 UDP -> 传输层的协议 UDP : 用户数据报协议,面向无连接,可以单播,多播,广播, 面向数据报,不可靠(接受方不会存储数据,也没有拥塞控制)。效率高&#xff…

二维码智慧门牌管理系统升级:高效授权精准控制

文章目录 前言一、精确权限控制二、角色权限受限与透明操作三、提升工作效率与安全性 前言 二维码智慧门牌管理系统在企业管理中扮演着愈发重要的角色。通过系统升级,管理员可以配置权限角色,为单个或多个用户赋权,实现精准控制,…

如何进行镜像管理

目录 镜像管理 创建自定义镜像 自定义镜像管理 自定义镜像管理方法 对于传统的物理服务器,就要基于现有服务器磁盘制作操作系统镜像,系统镜像可以简单理解成把操作系统中包含的一系列文件通过镜子映射出一模一样的文件并进行打包压缩,就变…

Flowable-升级为7.0.0.M2-第二节

目录 替换变化的类和配置把javax.servlet 替换为 jakarta.servlet修改redis的配置配置logging.level.org.springframework.boot.autoconfigureerror避免影响视听 替换变化的类和配置 把javax.servlet 替换为 jakarta.servlet import javax.servlet.ServletContext; import ja…

AI赋能金融创新:ChatGPT引领量化交易新时代

文章目录 一、引言二、ChatGPT与量化交易的融合三、实践应用:ChatGPT在量化交易中的成功案例四、挑战与前景五、结论《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ [当当](http://product.dangdang.com/29658180.html) | [京东…

【JavaScript】原型对象 => 原型链的深入浅出解读

文章目录 先知概念:原型 prototype隐式原型 __ proto __原型链 先知概念: 在了解原型与原型链之前,我们应该要先明确以下几个概念: 1. 在 JS中 所有的普通对象 都是 通过 new 一个函数来创建的。 2. 在 JS中 所有的函数 本质上也是…

开源问答类知识网站源码系统 附带完整的搭建教程

人们对知识的需求和获取方式也在发生改变。问答类知识网站成为了人们获取答案、解决问题的重要途径之一。然而,由于问答类知识网站需要处理大量的用户提问和回答,因此对于技术的要求也相对较高。小编给大家分享一款开源问答类知识网站源码系统&#xff0…

【Git版本控制】

Day10_Git版本控制 知识点01:课程内容大纲与学习目标 #课程内容大纲版本控制工具Git ​ #学习目标了解下git的背景以及作用了解下git基本使用 知识点02:项目开发中的版本问题 目标:了解项目开发中遇到的开发版本问题 举例:你在大…

广播测试信令记录一文全解

语音广播基本要求 语音广播功能实现用户通过语音输入设备向前端语音输出设备的语音广播。语音流发送者向语音流接收者发送通知消息,语音流接受者在收到通知消息后,进行判断处理。若能够接收广播,则向语音流发送者发起呼叫请求,获…

408数据结构错题知识点拾遗

408相关: 408数据结构错题知识点拾遗 408计算机网络错题知识点拾遗 对于数据结构的学习,个人认为要对概念性的东西进行理解,特别是树的性质、图的相关性质和考察的相应算法。应用题强化的话,对于每一章节尾的应用小节&#xff0c…