ChatGPT的前生: Prompting思想

Prompt的思想是语言模型通往真正大一统的关键一步 。

ChatGPT目前大火,然而不少人对于ChatGPT的前辈---Prompt范式却不了解。希望通过本文,可以让读者对Prompt范式所蕴含的思想有所了解。本文不侧重细节的讲解,而重点突出Prompt范式背后的思想和启发。

1. Prompting: NLP的最新范式

Prompting, 又称in-context learning,指的是“预训练-Prompt"这一NLP最新的范式,也属于Parameter Efficient(参数高效)学习方法的一种,但是把Prompting仅仅理解为Parameter Efficient学习方法我只能说格局小了。要理解Prompting的精髓,还是要从更高层面开始。

我先抛出这样一句话:

之前的范式下产生的模型从本质上决定了无法在任务级别拥有泛化能力,而Prompting在任务级别具有泛化能力,对之前的NLP范式降维打击。
4f8cf37873e27d8d05b38d20cd178984.jpeg

说回NLP的预训练-微调范式:预训练模型主要使用大规模的非特定任务场景的语料进行训练,在微调步骤,使用特定领域的语料去对模型的参数进行精细调整,使得最终的模型可以很好地解决当前领域的问题。大量的研究工作已经表明:预训练+微调的范式可以大幅超越只使用特定任务数据训练的模型。这也很好理解;在潘小小:【NLP预训练】深入理解“预训练”语言模型这篇文章中,我用一句话简单概括了:

“使用尽可能多的训练数据,从中提取出尽可能多的共性特征,从而能让模型对特定任务的学习负担变轻。“

研究人员很快发现预训练模型的性能和模型的大小有关;简单地说,就是模型越大效果越好。但这样就带来了一个问题:传统的微调需要更新所有的模型参数,这显然训练效果并不会很好,因为很多时候和预训练模型的规模相比,特定任务的那点数据显然少得可怜。此外,当人们把微调好的模型用到线上的时候,问题又来了:每个任务甚至每个领域都需要单独部署一个微调好的模型,显然很不经济实惠。

于是研究人员提出了部分参数微调/冻结部分参数的方法:我们可以采用关于模型参数分布的先验知识---模型的某些部分有特定的功能(或者说,偏向特定的功能)。比方说:Transformer模型用在机器翻译时,Encoder部分负责将源语言编码成高维向量,Decoder部分负责生成目标语种中的对应意思的句子。有了类似这样的假设之后,在微调模型的参数时,我们就可以利用这些先验知识,只更新和目标任务最相关的那部分。这样做的好处:(1)训练更快、更有针对性、效果也往往更好(2)部署的时候可以多个任务/领域共用一个背景预训练模型,只需针对每个任务/领域替换被更新的部分参数即可。

在上述”部分参数微调“方法的基础之上,研究人员提出了Adapter方法[1]。通过添加一个灵活的即插即用的可训练适配模块(Adaper Module),我们可以改变模型某一层(或某几层)的数据分布,从而让模型可以适用于各种各样的任务和领域。典型的做法就是每一任务或者每一领域对应了一个Adapter Module,训练的时候只更新对应任务Adapter的参数,推理的时候激活对应任务/领域的Adapter,其它任务/领域的Adapter直接忽视。和”部分参数微调“方法相比,Adapter方法的优势有(1)更轻量级(2)同样比例的参数效果更好。

以上方法都是基于”预训练-微调“的范式的方法,无论多么轻量级,每个任务都还是有一套特定的参数(即使大部分参数可以共享)。说到这里,大多数人其实并没有意识到,它的致命缺点正是:任务本身需要人为进行定义。但是现实生活中的知识,并不是完全地按照任务进行分类的,现实中大多数任务会涉及到多个任务的能力: 比如一个中国人阅读了一篇英文的文章,最后用中文写了个总结 --- 这就涉及到 翻译+总结 两个任务。

而Prompting可以做到模糊任务的界限---不需要人为对任务进行划分,相反,任务的描述会作为输入的一部分直接输入预训练模型。这其实就是为什么Prompting范式是”通往真正大一统语言模型的关键一步“。

  • 下图摘录自一篇Survey:Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing[2]

7b21ac2fed805a747cf5a413bcc09115.jpeg

两种NLP范式的对比:上图是”预训练-微调“范式,下图是"预训练-Prompting”范式。

2. Prompting是什么

