chatGPT预训练模型范例之GPT3系列模型的解密

news2024/11/17 14:16:33

目录

前言

一、GPT的背景

二、GPT的架构

那么如何实现零样本(zero-shot)学习呢?

这里我们还是主要来看一下 GPT-3 中所谓的 few-/one-/zero- shot 方式分别是什么意思?

三、GPT的应用

四、GPT3的局限性


前言

近年来,预训练模型在自然语言处理领域取得了重要突破,其中GPT系列(Generative Pre-trained Transformer )以其强大的生成能力和泛化性能引起了广泛关注。本文将从GPT系列的背景、架构、GPT3应用和局限性等方面进行浅谈,希望能为大家提供一个全面的了解。

图片

(各个大模型发布时间)

一、GPT的背景

  GPT系列都是OpenAI发布的预训练语言模型(Generative Pre-trained Transformer),其中包含GPT-1,GPT-2,GPT-3,GPT3.5和GPT4。其中,GPT-1是2018年发布的第一代模型,它使用了12个transformer decoder层,共有117M个参数;GPT-2是2019年发布的第二代模型,它使用了48个transformer decoder层,共有1.5B个参数;GPT-3是2020年发布的第三代模型,它使用了175B个参数 。GPT4和GPT3.5都是由OpenAI开发的大规模自然语言生成(NLG)模型,它们可以根据给定的文本输入生成相关的文本输出。GPT4预计将拥有超过100万亿个参数(1e+15),而GPT3只有1750亿个参数(1.75e+11)。 这意味着GPT4可以处理更多的数据,生成更长、更复杂、更连贯、更准确、更多样化和更有创造力的文本。

图片

(GPT系列参数量)

二、GPT的架构

  预训练研究最早起源于迁移学习,其核心思想是基于已有知识学习新知识,将预训练模型应用于解决具体任务。早期预训练模型主要使用有监督数据,如图像领域的ImageNet数据集。通过在ImageNet上预训练的图像分类模型(如ResNet50),可以在新的图像分类任务上实现显著的性能提升。然而,在NLP领域,文本与图像的性质不同,因此需要采用无监督学习方法训练预训练模型。NLP领域尝试使用无监督学习方法来训练预训练模型,这意味着模型在训练过程中不需要大规模有监督的数据集,而是通过学习大量无标注文本数据来捕捉语言的结构和语义信息。在这种情况下,预训练模型如GPT(Generative Pre-trained Transformer)就是 , 其中GPT-1和GPT-2只有解码器, GPT-1:基于 Transformer 架构,在文本生成领域表现突出架构上,GPT-1和 GPT-2 基于 Transformer 架构,但是仅保留了架构中的解码器(Decoder)部分。而GPT-3则是在GPT-2的基础上加入了编码器。

训练步骤上,分为两个阶段:

1)无监督预训练:采用多层 Transformer 模型的解码器为语言模型,进行基于大文本语料库的高容量无监督学习;

2)有监督微调:当下游的问题具有结构化特征,例如有序的句子对或文档、问题和答案的三元组,首先将其转换成特定的序列结构, 再根据针对性的数据集进行微调训练。GPT-1 在自然语言推理、问题回答、语义相似性和文本分类等方面,性能均优于绝大多数相似模型。

  其实,GPT-1模型的核心本质思想是利用大量的无标签文本数据进行预训练,从而学习到丰富的语言知识。预训练阶段,GPT模型通过自监督学习,使用masked language model任务,即预测被遮挡的单词。这样,模型可以在大量文本数据中学习到词汇、语法、句子结构等语言知识。在预训练完成后,GPT-1模型可以通过微调的方法应用于各种下游NLP任务,如文本分类、情感分析、命名实体识别等。预训练技术的优势在于通过统一的机制——即Pretrain + Finetune范式,解决各种自然语言处理任务,在GPT微调阶段,模型使用有标签的数据集进行训练,以便适应特定任务的需求。通过这种预训练和微调的方法,GPT模型可以在多种NLP任务中取得优异的表现。

图片

