【期末复习向】长江后浪推前浪之ChatGPT概述

news2024/10/6 6:45:06

参考文章:GPT系列模型技术路径演进-CSDN博客

这篇文章讲了之前称霸NLP领域的预训练模型bert,它是基于预训练理念,采用完形填空和下一句预测任务2个预训练任务完成特征的提取。当时很多的特定领域的NLP任务(如情感分类,信息抽取,问答等)都是采用bert加上领域数据微调解决。

【期末向】“我也曾霸榜各类NLP任务”-bert详解-CSDN博客文章浏览阅读208次,点赞4次,收藏3次。首先我们要了解一下什么是预训练模型,举个例子,假设我们有大量的维基百科数据,那么我们可以用这部分巨大的数据来训练一个泛化能力很强的模型,当我们需要在特定场景使用时,例如做文本相似度计算,那么,只需要简单的修改一些输出层,再用我们自己的数据进行一个增量训练,对权重进行一个轻微的调整。NSP属于二分类任务,在此任务中,我们输入两个句子,B有50%的可能是A的下一句,也有50%的可能是来自语料库的随机句子,预测B是不是A的下一句。即对于给定的输入序列,我们随机屏蔽15%的单词,然后训练模型去预测这些屏蔽的单词。https://blog.csdn.net/weixin_62588253/article/details/135002295?spm=1001.2014.3001.5501但是2022年底,随着ChatGPT的兴起,大模型开始全面替代各种特定领域的NLP任务。下面就讲讲ChatGPT的发展史以及对NLP带来的影响。

(1)GPT及其结构

ChatGPT(Chat Generative Pre-trained Transformer)系列,最早由OpenAI(也叫CloseAI,开玩笑)于2018年提出第一版GPT,也是预训练语言模型。GPT的任务最初就是从网上爬取完整的句子数据,用于训练预测给定上下文信息后的下一个单词。仅仅凭借这一预训练方式和未标注的数据集GPT就可以完成对话任务,但是效果并不好 。

GPT与bert不同,bert采用的是transformer中的encoder结构;而GPT采用的则是decoder结构,如下图所示:

(2)GPT-2

2019年OpenAI又提出了GPT-2,其目标旨在训练一个泛化能力更强的词向量模型,但是它并没有对GPT的网络进行过多的结构的创新与设计,而是采用更多的网络参数和更大的数据集。但是它提出了一个后来成为大模型称霸NLP的理念:zero-shot即零少样本学习。它认为可以将预训练好的模型直接应用到下游任务,而不用根据特定领域的标注数据再次微调,只需要模型根据给定的指令(prompt或instruction)来理解任务。OpenAI作者认为,当一个语言模型的容量足够大时,它就能足以覆盖所有的有监督任务,也就是说所有的有监督学习都是无监督语言模型的一个子集,当模型的容量非常大且数据量足够丰富时,仅仅靠训练语言模型的学习便可以完成其他有监督学习的任务,这个思想也是提示学习(Prompt Learning)的前身。

(3)GPT-3

2020年,GPT-3发布。相比之前的GPT,GPT-3的显著特点是参数很多,是一个巨型模型,参数量高达1750亿参数量。与此同时,GPT-3还验证了GPT-2中提出的zero-shot的理念。所谓的zero-shot,就是零样本学习,它是直接应用到下游任务的,不会改变模型的参数。具体想法是利用过去的知识(预训练获得的信息),在脑海中推理出新的知识,从而能在没有微调的情况下完成原来需要利用特殊领域数据微调才能完成的下游任务。值得一提的是,这种理念可以用在各种领域,而非局限在NLP。

除了zero-shot,还有one-shot和few-shot。one-shot是指在预测时将一个例子也作为输入输入模型;few-shot是指在预测时加上几个例子作为输入。


 (4)ChatGPT