Prompting方法最初是在2020年和GPT-3[3]一同提出来的。Prompt范式认为预训练模型本身就可以完成很多任务,只需要在输入的时候对模型进行引导(又称:提供context)即可。怎么引导呢?其实很简单,最开始的Prompt版本只需要用自然语言将任务本身进行描述,将任务变为”填空“(针对双向模型BERT)或者”生成“(针对自回归模型GPT)的任务即可。举几个简单的例子:

  • 文本情绪分类任务:任务本身的目的是任意输入一段文本,预测对应的情绪(正面、负面、中性)。经典的预训练-微调范式下的做法是:将在预训练模型的基础上增加分类器模块,使用特定任务数据进行微调分类器模块。在遇到输入“今天天气很好”时,模型输出“正面”。而在Prompt范式下,我们可以将如下文字直接输入没有经过微调的模型: "今天天气很好,我的心情是[MASK]的" ==> [MASK]预测值是"开心”,再将“开心”映射为"正面"就很容易了。

  • 机器翻译任务:任务本身的目的是输入一种语言的一段文本,模型生成另一种语言的同义句。在Prompt范式下,我们可以将如下文字输入模型:“翻译成英语:今天天气真好”==>模型输出“This is a good day.”

从上面的例子中我们很容易看出Prompt范式有如下特点:它无需特定领域的数据进行训练就可以用于各项NLP任务,并且无需在模型参数上做任何调整。Prompt的成功证明了在模型和训练数据量大到一定程度时,模型本身就更接近“百科全书”,而Prompt就是将“百科全书”里的知识金矿挖掘出来的各种钥匙。

8a39a5a6ae172fc74c6bade5f8eaa472.jpeg

短短5年从GPT-1到GPT3.5,模型变大了3000倍,未来的GPT-4更是拥有100Trillion参数

3. Prompting方法分类

Prompt从大类来分,可以分为(1)手工Prompt (2)参数化Prompt。

手工Prompt就是上面提到的“对任务进行自然语言描述”的方法。主要分为“Prefix Prompt"和”Cloze Prompt“,其中"Prefix Prompt"一般针对生成式NLP任务(NLG),而Cloze Prompt针对理解式NLP任务(NLU) (p.s. 如果不了解什么是生成式NLP、什么是理解式NLP,强烈建议看看潘小小:【NLP预训练】深入理解“预训练”语言模型 的第3章:NLU任务的预训练 VS NLG任务的预训练)

  • Prefix Prompt举个例子就是上述提到的机器翻译任务的模板。其实在多语言机器翻译领域广泛使用很多年的language indicator(又称language id)就可以看作是一种Prefix prompt。

  • Cloze Prompt举个例子就是上述提到的文本情绪分类任务的模板。

参数化Prompt也叫"自动Prompt",主要分为离散Prompt和连续Prompt。所谓“离散”,指的是候选的Prompts依然是自然语言的词;所谓“连续”,指的是Prompts本身不需要是自然语言的序列,而可以是词表中的token的任意组合,甚至可以引入不在原来词表中的token。其中比较出名的就是Prefix Tuning[4]:在input层添加一串连续的向量(拥有独立embedding的新token)前缀,同时在每个hidden layer对应添加相同长度的前缀(这一步不引入额外参数,但是略微修改了模型结构)。训练时对每个独立的任务做分别的参数更新。需要注意的是,在下游任务上进行训练时,只有Prefix对应的Embedding参数进行更新。

Prompt Tuning[5]在Prefix Tuning的基础上进一步做了简化,每个hidden layer不再需要对应添加相同长度的前缀,因此模型结构完全没有改变,只是多了prefix token对应的embedding参数(大概占模型总参数的0.1%)。Prompt Tuning也因此更加灵活。

47410eeacef725a326e694e55db7cd7a.jpeg

Prompt方法分类(简化版)

4. Prompt效果&总结

说了这么多,Prompt范式的效果怎么样?又有哪些重要结论呢?

  1. 预训练-Prompt能达到和预训练-微调相当的效果,即使可训练参数缩减了1000倍

  2. 模型的规模是决定性因素:模型越大,prompting的模型效果越好

  3. 对任务有泛化能力,即few-shot / zero-shot能力强

具体的效果可以去看几篇论文:MULTITASK PROMPTED TRAINING ENABLES ZERO-SHOT TASK GENERALIZATION[6], The Power of Scale of Parameter-Efficient Prompt Tuning[4], Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? [7]