(Transfomer模型架构)

  GPT-1 首先提出了在无监督的大规模预料上进行预训练,再在下游任务上进行微调的训练范式。至于为什么使用 Transformer 模型,而非 RNN,作者指出:Transformer 模型有更结构化的记忆(more structured memory),能够更好地处理文本中的长距离(long-term)依赖关系,从而能更好地抽取出句子层面和段落层面的语义信息,因此在迁移学习中,Tranformer 学习到的特征更加稳健。在迁移学习时,GPT-1 设计了各种任务相关(task-specific)的输入表示。

  GPT-2在GPT的基础上增加了数据和模型规模,采用了zero-shot学习设定,即在预训练完成后不需要任何下游任务的标注数据进行微调,而是直接进行预测。在方法没有大创新的情况下,通过 “大力出奇迹”,得GPT-2在预训练阶段可以学习到更丰富的语言知识。这种方法的优势在于,模型可以在没有标注数据的情况下解决各种下游任务。这对于那些难以获取标注数据的任务来说,具有很大的实用价值。然而,zero-shot学习设定也存在一定的局限性,如模型可能在某些任务上的性能不如经过微调的模型。

那么如何实现零样本(zero-shot)学习?

图片

(GPT3.5和GPT4零样本学习与精确度关系坐标图)

在GPT-2中,我们要实现零样本学习,即没有任何调整过程。因此,在构造输入时,我们不能使用预训练阶段未出现过的特殊符号。幸运的是,自然语言处理具有很强的灵活性,我们只需将任务需求告诉模型,如果有足够的预训练文本支持,模型应该能理解我们的要求。以机器翻译为例,要使用GPT-2进行零样本机器翻译,只需将输入文本构造为“将英语翻译成中文,[英文文本],[中文文本]”。例如:“将英语翻译成中文,[machine learning],[机器学习]”。 这种做法就是日后鼎鼎大名的 prompt。

图片

这里我们还是主要来看一下 GPT-3 中所谓的 few-/one-/zero- shot 方式分别是什么意思?

如下图所示,GPT-3中的零样本、样本和少样本学习方式与常规微调方式有所不同。

微调方式的小样本学习需要根据给定的下游任务样本和标注构造损失函数,反向传播梯度,更新模型权重,然后进行预测。GPT-3完全没有采用这种方式。

图片

(零样本、样本和少样本学习基本定义)

零样本学习(zero-shot):给定任务描述,如“将英语翻译成法语”,然后直接给出问题,要求模型给出答案。这种方式与GPT-2一致。

样本学习(one-shot):给定任务描述,然后给一个例子,包括问题和答案,如“sea otter => loutre de mer”,之后再给出问题,将整个文本作为输入,要求模型给出答案。这种方式期望模型利用预训练阶段海量的文本数据积累和Transformer的自注意力机制,理解问题和示例,然后仿照示例给出预测。 笔者认为这种方式可行的根本原因是自然语言的灵活性和生成式模型的创造性,使得我们能够直接与模型进行交互,告诉模型要做什么任务和任务示例。在计算机视觉领域,类似的事情似乎很难实现。

少样本学习(few-shot):与样本学习类似,只是给的示例更多。

GPT-3 中的任务设定很惊艳,但是细想之下,也是无奈之举并且也有缺点。一方面,模型规模实在太大,微调来更新权重参数不可行,只好采用 few-shot 的方式。另一方面,模型权重不能更新,每次理解下游任务之后不能保存下来,也就是说每次做同一个下游任务都要给同样的例子。还有,下游任务的示例也不能太多,因为模型可能无法处理过长的输入序列。如果在我们的实际下游任务中确实有不少可供学习的样本,GPT-3 恐怕不是一个好的选择。所以,虽然 GPT-3 能做到的事情似乎听起来更接近 “人工智能”,但是相关的跟进工作并不多。这应该是作者们充分挖掘模型能力,规避模型缺点,扬长避短设计出的任务设定,这种思路值得学习。

三、GPT的应用

这里主要讲讲关于GPT-3在多种自然语言处理任务上表现出色,包括:

