ChatGPT进化的过程简介

news2024/11/24 9:17:46

Chat GPT可以做什么?

  • 分点列条的回答问题

  • 写代码或SQL

  • 翻译

  • 语法检查

ChatGPT官方还未公开论文,ChatGPT有一个“孪生兄弟”InstructGPT,InstructGPT有论文,可以根据InstructGPT论文推导ChatGPT的训练过程:

  • ChatGPT的训练过程

  • InstructGPT的训练过程

可以看到两者差距非常小,区别是两者使用的GPT版本不同。

所以看了InstructGPT论文应该就可以知道ChatGPT大致怎么被训练出来的了。

ChatGPT学习的四阶段

1 学习文字接龙

给GPT一个不完整的句子,GPT会想办法猜出这个句子接下来应该接哪字才是正确的。

怎么教一个模型做文字接龙?

文字接龙的学习是不需要人工标注的。

GPT要做的事情就是在网络上收集大量的文字,让GPT学文字接龙。

比如从网络上看到“跟人类对话”这句话,让GPT知道了“跟”后面跟“人”,“跟人”后面跟“类”,“跟人类”后面跟“对”。

“你好”这个不完整的句子后面可能接的词汇有很多,

GPT在学习做文字接龙的过程中,GPT真正输出的是一个几率分布。

比如输入“你好” ,后面跟“美”的几率,跟“高”的几率,跟“吗“的几率分别是多少。

接下来再从几率分布里随机抽取一个文字出来,几率比较高的字比较容易被抽取出来,几率比较低的字不太容易被抽取出来。

GPT的输出每一次都是不一样的。

让GPT补充一个不完整的句子,它每次补的结果都是随机性的。

每次补出来的结果都是不一样的,那学习文字接龙有什么用?

告诉GPT这是一个不完整的句子,接下来GPT想接哪个字呢?

第一个问题回答是“玉”,再将“玉”追加到第一个问题上作为新的问题再问GPT,回答“山”。

GPT的输出是随机的,GPT每次只会产生一个字。

把所有产生的结果一次输出来,这样就形成一道选择题。

但实际产生的时候,还是一个字一个字产生的。

或者回答“谁来告诉我答案呀”,因为你并没有让它回答问题,所以可能会有这个答案。

GPT看到网络上有谁说过什么句子,它都可以拿来接,所以GPT在实际的使用上并没有那么好用,那怎么引导GPT产生有用的输出?

这就进入下一个阶段,

2 由人类老师引导文字接龙的方向

需要找人类来思考想问GPT的问题,提出问题之后,还需要人工把答案标记出来,有了这些资料以后,再丢给GPT做进一步的学习。

之前GPT在网络上看到一些有用的或没用的内容,GPT它不能分辨, 反正就是照单全收。

现在由人类提供想问GPT的问题并由人类提供标准的答案。

就让GPT多读一些我们觉着有意义的语料,真正帮人类做事的有用的内容,期待它可以变成人类真正的帮手。

那我们会不会穷举所有人类可能会问到的问题呢?答案是不用的。

虽然今天ChatGPT的论文还没有出,但是看instruct GPT你会发现并没有使用非常多人为标注的问题和答案,只有数万字而已。

那为什么不需要标注非常多的问题跟答案呢

因为这些答案本来GPT是就有能力产生的,只是它不知道哪些答案是人类希望它产生的。

GPT在网络上看到各式各样的内容,所以可能会产生各式各样奇怪的答案。

人类要做的事情只是激发它本来就有的力量,叫它讲出我们希望它讲的话,所以在第二阶段,可能每种类型的问题,提供几个范例可能就足够了。

3 模仿人类老师的喜好

openapi线上公开GPT api,就会有很多人使用这个api,就会有很多人不断的去问,接下来把这些问题收集好,让GPT产生这些问题的答案,因为GPT的答案是有随机性的,所以同一个问题会产生不同的答案。