预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则控制的专家系统来说,预训练模型就像一个黑盒子。没有人能够保证预训练模型不会生成一些包含种族歧视,性别歧视等危险内容,因为它的几十GB甚至几十TB的训练数据里几乎肯定包含类似的训练样本。这也就是InstructGPT和ChatGPT的提出动机,论文中用3H概括了它们的优化目标:

  • 有用的(Helpful)
  • 可信的(Honest)
  • 无害的(Harmless)

因此在2021和2022年OPenAI分别发表InstructCPT和ChatGPT,并提出了全新的训练步骤,这也是ChatGPT与bert等传统预训练语言模型。

 第一步-预训练。当然是预训练步骤(上图没有展示出来),利用大量的网上爬取的数据做无监督的预训练,任务应该还是预测下一个字。

第二步-微调(SFT)。利用人工标注的数据做微调,注意这里的微调并非针对特定的下游任务。而是针对预训练过程中部分数据存在的偏见等问题,由人类标注一些符合人类伦理道德、喜好的数据对其进行纠正。并且这里并不需要太多的人工标注的数据,是因为模型本身预训练已经知道了正确答案,只是受到了脏数据的影响不一定能够生成符合人类需要的数据。因此只需要一部分数据来告诉那些数据符合人类偏好即可。

第三步-训练打分模型(RM)。这里分2步,第一步因为ChatGPT开放使用所以可以收集用户与ChatGPT之间的对话数据。然后由人工对这些对话数据进行打分得到一个新的数据集。然后利用这个数据集来训练一个打分模型RM,它可以对ChatGPT不同的回复进行打分,用于模拟人类的打分。

第四步-强化学习(RLFM,Reinforcement Learning from Human Feedback) 。这里是利用强化学习PPO算法,通过前面RM模型给出的分数来调整ChatGPT的参数,使得其得分更高,也就是ChatGPT的回答更符合人类的需求。

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

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

相关文章

jenkins-Generic Webhook Trigger指定分支构建

文章目录 1 需求分析1.1 关键词 : 2、webhooks 是什么?3、配置步骤3.1 github 里需要的仓库配置:3.2 jenkins 的主要配置3.3 option filter配置用于匹配目标分支 实现指定分支构建 1 需求分析 一个项目一般会开多个分支进行开发,测试&#x…

Redis设计与实现之跳跃表

目录 一、跳跃表 1、跳跃表的实现 2、跳跃表的应用 3、跳跃表的时间复杂度是什么? 二、跳跃表有哪些应用场景? 三、跳跃表和其他数据结构(如数组、链表等)相比有什么优点和缺点? 四、Redis的跳跃表支持并发操作吗…

使用React实现随机颜色选择器,JS如何生成随机颜色

背景 在标签功能中,由于有「背景色」属性,每次新增标签时都为选择哪种颜色犯难。因此,我们思考如何通过JS代码生成随机颜色,提取一个通用的随机颜色生成工具,并基于React框架封装随机颜色选择器组件。 实际效果 原理…

智能插座是什么

智能插座 电工电气百科 文章目录 智能插座前言一、智能插座是什么二、智能插座的类别三、智能插座的原理总结 前言 智能插座的应用广泛,可以用于智能家居系统中的电器控制,也可以应用在办公室、商业场所和工业控制中,方便快捷地实现电器的远…

Python:如何将MCD12Q1\MOD11A2\MOD13A2原始数据集批量输出为TIFF文件(镶嵌/重投影/)?

博客已同步微信公众号:GIS茄子;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子,或者邮箱联系(推荐-见主页). 00 前言 之前一段时间一直使用ENVI IDL处理遥感数据,但是确实对于一些比较新鲜的东西IDL并没有python那么好的及时性&…

【STM32独立看门狗(IWDG) 】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、看门狗是什么?1.简介2. 主要功能3.独立看门狗如何工作4.寄存器写保护5.看门狗 看门时间 二、使用步骤1.开启时钟2.初始化看门狗3.开启看门狗4.喂…

Knife4j 接口文档如何设置 Authorization 鉴权参数?

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

用23种设计模式打造一个cocos creator的游戏框架----(十一)桥接模式

