GPT3 和它的 In-Context Learning

news2024/9/23 3:32:10

format,png

作者 | 太子长琴 

整理 | NewBeeNLP

大家好,这里是NewBeeNLP。ChatGPT 的爆火让很多 NLPer 大吃一惊,焦虑感爆棚,它的思路和方法都不复杂,但效果却出奇的好。

我想任何研究成果的爆发都不可能是一蹴而就的,期间必然包含这一系列小的创新和优化。于是,重新把 GPT3 的 Paper 拉出来读了一遍,重点关注了实验结果之外的东西,果然发现不少细节。因此,本文还是以 GPT3 为主。

从微调到In-Context Learning

GPT3 的初衷再次一看,其实非常 make sense:预训练时代 NLP 的典型方法是在不同下游任务上进行微调(fine-tuning),但是,人类只需要几个示例或简单的说明就可以执行新的任务。

这里面潜在的意思是,大语言模型内部其实已经学到了所有这些能力,我们要做的是「合理」地去挖掘这些能力,而不是给一大批数据让它重新学习(fine-tuning)。这样做的原因和意义包括:

  • 每个新任务需要一批标注数据,这就限制了语言模型应用范围。

  • 预训练-微调机制本身的问题:预训练模型时在大范围内获取信息,微调时则在非常窄的任务上。这种虚假相关性随着模型表现力和训练分布的狭窄而增长。也就是说,模型能力很强,但被卡在特别窄的任务上,这种强其实是一种被放大的强,其泛化性可能很差【1】【2】。

  • 人类不需要一大批监督数据学习大多数的语言任务,我们往往会将多个任务和技能无缝混合或自由切换。

这里有两个概念要先澄清一下:

  • Meta-Learning:训练时开发了一系列广泛的技能和模式识别能力,推理时使用这些能力快速适应或识别所需的任务。

  • In-Context Learning:使用预训练语言模型的文本输入作为任务范式的一种形式:以自然语言指令(instruction)或任务的一些样例为条件,期望通过预测接下来会发生什么来完成任务的下一个实例。

这里有个图片:

4885f8edee8ecff4e6b6d0435f7f15cc.jpeg

Meta-Learning 捕获通用方法的内循环/外循环结构,而 In-Context Learning 指代 Meta-Learning 的内循环。

而之所以有 GPT3 这篇 paper 就是因为这种 In-Context 的能力还比较差,离微调这种范式还有一段距离。但是他们又坚信这种 In-Context 的范式是值得探究的(上面提到的原因),这才一直沿着这条道一路走了下去。

还有个很重要的点需要强调——模型规模,有研究【3】表明,模型规模和效果有相关性(大模型有大智慧),GPT3 验证了这个假设。

对于 In-Context Learning 的验证,使用了三种不同的 condition:

  • Few-Shot Learning:10-100 个样例(N=2048)作为上下文

  • One-Shot Learning:一个样例

  • Zero-Shot Learning:没有样例,只有一个自然语言指令(instruction)

效果如下:

a729a81a7ec7ee518649a3bd22417378.jpeg

而且,模型大小和上下文中样例数量的一般趋势适用于大多数任务。更大的模型是更熟练的元学习者。

更加可喜的是,在 Zero-Shot 和 One-Shot 下效果都不错,Few-Shot 下甚至偶尔能超过 SOTA。One-Shot 和 Few-Shot 也显示出了快速的适应或即时推理能力。当然,也有一些 GPT3 + Few-Shot 都搞不定的情况,比如 NLI 和一些阅读理解任务。

除此之外,文章还研究了数据污染问题,偏见、公平性以及广泛的社会影响。

方法和数据

关于方法,主要是前面提到的三种设置,文章给了一个非常直观的样例:

cb6b7899e418558f82b03d8e157ed6f1.jpeg

对此不再赘述,不过有一点比较有意思,就是与人类学习的细微差别:人一般会通过问一些问题来确认或进一步确认他们已经理解了要回答的问题,一般是以一种交互的方式;而 GPT3 是通过一些样例来指导模型(或者可以理解为让模型先了解再判断)。它们之间的根本区别可以简单的概括为:人类以理解(推理)为核心,而 GPT3 以表征为核心。当然,你也可以认为后者也是一种「理解」。