接下来就由人类去标注哪些答案是好的答案,哪些答案是差的答案,人类老师并不一定要提供完整的正确答案,只需要告诉机器说哪个答案是比较好的,哪个答案是比较差的。

有了这个信息以后,接下来就要训练一个模仿老师的模型Teacher model,

这个模型的作用是给GPT的问题和GPT输出的答案输出一个分数,这个模型学习的目标就是模仿人类老师评分的标准,如果人类的标注告诉GPT,“玉山”这个答案好于“谁来告诉我”这个答案,那Teacher model模型就可以模仿人类的偏好。

4 用增强式学习向模拟老师学习

用增强式学习(Reinforcement Learning)让GPT向模拟老师学习,

比如问这个问题,回答这个答案。

这虽然是一个正确的接法,但不是人类想要的。

那现在GPT有了一个老师的模型,那就把输入的问题和答案一起丢给老师模型,这个老师模型就会学了人类的偏好。

GPT在前面的学习中知道,如果答案是一个问句,则不是一个好的答案,应该要给予低分。

那Teacher model模型输出的就是增强式学习(Reinforcement Learning)的reward。

接下来用增强式学习的技术来调整GPT参数,调整的目标就是希望得到最高的reward,即希望GPT的输出结果会让Teacher model给予高分,也就是人类会觉的满意的答案。

透过Reinforcement Learning技术让GPT可能会学到:问“世界上最高的山是哪座?“,不会再随便接一个问句,而是输出“喜马拉雅山”。

即把问题和答案都丢给Teacher model模型,这个模型会评估出一个分数比较高的答案。

GPT经过增强式学习(Reinforcement Learning)之后,就是Chat GPT了。

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

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

相关文章

React函数组件语法(N)

文章目录 react学习的说明新的官网全力投入现代React与Hooks React简介概述官网特点生态 React脚手架create-react-app官网创建和启动项目项目结构sass支持 Vite创建和启动项目项目结构常见配置 虚拟DOM什么是虚拟DOM虚拟DOM优缺点优点:缺点: 虚拟DOM实现…

MySQL死锁的原因和处理方法

MySQL死锁的原因和处理方法 表的死锁产生原因解决方案 行级锁死锁产生原因1解决方案1产生原因2产生原因3解决方案 表的死锁 产生原因 用户A访问表A(锁住了表A),然后又访问表B;另一个用户B访问表B(锁住了表B),然后企图访问表A;这时用户A由于用户B已经锁住表B,它必须…

LeetCode349. 两个数组的交集

题目链接 LeetCode349. 两个数组的交集 题目描述 题解 题解一(Java) 作者:仲景 因为数据范围和长度都限制在1000,所以直接使用数组即可 因为数据范围和长度都在1000内,所以碰到数字可以直接arr[i] i来表示这个数字…

如何有效的开展接口自动化测试,一篇就行

一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中,通过对接口的自动化测试来提高测试效率和测试质量,减少人工测试的工作量和测试成本,并且能够快速发现和修复接口错误&…

手写Spring框架---IOC容器实现

目录 框架具备的最基本功能 实现容器前奏 创建注解 提取标记对象 extractPacakgeClass里面需要完成的事情 获取项目类加载器的目的 为什么不让用户传入绝对路径 类加载器ClassLoader 统一资源定位符URL ClassUtil提取标记类 获取包下类集合 装载目标类的集合 获取…

Git相关使用

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

APP UI自动化测试思路总结 ,教你彻底学会APP自动化测试

目录 一,开发语言选择 二,UI测试框架选择 1,Appium 2,Airtest 3,选择框架 三,单元测试框架选择 四,测试环境搭建 1,测试电脑选择 2,测试手机选择 3,…

【Redis】Redis管道

面试题 如何优化频繁命令往返造成的性能瓶颈? Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回&#xf…

基于matlab仿真相控天线阵列在波束成形MIMO-OFDM系统中的使用