1、模式标准 模式名称:桥接模式 模式分类:结构型 模式意图:将抽象部分与其实现部分分离,使它们都可以独立地变化。 结构图: 适用于: 1、不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如&am…

高并发如何实现单用户信息查询接口

高并发如何实现单用户信息查询接口 故事情节 产品:小李,有个单用户信息查询的功能,需要你实现一下小李:这还不简单,两分钟我给你实现两分钟过去…小李:欧克了,部署上线了运维:哪个…

Nessus漏洞扫描报错:42873 - SSL Medium Strength Cipher Suites Supported (SWEET32)

个人搭建的windows server 2019服务器,被Nessus工具扫描出现三个漏洞,修复比较过程比较坎坷,特记录下 首先:报错信息: 42873 - SSL Medium Strength Cipher Suites Supported (SWEET32) 104743 - TLS Version 1.0 Protocol Detection 157288 - TLS Version 1.1 Protocol …

网络互通--三层交换机配置

目录 一、三层交换机的原理 1、概念 2、PC A与不同网段的PC B第一次数据转发过程 3、一次路由,多次转发的概念 4、 三层交换机和路由器的比较 二、利用实验理解交换机 1、建立以下拓扑图​编辑 2、分别配置主机的IP地址,子网掩码、网关等信息 3、…

自然语言处理阅读第一弹

Transformer架构 encoder和decoder区别 Embeddings from Language Model (ELMO) 一种基于上下文的预训练模型,用于生成具有语境的词向量。原理讲解ELMO中的几个问题 Bidirectional Encoder Representations from Transformers (BERT) BERT就是原生transformer中的Encoder两…

用23种设计模式打造一个cocos creator的游戏框架----(十七)命令模式

1、模式标准 模式名称:命令模式 模式分类:行为型 模式意图:将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作。 结构图: 适用于&am…

2024年20多个最有创意的AI人工智能点子

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 探索 2024 年将打造的 20 个基于人工智能产品的盈利创意 🔥🔥🔥 直到最近,企业对人工智能还不感兴趣,但…

基于C/C++的libcurl多协议文件传输库dll二次封装开发使用

libcurl 可能是最便携、最强大和最常用的 这个星球上的网络传输库。官方提供的示例,需要在项目中引用到libcurl-imp.lib才能使用。 这里我改造了下工程,将常用的接口导出到了libcurl.dll中方便直接在后续的工程代码中应用,下面可以看到dll常用…

使用广播星历进行 GPS 卫星位置的计算

目录 1.计算卫星运动的平均角速度 n 2.计算观测瞬间卫星的近地点角 3.计算偏近点角 4.计算真近点角 f 5.计算升交角距 6.计算摄动改正项 7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置 9.计算观测瞬间升交点的经度 L 10.计算卫星在瞬时地球坐标系中的位置 11.…

最大子数组和java实现【动态规划基础练习】

12.15 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4]…

笔记本电脑如何安装爱快软路由

环境: dell3490 笔记本 装机U盘 问题描述: 笔记本电脑如何安装爱快软路由 解决方案: 1.电脑bios关闭 安全启动 2.下载官网镜像 3.UEFI引导 在PE下面 新建esp分区300M 把系统镜像里面全部文件,提取到这个分区 最后&…

数据结构(7.5)-- 树扩展之字典树

一、字典树 1、字典树介绍 字典树,也称为“前缀树”,是一种特殊的树状数据结构,对于解决字符串相关问题非常有效。典型 用于统计、排序、和保存大量字符串。所以经常被搜索引擎系统用于文本词频统计。它的优点是: 利用字符串的…

【Qt问题记录】使用QDebug类输出不带转义或双引号

问题 使用Qt进行编程时,需要借助输出信息验证编码的正确性。 默认情况下,如果输出的是字符串,qDebug() 会在字符串的两侧加上引号,有时还会转义。 如下所示: QString strInfo QStringLiteral("helloworld"…