接下来是数据,这里最核心的是一个提高数据质量的操作,共包括三步:

  • 根据一系列高质量参考语料库的相似性下载并过滤 CommonCrawl,结果就是 45TB 过滤到 570GB。

  • 在数据集内和数据集之间的文档级别进行模糊重复数据删除(去掉了 10%),防止冗余,并保证衡量过拟合的验证集的真实性。

  • 将已知的高质量参考语料库添加到训练数据集合中,增强 CommonCrawl 并增加多样性。

最终数据集如下:

d4f4865283a37f2ec839f7d92be033e1.jpeg

值得注意的是它的采样策略,并不是根据不同数据集的 size 进行采样,而是根据数据质量——数据质量越高的数据集越有可能被采样到。比如 CommonCrawl 和 Book2 的数据有可能采样不到一次(不一定全部被使用),但其他数据集可能被采样 2-3 次。

局限和影响

局限

局限这一部分篇幅不长但非常精彩,尤其是有了 ChatGPT 再回看时,建议阅读原文。

首先,就强调了它的不足性,尤其对「常识物理学」,比如:“如果把奶酪放到冰箱会不会融化?”事实上,这也是整个 AI 面临的难题。哲学家也对此进行过研究,比如维特根斯坦在《论确定性》中谈及的信念网分布问题,可以参考这篇笔记[1],大概意思是说,AI 擅长的是人类认为的复杂问题(也就是《思考,快与慢》中说的系统二),最不擅长的反而是人类看起来很简单,甚至没有意识到的问题(比如 “我有两只手”)。

第二,GPT3 在结构和算法上的局限性,主要是没有用到双向结构,或其他训练目标(如去噪)。

第三,受预训练目标的限制。即自监督预测已经到极限了,新的方法迫在眉睫。未来的方向包括:从人类学习目标函数【4】(这是 OpenAI 的文章)、强化学习微调或多模态(比如更好的世界模型)【5】。其实,OpenAI 在从人类学习这方面除了【4】还有不少研究,比如 2021 年的【6】和 WebGPT【7】,2022 年的 InstructGPT【8】和【9】。

第四,预训练时的低效率采样——相比人类,样本还是太多,尤其和人类学习相比。未来的一个重要方向是预训练采样的效率,可能来自物理世界的基础知识提供额外信息,或算法改进。

第五,不确定 Few-Shot 是不是在推理时学习到新的任务,还是识别出来了在训练时学到的任务。最终,甚至不清楚人类从零开始学习与从之前的样本中学习分别学到什么。准确理解 Few-Shot 的工作原理是一个未来的方向。

第六,贵而且不方便进行推理,在实际应用中可能是个问题。知识蒸馏在如此规模上进行也可能是新的挑战和机会。

最后,是深度学习的通病——结果不容易解释,而且还记住了训练数据上的偏见,这也是种瓜得瓜种豆得豆。

可以看出这部分内容提到的一些方向正是未来 ChatGPT 成功的关键,真的是看准一条道坚持走下去的典范。

影响

这部分内容主要包括三个:语言模型的滥用、偏见以及能耗,是 LLM 的通用问题了。

对于滥用,最突出的就是造假和欺骗,很多欺诈应用依赖人类写的高质量文本,现在这个瓶颈被 LLM 直接给填平了,这不知道算不算一个小小的潘多拉魔盒。这里面尤其是有组织的团体对 LLM 的恶意使用。

偏见主要包括:性别、种族和区域,小模型比大模型更严重。这里最主要的是要干预,这篇 Paper 未提及的去偏综述[2]可以略作参考。不过文章有一点强调值得注意:去偏不应以指标为导向,而应该以整体方式进行。关于如何分析偏见(以及对应的规范),可以参考【10】。

关于能耗,这里提供了另一个视角:不仅考虑预训练,还应该考虑模型生命周期内的摊销。这玩意儿训练时是比较费电,不过一旦训练好使用起来成本就非常低了(边际成本几乎为 0)。

小结和展望

本文主要回顾了一下 GPT3,当时看这篇 Paper 并没有意识到其中 In-Context 的威力(谁让它当时效果一般呢,看来以后看文章不能光看在公开数据集上的效果),而且这方面其实是有研究的,比如 Facebook 的 MetaICL[3],OpenAI 厉害的地方是坚持这条路并一直想方设法优化(上面的《局限》小节)。

除了 In-Context Learning,语料过滤和去重也是值得注意的两个点,具体参见论文附录 A。其中,过滤用了一个逻辑回归的二分类器,去重则用了 MinHashLSH,两个地方使用了相同的特征。再就是局限部分,体现了对 AI 认知的全面和深度,令读者受益匪浅。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