一、前言 本例显示了相控阵在采用波束成形的MIMO-OFDM通信系统中的使用。它使用通信工具箱和相控阵系统工具箱中的组件,对组成发射器和前端接收器组件的辐射元件进行建模,用于MIMO-OFDM通信系统。使用用户指定的参数,您可以根据不同空间位置和…

Django自动化测试平台搭建落地全过程(附视频教程+源码)

目录 前言 一、平台基础架构设计 二、自动化测试工具选择与集成 三、平台功能开发 四、总结 前言 自动化测试在现代软件开发中扮演着至关重要的角色,它可以显著提高测试效率和准确性,并帮助开发团队更快地发布高质量的软件产品。Django作为一种流行…

Hudi数据湖技术之集成Spark

目录 1 环境准备1.1 安装MySQL 5.7.311.2 安装Hive 2.11.3 安装Zookeeper 3.4.61.4 安装Kafka 2.4.1 2 滴滴运营分析2.1 需求说明2.2 环境准备2.2.1 工具类SparkUtils2.2.2 日期转换星期 2.3 数据ETL保存2.3.1 开发步骤2.3.2 加载CSV数据2.3.3 数据ETL转换2.3.4 保存数据至Hudi…

Flink的DataStreamApi

1.源算子 SourceFunction 并行度只能为1 ParallelSourceFunction 并行度 2.转换算子 (1)基本类型 所有 Java 基本类型及其包装类,再加上 Void、String、Date、BigDecimal 和 BigInteger。 (2)数组类型 包括基…

【算法】【算法杂谈】判断点是否在三角形内部(面积法和向量法)

目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…

netcore工程在linux下调用linux动态库

文章的内容可能看着枯燥,排版也存在一些问题,但是如果你遇到相关问题,真的无法解决的时候,不妨沉下心来好好阅读一下这篇文章,你会有所收获,也可以先跳到文章最后,看看是不是对你的问题有价值。…

Day955.到底是重构,还是重写? -遗留系统现代化实战

到底是重构,还是重写? Hi,我是阿昌,今天学习记录的是关于到底是重构,还是重写?的内容。 到底是重构,还是重写?这是一个困扰着很多团队的问题。 重构吧,遗留系统积重难…

神经网络模型入门及蠓虫分类问题简单实战

学习知识要实时简单回顾,我把学习的神经网络模型简单梳理一下,方便入门与复习。 神经网络模型 神经网络简介 人工神经网络是在现代神经科学的基础上提出和发展起来的,旨在反映人脑结构及功能的一种抽象数学模型。自 1943 年美国心理学家W.M…

【分段DP】ABC275 F

一万年没写DP了 这么简单的DP我居然没写出来 F - Erase Subarrays (atcoder.jp) 题意: 思路: 原本的思路是这样的: 看到3000的数据范围就是n^2的DP了 看到删子串,那么留下来的就是子序列,要使得剩下来的子序列的…

剑指Offer--05替换空格58左旋字符串

文章目录 一、剑指Offer--05.替换空格二、剑指Offer--58.左旋字符串 一、剑指Offer–05.替换空格 题目是这样的 意思是将字符串s中的空格替换为字符串"%20",如果只是替换一个字符还好,可以在原数组直接替换,但是是将空格替换为字符串&#xf…

Vue+Echarts 项目演练(下)收尾工作图表绘制

设置销售总量图表 中心容器地图设置 产品库存统计图 产品类别图表 项目可视化完结-整体展示 设置销售总量图表 在第一个容器中进行图表设置 <template><div><h2>A</h2><div class"chart" id"oneChart">容纳后期的图表…

shell编程规范与变量

shell脚本编程规范 shell脚本概述 将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种Shell控制语句以完成更复杂的操作 Shell脚本应用场景 重复性操作交互性任务批量事务处理服务运行状态监控定时任务执行 什么是Shell 就是与内核沟通的界面、应用程序等…