1.文本生成:GPT-3在文本生成方面具有很强的能力,可以生成连贯、自然的文本。这使得它在新闻报道、故事创作、诗歌创作等领域具有广泛的应用潜力。例如,新闻机器人可以利用GPT-3生成新闻稿,作家可以使用GPT-3来创作故事或诗歌,提高创作效率。

2.问答系统:GPT-3在问答系统方面表现出色,能够理解用户提出的问题并给出准确的答案。这使得GPT-3在客户服务、教育等场景中具有很大的应用价值。例如,企业可以使用GPT-3构建智能客服系统,提高客户满意度;教育机构可以利用GPT-3开发智能教学辅助工具,帮助学生解答疑问。

3.文本摘要:GPT-3在文本摘要任务上表现优异,能够从原始文本中提取关键信息,生成简洁、准确的摘要。这对于处理大量文本信息、提高阅读效率具有重要意义。例如,研究人员可以利用GPT-3对学术论文进行摘要,快速了解论文主要观点;企业可以使用GPT-3对商业报告进行摘要,提高决策效率。

4.机器翻译:GPT-3在机器翻译任务上表现出强大的能力,可以实现高质量的多语言翻译。这对于跨语言沟通、国际合作具有重要价值。例如,企业可以利用GPT-3进行多语言翻译,促进跨国业务发展;政府可以使用GPT-3提供多语言信息服务,方便国际交流。

5.代码生成:GPT-3在代码生成方面具有很强的能力,可以根据自然语言描述生成相应的代码。这对于提高编程效率、降低开发门槛具有重要意义。例如,软件开发者可以利用GPT-3根据需求描述生成代码,提高开发效率;非专业人士可以使用GPT-3生成简单的代码,实现个性化需求。

四、GPT3的局限性

尽管GPT-3在多个任务上表现出色,但仍存在一些局限性:

一方面,模型规模过大,微调更新权重参数不可行,只能采用少样本学习方式。另一方面,模型权重不能更新,每次理解下游任务后不能保存,每次做同一个下游任务都要给相同的例子。此外,下游任务的示例不能太多,因为模型可能无法处理过长的输入序列。如果实际下游任务中有大量可供学习的样本,GPT-3可能不是最佳选择。

因此,尽管GPT-3能做的事情更接近“人工智能”,但相关跟进工作并不多。充分挖掘模型能力,规避模型缺点,扬长避短设计出的任务设定,这种思路值得学习。

GPT-3作为预训练模型的范例,包括最近爆火的chatGPT背后的GPT3.5都展示了自然语言处理领域的巨大潜力,ChatGPT 是基于 GPT3.5 的基础模型框架,核心变化在于通过真实的调用数据以及人类反馈的强化学习进行训练。ChatGPT3.5 主要用于自然语言处理、机器翻译等任务,而 ChatGPT3.5 拥有更强大的强度,可用于更复杂的语言分析,比如情感分析、语法结构分析。所以,ChatGPT 和 GPT3.5 是同一系列的产品,但 ChatGPT 是在 GPT3.5 的基础上进行了改进和优化。GPT3.5相对于GPT3提升了对话能力、文本能力、图像能力、代码能力、数学运算能力等一系列算法。在某些领域,GPT-4比GPT-3.5更可靠、更有创意,并且能够处理更细微的指令,这对一些行业的公司销售、内容审核和编程业务产生了较大影响。ChatGPT 背后的GPT3.5采用基于人类反馈的强化学习(RLHF)来不断微调预训练语言模型(LLM),旨在让模型能够更好地理解人类的命令和指令含义,如生成小作文、回答知识问题和进行头脑风暴等。该方法不仅让模型学会判断哪些答案是优质的,而且可以确保生成的答案富含信息、内容丰富、对用户有帮助、无害和不包含歧视信息等多种标准。因此,RLHF是一种有效的方法,可以帮助LLM不断提升性能和适应各种用户需求。

然而,对比GPT-4,GPT4可以更准确地解决用户的问题,具有更广泛的常识和解决问题的能力,更具创造性和协作性。可以接受图像作为输入,并生成说明文字、分类和分析答案。还能够处理超过25000个单词的文本,允许长文内容创建、扩展对话以及文档搜索和分析等用例。它的高级推理能力超越了,在大多数专业测试以及相关学术基准评测中,GPT-4的分数高于GPT3。