format,png

文献和参考

核心论文

  • Tom B. Brown, Language Models are Few-Shot Learners, 2020

相关文献

带※表示重要文献。

  • 【1】Dani Yogatama, Learning and evaluating general linguistic intelligence, 2019

  • 【2】R Thomas McCoy, Diagnosing syntactic heuristics in natural language inference, 2019

  • 【3】Jared Kaplan, Scaling laws for neural language models, 2020

  • 【4】※Daniel M. Ziegler, Fine-tuning language models from human preferences, 2019

  • 【5】Yen-Chun Chen, Uniter: Learning universal image-text representations, 2019

  • 【6】Jeff Wu, Recursively Summarizing Books with Human Feedback, 2021

  • 【7】※Reiichiro Nakano, WebGPT: Browser-assisted question-answering with human feedback, 2021

  • 【8】※Long Ouyang, Training language models to follow instructions with human feedback, 2022

  • 【9】Nisan Stiennon, Learning to summarize from human feedback, 2022

  • 【10】Su Lin Blodgett, Language (Technology) is Power: A Critical Survey of “Bias” in NLP, 2020

参考资料

  • Mingyu Zong, A SURVEY ON GPT-3, 2022

本文参考资料

[1]

笔记: https://yam.gift/2018/04/07/AI/2018-04-07-AI-Philosophy-Note/

[2]

去偏综述: https://yam.gift/2021/11/18/Paper/2021-11-18-Debiasing/

[3]

MetaICL: https://yam.gift/2021/11/01/Paper/2021-11-01-MetaICL/

562949ee089e35c3dcede49960c2262c.gif

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

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

相关文章

【历史上的今天】4 月 18 日:第一款交互式电子游戏;IBM 率先研发兆位芯片;硬件公司 Roland 成立

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 18 日,在 1955 年的今天,著名物理学家爱因斯坦在美国新泽西州的普林斯顿逝世。爱因斯坦于 1905 年获得物理学博士学位&#xff0c…

vue---双向绑定

目录 1、.sync修饰符-双向绑定 2、v-model修饰符-双向绑定 3、双向绑定原理 vue 中的双向绑定是语法糖。 1、.sync修饰符-双向绑定 . vue是单向数据流的。父组件可以通过prop向子组件传递数据。子组件需要通过自定义事件来将自己的数据变更通知给父组件,我们可以通过…

分布式任务调度系统分析

背景介绍 首先,我们来思考一些几个业务场景: XX 信用卡中心,每月 28 日凌晨 1:00 到 3:00 需要完成全网用户当月的费用清单的生成XX 电商平台,需要每天上午 9:00 开始向会员推送送优惠券使用提醒XX 公司,需要定时执行…

多线程并发编程学习笔记9(小滴课堂)------线程池及Executor框架

它只会使用10个线程。因为我们设置了它的容量。 我们现在把这个队列容量设置为20. 我们可以看到这里它使用了20个线程。但是出了异常,这个后面我们会学习。 我们现在使用一下我们的callable: 一般我们如果是想在线程执行完以后,获得一个返回…

019 - C++ 中的局部静态(local static)

在前几期里,我们了解了static关键字在特定上下文中的含义。 今天我们看一看另一个环境。我们可以在局部作用域中使用 static 来声明一个变量。 这种情况和我们之前看到的两种static有点不同。这次的局部静态 Local static 有更多的含义。 声明一个变量&#xff0…

个人知识库(持续更新中)

打造一个属于自己的知识库 为什么会有这个知识库会记录什么内容基础知识Java核心Java WebMySQL 中间件&工具项目代码资源仿牛客社区Web开发华夏ERP软件 视频资源代码之外持续更新中… 为什么会有这个知识库 作为羊哥的死忠粉,当他谈到个人知识库这个东西的时候…

RS-485 基础知识:何时需要端接,以及如何正确端接

RS-485 网络的许多信号完整性和通信问题都源于端接,这可能是因为缺少端接或端接不正确。在 RS-485 基础知识系列的这一部分,我将讨论何时不需要端接 RS-485 网络,以及在需要端接时如何使用标准(并联)端接和交流电 (AC)…

【JavaEE】常见的锁策略与CAS的ABA问题

文章目录 1 常见的锁策略1.1 乐观锁与悲观锁1.2 轻量级锁与重量级锁1.3 自旋锁与挂起等待锁1.4 互斥锁与读写锁1.5 可重入锁与不可重入锁1.6 公平锁与非公平锁 2 CAS 操作2.1 CAS 简介2.2 CAS 的应用2.2.1 实现原子类2.2.2 实现自旋锁 3 CAS 的 ABA 问题写在最后 1 常见的锁策略…

