利用GPT开发应用004:从GPT-1到GPT-3

news2024/11/16 23:47:12

文章目录

  • 一、GPT-1
  • 二、GPT-2
  • 三、GPT-3
  • 四、从GPT-3到InstructGPT

一、GPT-1

  2018年年中,就在变换器架构问世一年后,OpenAI发表了一篇题为“通过生成式预训练改进语言理解”的论文,作者是Radford, Alec等人。在这篇论文中,该公司介绍了生成式预训练变换器,也被称为GPT-1。

  在GPT-1之前,构建高性能NLP神经模型的常见方法依赖于监督学习。这些学习技术使用大量手动标记的数据。例如,在情感分析任务中,目标是对给定文本进行积极或消极情感分类,一种常见策略需要收集成千上万个手动标记的文本示例来构建有效的分类模型。

  然而,对大量良好标记的监督数据的需求限制了这些技术的性能,因为这样的数据集既难以生成又昂贵。

  在他们的论文中,GPT-1的作者提出了一个新的学习过程,引入了一个无监督的预训练步骤。在这个预训练步骤中,不需要带标签的数据。相反,模型被训练来预测下一个令牌是什么。由于使用了允许并行化的变换器架构,这个预训练是在大量数据上进行的。

  GPT-1模型在预训练中使用了BooksCorpus数据集,这是一个包含大约11,000本未发表书籍文本的数据集。这个数据集最初是在2015年的一篇科学论文“将书籍和电影对齐:通过观看电影和阅读书籍实现类似故事的视觉解释”中提出的,作者是Zhu,Yukun等人。这个BookCorpus数据集最初是在多伦多大学的网页上公开提供的。然而,如今原始数据集的官方版本已不再公开获取。

  尽管GPT-1模型没有其后继者那么强大,但在各种基本NLP任务中被发现是有效的。在无监督学习阶段,该模型学会了预测BookCorpus数据集中文本的下一个项目。然而,由于模型规模较小,它无法在没有微调的情况下执行复杂任务。为了使模型适应特定目标任务,进行了第二个监督学习步骤,称为微调,该步骤在少量手动标记的数据集上进行。例如,在情感分析等分类任务中,可能需要在少量手动标记的文本示例上重新训练模型以获得良好的准确性。这个过程允许修改在初始预训练阶段学到的参数,以更好地适应当前任务。尽管规模较小,GPT-1在几个NLP任务中表现出色,仅使用少量手动标记的数据进行微调。

  GPT-1的架构与2017年引入的原始变换器的解码器相似,有1.17亿个参数。这个第一个GPT模型为未来具有更大数据集和更多参数的模型铺平了道路,以更好地利用变换器架构的潜力。


二、GPT-2

  在2019年初,OpenAI 提出了 GPT-2,这是 GPT-1 模型的一个规模扩大版,将参数数量和训练数据集大小增加了十倍。这个新版本的参数数量为 15 亿,在 40 GB 文本上进行了训练。2019年11月,OpenAI 发布了完整版的 GPT-2 语言模型。

  GPT-2表明,在更大的数据集上训练更大的语言模型提高了语言模型理解任务的能力,并在许多任务上胜过了最先进技术。它还表明,甚至更大的语言模型可以更好地理解自然语言。


三、GPT-3

  GPT的第三个版本于2020年6月由OpenAI发布。GPT-2和GPT-3之间的主要区别在于模型的规模和用于训练的数据量。GPT-3是一个更大的模型,拥有1750亿个参数,使其能够捕捉更复杂的模式。此外,GPT-3在一个更广泛的数据集上进行了训练。这包括Common Crawl,一个包含来自数十亿网页和其他来源文本的大型网络存档,如维基百科。这个训练数据集包括来自网站、书籍和文章的内容,使GPT-3能够对语言和背景有更深入的理解。因此,GPT-3在各种语言任务上表现出更好的性能。它展示了在生成的文本中更高的连贯性和创造力。它甚至能够编写代码片段,比如SQL查询,并执行其他智能任务。GPT-3还消除了对其前身所必需的微调步骤的需求。

  存在一个问题,即最终用户提供的任务与模型在训练过程中所见到的内容之间存在不一致。正如我们所见,语言模型是根据输入上下文来预测下一个词。这种训练过程未必与最终用户希望模型执行的任务直接对齐。增加语言模型的规模并不从根本上使其更擅长遵循用户意图或指令。此外,像GPT-3这样的模型是在互联网不同来源的数据上进行训练的。尽管在选择来源时进行了清理,但学习数据中可能包含虚假或有问题的信息,包括种族主义、性别歧视、错误信息或虚假信息。因此,模型有时可能会说错话,甚至具有毒性。在2021年,发布了GPT-3模型的新版本,名为instruct系列。与原始基本的GPT-3模型不同,instruct模型通过强化学习和人类反馈进行优化,以遵循人类指令,同时使模型更真实、更少具有毒性。

  为了说明这种差别,我们在提示中输入:“解释什么是时间复杂度。”

  • 使用标准的GPT-3,我们得到的输出是:“解释什么是空间复杂度。解释big-O符号的含义。”-
  • 而使用instruct GPT-3,我们得到的是:“时间复杂度是衡量算法运行并完成任务所需时间的一种方式。通常用big-O符号表示,它衡量算法的复杂性,即算法执行的操作次数。算法的时间复杂度很重要,因为它决定了算法的效率以及在处理更大输入时的扩展性如何。”

  我们可以看到,对于相同的输入,第一个模型无法回答问题(答案甚至很奇怪),而第二个模型能够回答。当然,使用标准的GPT-3模型也可以获得所需的响应,但为此需要应用提示工程技术,在instruction模型下则不是必要的。