5. 为什么Prompting可以演化出ChatGPT?

说了这么多,相信大家也都明白了为什么Prompting技术可以演化出ChatGPT这个好东西。

【一句话总结】Prompting技术突破了对”任务“的常规定义,使得复合任务的实现成为可能(也就是研究人员常说的”zero-shot")。大家可以回想一下,日常生活中大多数“任务”都不是常规NLP中一个个分门别类的子任务,因此Prompting这种无视任务本身的能力才是它演化出ChatGPT的根本。

ChatGPT使用的基础模型是GPT-3.5,就已经达到惊人的效果,而研发中的GPT-4参数量是GPT-3.5的几百倍……

Prompting 和 ChatGPT的诞生和成功实际上宣告了新时代的开始:NLP那些人为定义的针对子任务的独立研究将慢慢淡出历史舞台。

Reference

AI Box专栏:NLP新宠——浅谈Prompt的前世今生

GitHub - thunlp/PromptPapers: Must-read papers on prompt-based tuning for pre-trained language models.

参考

  1. 1. ^Parameter-Efficient Transfer Learning for NLP https://arxiv.org/pdf/1902.00751.pdf

  2. 2. ^Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing https://arxiv.org/abs/2107.13586

  3. 3. ^Language Models are Few-Shot Learners https://arxiv.org/pdf/2005.14165.pdf

  4. 4. ^abPrefix-Tuning: Optimizing Continuous Prompts for Generation https://arxiv.org/abs/2101.00190

  5. 5.^The Power of Scale for Parameter-Efficient Prompt Tuning https://aclanthology.org/2021.emnlp-main.243/

  6. 6.^Multitask Prompted Training Enables Zero-Shot Task Generalization https://arxiv.org/abs/2110.08207

  7. 7.^Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? https://arxiv.org/abs/2202.12837

来源:知乎

作者:潘小小,亚马逊应用科学家

END

71084cc37b466d0a0df863c1206675c2.png

分享

收藏

点赞

在看

8ab128e0a1a776dbb3b49f023c24eed8.gif

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python机器学习预测足球比赛结果:第一篇 数据采集 (上)

利物浦7比0狂胜曼联,这个锅不能再让C罗背了吧。预测足球比分有什么好方法吗? 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 探索足球结果和赔率的 Python 项目。 随着数据建模成为处理随机性的强大资源&#xff0…

ChatGPT、GPT4、AutoGPT 和 MemoryGPT:初学者指南

人工智能 (AI) 不仅在改变行业,也在改变我们的日常生活。借助人工智能,我们可以改善我们的组织和生产力,让我们能够专注于真正重要的事情。在本文中,我们将探讨一些适用于日常生活的 AI 工具,以及它们如何帮助您保持井…

《2023 大语言模型综合能力测评报告》出炉:以文心一言为代表的国内产品即将冲出重围

近日国内与人工智能领域相关的利好政策陆续释放,中央召开的相关会议强调“未来要重视通用人工智能发展,营造创新生态。”《北京市促进通用人工智能创新发展的若干措施(2023-2025 年)(征求意见稿)》围绕五大…

我用GPT干的18件事!

给大家整理了 18 种 ChatGPT 的用法,看看有哪些方法是你能得上的 语法更正文本翻译语言转换代码解释修复代码错误作为百科全书信息提取好友聊天创意生成器采访问题论文大纲故事创作问题类比创建 SQL 需求情感分析将产品描述转变为广告关键字提取闲聊机器人 语法更正…

指令模板:采访大纲生成 | AIGC实践

最近收获了一些朋友的谬赞,说我“执行力太强了”,可以持续输出内容。 呃,其实吧,这些素材都是从我的实际工作和生活中来的,只是稍加整理而已。 要说起来,AIGC的出现已经完全改变了我的工作方式。在遇到问题…

每日一个 ChatGPT 使用小技巧系列之4:使用 AI 工具对 SAP ABAP 代码的编写质量进行打分

本系列之前的文章: 与其整天担心 AI 会取代程序员,不如先让 AI 帮助自己变得更强大 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材,让 ChatGPT 帮你写作 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的…

Vue中render函数浅浅详解

render介绍 众所周知,仅限于我大前端,Vue中的核心就是虚拟DOM。 通常我们都会把我们的页面结构逻辑都写在 template 中,然后再通过vue将我们的代码转换成虚拟DOM,相比于真实DOM,虚拟DOM是通过js代码处理的,…

Android 期末text的 浅浅复习

Android 编程题text 文章目录 前言一.预测编程题11.代码解析2.具体代码 二.预测编程题21.代码解析2.具体代码 三.预测编程题31.代码解析2.具体代码 四.预测编程题41.代码解析2.具体代码 五.预测编程题51.代码解析2.具体代码 六.预测编程题61.代码解析2.具体代码 总结 前言 个人…

浅浅地讲一下引用吧

文章目录 🎄 前言💖 何为引用🍺深入理解引用✈️取别名规则:权限只能缩小不能放大 😁 引用的简单应用🚙 引用和指针的区别🎉结语 🎄 前言 开启C之路,希望看了这篇文章之…

浅浅理解.net core的路由

路由: web的请求到达后端服务时,controller(控制器)会处理传入的http请求并响应用户操作,请求的url会被映射到控制器的操作方法上。 此映射过程由应用程序中定义的路由规则完成。 ASP.NET.Core MVC中的路由 路由使用一对由UseRouting和UseEnd…

FPGA图像处理 浅浅浅浅浅记

FPGA因其并行处理数据、高速和可编程等特性在图像处理方面得到广泛应用,特别是在简单算法的时候,即图像处理的预处理时,可以通过一些FPGA开发公司所配置的软件进行对算法的实现。 Vivado的一个工具:System Generator 可以直接把…

UCOS(浅浅忆)

UCOS 简介UCOSIIUCOSII 移植 F1UCOSII 任务UCOSII 消息邮箱、信号量 简介 1、实时操作系统分为硬实时和软实时两类 2、UCOSII、UCOSIII的区别 1、UCOSIII新增功能 1.1 同时支持优先级与时间片调度算法 1.2 将中断任务调节交给系统任务处理,大大缩短中断执行时间 1…

浅浅的聊一下 WebSocket

浅浅的聊一下 WebSocket 第一次看到 ws:// 和 wss:// 时候,感觉好高级啊,还有这种协议。 Websocket 历史 WebSocket是在2008年6月诞生的1。经由IEFT标准化后,2009年chrome 4第一个提供了该标准支持,并默认启用。于2011年由IEFT标…

中关村科金张杰:ChatGPT火爆背后,对话式AI在企业服务场景面临三大挑战|MEET2023...

梦晨 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT火爆,也让更多人看到对话式AI的商业价值。 根据艾瑞咨询发布的《2022年中国对话式AI行业发展白皮书》,2021年对话式AI的市场规模为45亿元,带动规模126亿元。 在MEET2023智能未来大会上&#x…

可怕的人工智能ChatGPT

闲来无事想看看ChatGPT作诗的水平如何,于是让ChatGPT模仿苏轼写一首古诗,第一首如下: 读完这首诗,我差点把剩下的几根头发薅下来 接下来抱着试试看的态度给ChatGPT说一下稍微具体点的要求: 唉,古诗的规则…

python统计三国演义中人物出现的频次

方式一. 简化版 安装jieba库/numpy库编程读取《三国演义》电子书,输出出场次数最高的10个人物名字 代码注释: import numpy import jieba# numpy输出有省略号的问题,无法显示全部数据 numpy.set_printoptions(thresholdnumpy.inf)def readF…

对行业大模型的思考

深度学习自然语言处理 分享知乎:黄文灏职位:北京智源AI研究院技术负责人 看到了 Naiyan Wang[1] 和 刘聪NLP[2] 的两篇文章,都提到了对行业大模型的一些看法,有很多相同的想法。正好身边有很多人在讨论行业大模型,想要…

浅谈爆火的AIGC会不会是下一个元宇宙?

OpenAI终于发布了ChatGPT安全方法,这距离意大利政府公开宣布全面禁止ChatGPT还不到一周。 ChatGPT对隐私规则的侵犯和版权问题的触及,伴随一季度迅速在全球范围内的爆火而出现。 紧随意大利的是,德国、日本、法国、加拿大和美国&#xff0c…

斯坦福大学AI课程;创始人剽窃丑闻后 Stability AI 两名高管离职,公司前景存疑

🦉 AI新闻 🚀 Windows Copilot:微软的智能AI助手助力Windows操作系统革命 摘要:微软发布了Windows Copilot的开发者预览版更新。Windows Copilot是微软最新推出的智能助手,通过它用户可以无门槛地使用Windows的各种功…