Nacos 客户端的服务发现与服务订阅机制的纠缠 - 篇七

Nacos 客户端的服务发现与服务订阅机制的纠缠 - 篇七 历史篇章 🕐Nacos 客户端服务注册源码分析-篇一 🕑Nacos 客户端服务注册源码分析-篇二 🕒Nacos 客户端服务注册源码分析-篇三 🕓Nacos 服务端服务注册源码分析-篇四 &am…

最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及建设项目入河排污口方案报告书

随着水资源开发利用量不断增大,全国废污水排放量与日俱增,部分河段已远远超出水域纳污能力。近年来,部分沿岸入河排污口设置不合理,超标排污、未经同意私设排污口等问题逐步显现,已威胁到供水安全、水环境安全和水生态安全&#x…

ChatGPT探索系列之五:讨论人工智能伦理问题及ChatGPT的责任

文章目录 前言一、安全二、隐私和道德三、我们应该做什么总结 前言 ChatGPT发展到目前,其实网上已经有大量资料了,博主做个收口,会出一个ChatGPT探索系列的文章,帮助大家深入了解ChatGPT的。整个系列文章会按照一下目标来完成&am…

STM32(十六)正交编码器

一、简介 增量式编码器 增量式编码器也称为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲信号就对应于一个增量位移,编码器每转动固定的位移,就会产生一个脉冲信号 通过读取单位时间脉冲信号的数量&#xff…

自动修改文章的软件-自动修改文案原创软件

有没有自动修改文章的软件 修改文章可能是很多人日常工作中必须完成的任务,但一般情况下,这需要人工完成。幸运的是,现在有很多文章修改软件可以帮助我们节省时间和精力。本文将向您介绍一款优秀的修改文章软件,名为147SEO&#…

SLAM论文速递【SLAM—— TwistSLAM:动态环境下的约束SLAM】—4.17(2)

论文信息 题目: Optimization RGB-D 3-D Reconstruction Algorithm Based on Dynamic SLAM 基于动态SLAM的RGB-D三维重建算法优化论文地址: https://ieeexplore.ieee.org/abstract/document/10050782发表期刊: IEEE Transactions on Instru…

Apache POI 实现用Java操作Excel完成读写操作

简介 Apache POI是一个用于操作Microsoft Office格式文件(包括xls、docx、xlsx、pptx等)的Java API库。POI全称为Poor Obfuscation Implementation,是Apache Software Foundation的一个开源项目。它提供了一组Java API,使得Java程…

LLM_StableDiffusion_studio发布

背景: 从chatgpt发布到现在已经超过半年时间,AGI的势头越来越猛。大家都在做各种的尝试和组合,把chatgpt通用的强大的知识表达和理解能力尝试应用在自己的业务场景。前期也是出现非常多的业务应用,但是主要还是围绕chatgpt本身已…

循环神经网络(RNN)简单介绍—包括TF和PyTorch源码,并给出详细注释

文章目录 循环神经网络(RNN)入门教程1. 循环神经网络的原理2. 循环神经网络的应用3. 使用keras框架实现循环神经网络3.1导入对应的库及加载数据集3.2.数据预处理3.3定义RNN模型3.4训练模型3.5测试模型 4.使用PyTorch框架实现上述功能—注释详细5.结论 循…

动静态库的制作和使用

动静态库 一,什么是库二,静态库的制作静态库原理 三,动态库的制作四,动态库的配置五,动态库的加载 一,什么是库 🚀库这个东西我们一直在使用,举个简单了例子,无论你是用…

netplan, NetworkManager, systemd-networkd简介

1、systemd-networkd简介 systemd-networkd是systemd 的一部分 ,负责 systemd 生态中的网络配置部分(systemd-networkd.service, systemd-resolved.service)。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态IP网络等,还可以配…

U8W/U8W-Mini使用与常见问题解决

U8W/U8W-Mini使用与常见问题解决 U8WU8W/U8W-mini简介准备工作U8W/U8W-mini在线联机下载U8W/U8W-mini脱机下载第一步,把程序下载到U8W/U8W-mini烧录器中:第二步,用U8W/U8W-mini烧录器给目标单片机脱机下载 U8W/U8W-mini烧录器使用中常见的问题…