GPT系列的预训练技术的发展确实推动了人工智能应用的落地。目前,AI技术已从感知智能时代迈向认知智能时代。近期备受关注的Stable Diffusion和ChatGPT等模型在各自领域展示了令人惊艳的效果。我们期待AI技术在未来能够从认知智能时代进入AGI(通用人工智能)时代,为人类带来更多便利和价值。

福利:
包含:Java、云原生、GO语音、嵌入式、Linux、物联网、AI人工智能、python、C/C++/C#、软件测试、网络安全、Web前端、网页、大数据、Android大模型多线程、JVM、Spring、MySQL、Redis、Dubbo、中间件…等最全厂牌最新视频教程+源码+软件包+面试必考题和答案详解。

福利:想要的资料全都有 ,全免费,没有魔法和套路

关注公众号:资源充电吧

点击小卡片关注下,回复:学习

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

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

相关文章

分割训练日志的可视化

这一部分主要是将mmdetection训练得到的json文件可视化,代码主要源于github,具体哪一个忘记了(readme里面没有原址…)是专门做的mmdetection 结果可视化的,非常强!!。使用时如果出现keyerror的话…

MT3041 多项式变换求值

注意点: 1.使用单调栈 2.用ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);避免超时 3.此题除了ans最好不要用long long,如果a[]和b[]都是long long 类型,可能会超内存 4.ans (ans % p p) % p;防止负数 5.使用秦九韶算法计算指数…

MySQL用户管理操作

用户权限管理操作 DCL语句 一.用户管理操作 MySQL软件内部完整的用户格式: 用户名客户端地址 admin1.1.1.1这个用户只能从1.1.1.1的客服端来连接服务器 admin1.1.1.2这个用户只能从1.1.1.2的客服端来连接服务器 rootlocal host这个用户只能从服务器本地进行连…

ptrade从零开始学习量化交易第11期【ptrade策略引擎简介之on_order_response - 委托主推(可选)】

策略引擎简介 更加详细的调用方法,后续会慢慢整理。 也可找寻博主历史文章,搜索关键词使用方案,比如本文涉及函数on_order_response ! 感谢关注,咨询开通量化回测与获取实盘权限,欢迎和博主联系&#xf…

经验分享:C++ error:‘syscall’ was not declared in this scope

明明已经加了头文件 #include <sys/syscall.h>#define gettid() syscall(__NR_gettid)但是依旧不能使用 syscall() 函数&#xff0c; 检查源码后&#xff1a; sys/syscall.h 内部表示&#xff0c;他封装了 打开对应的 syscall.h 文件内部依旧没有 syscall()函数的声明…

Vue02-黑马程序员学习笔记

一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&#xff09; 渲染 / 删除 / 修改数量 …

炫酷gdb

在VS里面调试很方便对吧&#xff1f;&#xff08;F5直接调试&#xff0c;F10逐过程调试--不进函数&#xff0c;F11逐语句调试--进函数&#xff0c;F9创建断点&#xff09;&#xff0c;那在Linux中怎么调试呢&#xff1f; 我们需要用到一个工具&#xff1a;gdb 我们知道VS中程…

qt中使用tableWidget不显示表头和内容的可能原因

需求是想要把sqlite数据库中的内容通过tableWidget显示出来&#xff0c;但是在使用过程中发现了一些问题 使用ui->tableWidget->setHorizontalHeaderLabels设置表头的时候&#xff0c;发现怎么样都不显示表头&#xff0c;参考这篇文章&#xff0c;应该使用ui->tableW…

Sping6 笔记(一)【优秀的轻量级框架】

Spring6 介绍&#xff1a; 发布时间&#xff1a;2022年11月Spring 框架是一款优秀的轻量级开源框架&#xff0c;为了解决企业应用开发的复杂性而出现Spring 框架的用途&#xff1a;服务器端的开发特点&#xff1a;简单性、可测试性、松耦合性 学习 Spring6 的前置知识&#x…

react组件中的共享数据