四、从GPT-3到InstructGPT

  OpenAI在科学论文《使用人类反馈训练语言模型遵循指令》中介绍了instruct系列是如何构建的。

  训练过程主要分为两个阶段,从GPT-3模型到instructed GPT-3模型:监督微调(supervised fine-tuning - SFT)和从人类反馈中强化学习(reinforcement learning from human feedback - RLHF)。

  在每个阶段,模型都是根据前一个阶段的结果进行微调。也就是说,SFT阶段接收GPT-3模型并返回一个新模型,然后将其发送到RLHF阶段以获取instructed GPT-3模型。
下图是来自OpenAI的科学论文,详细说明了整个过程。

在这里插入图片描述

  我们将逐个阶段地进行介绍。

  在监督微调阶段,原始的GPT-3模型将通过直接的监督学习进行微调。这对应于OpenAI图中的第1步。OpenAI拥有一系列由最终用户创建的提示。

  该过程从随机选择可用提示集合中的一个提示开始。然后要求人类(称为标注者)编写对该提示的理想答案示例。这个过程重复进行成千上万次,以获得由提示和相应理想响应组成的监督训练集。然后使用该数据集对GPT-3模型进行微调,以提供更一致的回答用户请求的新模型,称为SFT模型。

  RLHF阶段分为两个子步骤。首先建立一个奖励模型,然后在下一步中用于强化学习过程。它们分别对应于图中的第2步和第3步。

  奖励模型(reward model - RM)的目标是自动为提示的响应打分。当响应与提示中指示的内容匹配时,奖励模型的分数应该较高;否则应该较低。为构建这个RM,OpenAI首先随机选择一个问题,并使用SFT模型为该问题生成多个可能的答案。然后要求人类标注者基于与提示的匹配程度以及其他标准(如响应的毒性)对这些答案进行排名。经过多次运行这个过程后,得到了一个数据集,可用于微调SFT模型以执行评分任务。这个奖励模型将被用于在下一步中构建最终的instructGPT模型。

  训练instructGPT模型的最后一步涉及强化学习,这是一个迭代过程。它始于一个初始生成模型,比如SFT模型。强化学习的过程如下:首先选择一个随机提示,模型预测一个输出,然后奖励模型评估这个输出。根据接收到的奖励,生成模型相应地进行更新。这个过程可以重复进行。

  训练instructGPT模型的最后一步涉及强化学习,这是一个迭代过程。它始于一个初始生成模型,比如SFT模型。强化学习的过程如下:首先选择一个随机提示,模型预测一个输出,然后奖励模型评估这个输出。根据接收到的奖励,生成模型相应地进行更新。这个过程可以无需人类干预地重复无数次,提供了一种更高效和自动化的方法,以使模型适应更好的性能。

  InstructGPT模型更擅长为用户输入的提示生成准确的完成内容。OpenAI现在建议使用instructGPT系列而不是原始模型。

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

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

相关文章

ODI报错

三月 08, 2024 1:20:09 下午 oracle.odi.mapping 信息: Start generation of map physical design: MapPhysicalDesign New_Mapping.物理 三月 08, 2024 1:20:09 下午 oracle.odi.mapping 信息: Finished generation of map physical design: MapPhysicalDesign New_Mapping.物…

BUUCTF-Misc4

镜子里面的世界1 1.打开附件 解压,是一张图片 2. zsteg工具 用zsteg分析图片 3.得到flag ningen1 1.打开附件 是一张图片 2.binwalk 用binwalk -e 分离文件 3.ARCHPR工具 打开分离后的文件夹,有一个加密的压缩包,用ARCHPR解密 4.解密 将…

sheng的学习笔记-AI-多分类学习:ECOC,softmax

目录:sheng的学习笔记-AI目录-CSDN博客 基本术语: 若我们欲预测的是离散值,例如“好瓜”“坏瓜”,此类学习任务称为“分类”(classification); 若欲预测的是连续值,例如西瓜成熟度0.95、0.37,…

HNU-计算机网络-甘晴void学习感悟

前言 计算机网络其实我没太学懂, 仅从应试来说,考试成绩也不太好。 这也是为什么一直没有更新这一学科的学习感悟。 大三下还是有点闲,一周三天小长假,闲来无事还是给写了。 教材使用这本: 总领 期中考试 30% 期…

排序——希尔排序、插入排序