在前面的示例中&#xff0c;每个 MyButton 都有自己独立的 count&#xff0c;当每个按钮被点击时&#xff0c;只有被点击按钮的 count 才会发生改变&#xff1a; 然而&#xff0c;你经常需要组件 共享数据并一起更新。 为了使得 MyButton 组件显示相同的 count 并一起更新&…

Socket同步通讯

目录 引言 1. 建立连接 2. 数据传输 3. 同步机制 4. 处理延迟 5. 安全性 6、一对一Socket同步通讯 客户端 代码分析 服务端 代码分析 7、服务端操作 1、首先我们先运行客户端代码 2、服务端点击Connect连接客户端 3、服务端输入信息传输到客户端 4、断开连接 引…

芯片设计公司外协ERP数字化运营:科技与管理的融合

随着信息技术的快速发展&#xff0c;ERP(企业资源计划)系统已经成为现代企业管理不可或缺的一部分。在芯片设计行业&#xff0c;由于产品的复杂性、技术的高要求以及市场的快速变化&#xff0c;外协ERP数字化运营显得尤为重要。 芯片设计公司的外协ERP数字化运营&#xff0c;主…

javaSwing员工工资管理系统(文档+视频+源码)

摘要 由Java swing mysql数据库实现的员工工资管理系统&#xff0c;该项目功能相对完善&#xff0c;有管理员和普通用户两个角色&#xff0c;分别实现了一些列功能&#xff0c;数据库采用的是mysql 系统实现 我们先以员工的身份查询一下&#xff1a; 接下来我们以管理员身份…

Qt | QCalendarWidget 类(日历)

01、QCalendarWidget 类 1、QCalendarWidget 类是 QWidget 的直接子类,该类用于日历,见下图 02、QCalendarWidget 属性 ①、dateEditAcceptDelay:int 访问函数:int dateEditAcceptDelay()const; void setDateEditAcceptDelay(int) 获取和设置日期编辑器的延迟时间(以毫秒…

事务的ACID是什么及扁平化事务、链式事务

一、什么是事务 1.事务&#xff08;Transaction)是区别于数据库文件系统的重要特性之一。事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时&#xff0c;可以确保要么所有修改都已经保存&#xff0c;要么所有修改都不保存。 2.InnoDB存储引擎中的事物完…

深度学习之基于YoloV5车牌识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与目标 随着智能交通系统的快速发展&#xff0c;车牌识别技术在交通管理、安防监控等领域扮演着越来越…

javaSwing购物系统项目(文档+视频+源码)

摘要 由Java swing实现的一款简单的购物程序&#xff0c;数据库采用的是mysql&#xff0c;该项目非常简单&#xff0c;实现了管理员对商品类型和商品的管理及用户注册登录后浏览商品、加入购物车、购买商品等功能&#xff0c;旨在学习Java 图形界面开发 系统实现 我们先来管理…

【HarmonyOS尝鲜课】- 下载、安装DevEco Studio以及配置环境、创建运行HarmonyOS项目

下载、安装开发工具 进入DevEco Studio下载官网&#xff0c;单击“立即下载”进入下载页面。 这里以Windows为例进行安装&#xff0c;可以根据操作系统选择对应的版本进行下载。 下载完成后解压一下&#xff0c;进入文件里&#xff0c;双击应用程序&#xff0c;打开安装向导&a…

FreeRTOS_同步互斥与通信_队列集_学习笔记

FreeRTOS_同步互斥与通信_环形buffer、队列_学习笔记 5.5 队列集 要支持多个输入设备时&#xff0c;我们需要实现一个“InputTask”&#xff0c;它读取各个设备的队列&#xff0c;得到数据后再分别转换为游戏的控制键。 InputTask如何及时读取到多个队列的数据&#xff1f;要…

汇聚荣科技有限公司怎么样?

在众多企业中&#xff0c;汇聚荣科技有限公司以其独特的发展模式和市场定位引起了人们的关注。对于这个问题&#xff0c;答案并非简单的好与坏&#xff0c;而需要从多个维度进行深入分析。 一、公司背景与发展历程汇聚荣科技有限公司成立于何年何地&#xff0c;由谁创立&#x…