本节复习排序中的希尔排序,希尔排序属于插入排序。 希尔排序的代码和插入排序非常类似。 思想却相对于插入排序来说复杂。 在复习希尔排序之前, 我们需要先复习一下插入排序。 目录 插入排序 插入过程 代码实现 希尔排序 希尔排序的思想 代码实…

#onenet网络请求http(GET,POST)

参考博文: POST: https://blog.csdn.net/qq_43350239/article/details/104361153 POST请求(用串口助手测试): POST /devices/1105985351/datapoints HTTP/1.1 api-key:AdbrV5kCRsKsRCfjboYOCVcF9FY Host:api.heclouds.com Con…

C++自创题目——几点了 very hard ver.

题目难度 普及 题目描述 一个老外用一口不流利的中文问你:“Xian zai ji dian le?”你看了一眼表,知道了现在是,你准备用这样的形式写在纸上: Now is m past/to h. 如果你看不懂,举个例子: 当h10&#…

python基础10_转义类型转换

这篇博客我们来学一下转义字符 首先什么是转义字符呢? 转义字符就是在编程中用于表示一些特殊的字符,比如说换行,在字符串中,需要换行吧,然后是不是有些时候还要在字符串中按tab键, 或者是enter键, 或者是引号,这些都是特殊字符,然后就是通过转义.把这些从普通字符转成具有特…

力扣面试经典150 —— 11-15题

力扣面试经典150题在 VScode 中安装 LeetCode 插件即可使用 VScode 刷题,安装 Debug LeetCode 插件可以免费 debug本文使用 python 语言解题,文中 “数组” 通常指 python 列表;文中 “指针” 通常指 python 列表索引 文章目录 11. [中等] H指…

哪里可以下载动态短视频素材?短视频素材资源下载网站有哪些?

嘿,朋友们!做短视频的时候,找到那些既有范儿又不会被告侵权的素材简直就是一项技术活。不过别担心,我这就给你们揭秘几个下载动态短视频素材的神秘网站,让你的短视频创作事半功倍! 1,蛙学府资源…

ROS——VirtualBox下载

下载&安装Virtualbox Oracle VM VirtualBox 根据电脑系统版本下载。 注意:前提是电脑cpu要开启虚拟化 根据自己的需求下载 双击开始安装 浏览可以更改下载位置,默认在C盘 然后一直点,是或下一步就好了 下载拓展包 后续需要连接使…

直击现场 | 人大金仓携手中国大地保险上线核心超A系统

2023年底 中国大地保险 卡园三路59号办公室里 一群技术精英们正忙碌着 他们的眼中 闪烁着对即将到来的胜利的期待 这是大地保险超A系统 项目上线的关键时刻 也是通过科技创新 引领行业服务新趋势的一场征程 项目现场 #1 一次颠覆 改变传统保险服务模式 超A平台,是由…

房屋租赁系统|基于 Mysql+Java+JSP技术的房屋租赁系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

目录 文末获取源码 前台首页功能 管理员功能 租户功能 房屋租赁系统结构图 数据库设计 lunwen参考 概述 源码获取 文末获取源码 前台首页功能 管理员功能 租户功能 房屋租赁系统结构图 数据库设计 lunwen参考 概述 随着科学技术的飞速发展,社会的方方面面…

Spring Boot搭建入门

Spring Boot简介 Spring Boot是对Spring进行的高度封装,是对Spring应用开发的高度简化版,是Spring技术栈的综合整合,是J2EE的一站式解决方案。想要精通Spring Boot的前提是需要熟悉Spring整套技术栈原理与内容。 Spring Boot的优点&#xf…

HTML—基本介绍

HTML是一种超文本标记语言(HyperText Markup Language),用于创建网页的标记语言超文本:是指页面内可以包含图片、链接、声音、视频等内容标记:HTML富含大量的标签供程序员使用,通过标记符号来规定指定内容的样式 浏览器最终根据不…

2024/3/8打卡石子合并---区间动态规划问题

目录 题目: DP分析: 代码: 题目: 设有 N 堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&am…

指针(一)

指针(一) 文章目录 前言1、内存和地址1.1.内存1.2 究竟该如何理解编制 2、指针变量和地址2.1取地址符操作符(&)2.2 指针变量和解引⽤操作符(*)2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引⽤操作符…

Android Studio编译及调试知识

文章目录 Android Studio编译kotlin项目Android Studio编译Java和kotlin混合项目的过程gradle打印详细错误信息,类似这种工具的使用Android apk 从你的代码到APK打包的过程,APK安装到你的Android手机上的过程,最后安装好的形态,以…

20-Java备忘录模式 ( Memento Pattern )

Java备忘录模式 摘要实现范例 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象 备忘录模式属于行为型模式 摘要 1. 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对…

Win11 没有网络bug

1.问题描述 没有网络,dns一直是固定的,但是dns已经是自动获取了(MAC地址随机) 2.解决办法 1.首先,删除所有网络的手动dns配置,控制中心那个dns管理没有用,在设置中删除网络,不然问题还会出现 - 2.然后,进入注册表\HKEY_LOCAL_MACH…