《ChatGPT是怎样炼成的》
ChatGPT 在全世界范围内风靡一时,我现在每天都会使用 ChatGPT 帮我回答几个问题,甚至有的时候在一天内我和它对话的时间比和正常人类对话还要多,因为它确实“法力无边,功能强大”。
ChatGPT 可以帮助我解读程序,做翻译,提供思路等等。
所以我就很好奇 ChatGPT 是怎么训练得到的,怀揣着好奇心,我带着大家一探究竟。
当然,ChatGPT 的论文还没有正式发布,想要完美解读它现在是不可能的,不过我们知道 ChatGPT 和 Open AI 的另一项工作 InstructGPT 息息相关。
这是 ChatGPT 官网上面的模型训练过程。
这是 InstructGPT 论文中的模型训练过程。
对比这两张图片,不能说一模一样,只能说完全一致。
所以我们就按照 InstructGPT 的论文讲一讲 ChatGPT 吧。
1. 学习文字接龙🐉
GPT (Generative Pre-trained Transformer) 模型就是在海量的文本数据上学习文字接龙,通过训练掌握基于前文内容生成后续文本的能力。这样的训练不需要人类标注数据(自监督学习),只需要给一段话的上文同时把下文遮住,将 GPT 模型的回答与语料中下文的内容做对比,进行优化。
如上图所示,我们输入“我爱”让 GPT 做文字接龙,绿色柱子的高低理解为输出概率的大小,GPT 的输出最有可能是“你”,当然也可能是“吃”或“玩”。
GPT 的输出通常是通过概率采样得到的。在生成文本时,模型根据前面的文本内容和当前的上下文,计算每个可能的输出单词的概率分布。然后,模型会根据这个概率分布对下一个单词进行采样,得到最终的输出单词。在采样的过程中,模型通常使用一种称为 “softmax” 的函数来转换概率分布,从而确保所有可能的输出单词的概率总和为1。
由于采样的过程是基于随机性的,因此即使提供相同的输入和上下文,模型生成的文本输出也可能会有所不同。使用概率采样可以产生更有趣、更有意思的文本输出。这就可以解释为什么 ChatGPT 对于相同的问题往往会有不一样的答案,当然,概率采样也可能会导致一些质量较低的输出,例如语法错误、重复和不相关的单词。
2. 人类老师的引导👮
只是让 GPT 自己做自监督的文字接龙是有局限性的,因为机器是没有感情的,因为 GPT 不知道什么样的答案是有效的,所以需要人类力量的介入,引导 GPT 生成有用的答案。
- 首先,我们从问题数据集(prompt dataset)中挑出一些问题。
- 让真正的人类(labeler)给出这些问题的正确答案。
- 这样就形成了有标签的数据集,这些数据用于微调 GPT-3.5,这个过程也称作 supervised fine-tuning (SFT)
3. 模仿人类老师的喜好📊
可是人类的力量也是有限的,我们不可能让人类老师给出所有问题的答案,但是我们可以给 GPT 生成的答案进行评分,这就相对轻松很多了。
- 比如,我们让刚刚训练好的 SFT 模型回答相同的问题四次,这样就产生了四个不同的答案 A、B、C、D 。
- 然后人工对这些答案进行评分或者说是评级(rank),比如 D > C > A = B 。
- 这样就又形成了一部分数据来训练 reward model(RM),从而训练出一个符合人类评价标准的 Reward 模型。
- 这样下次 GPT 生成答案就不需要人工评分了,直接把答案放到 Reward 模型中去就可以自动判断答案的好坏了。
- 如下图所示,对于相同问题的不同答案,Reward Model 学习到了在合理的答案上面打“高分”,在不合理的答案上打“低分”。
4. 强化学习💪
根据 Reward Model 的打分结果,继续优化 SFT 模型。
使用强化学习的技术调整 GPT 模型参数,使 GPT 生成的答案通过 Reward Model 可以得到最高的 Reward,重复这个过程,ChatGPT 就训练出来了。
5. RLHF👏
所以 ChatGPT 是一种通过 RLHF 训练得到的语言模型,Reinforcement Learning from Human Feedback (RLHF) 是一种基于人类反馈的强化学习方法,它通过与人类交互来获得任务的奖励信号,从而实现任务的学习。
RLHF 通过与人类交互来获得任务的奖励信号(Reward),并通过基于梯度的强化学习算法来优化策略,实现任务的学习。与传统的强化学习方法相比,RLHF不需要为任务定义奖励函数,因此更具有实际应用的价值。
6. 使用ChatGPT做个总结🐹
- ChatGPT是一种基于神经网络的自然语言处理模型,它可以生成类似于人类语言的对话,并被广泛用于聊天机器人、智能客服等应用领域。该模型使用了预训练的方式进行训练,可以自动学习语言的规则和模式,从而能够生成自然流畅的对话。
- ChatGPT在社会中产生了广泛的影响。首先,它为人工智能在自然语言处理领域的应用开辟了新的道路。它可以帮助人们更加便捷地获取信息、解决问题、进行娱乐等,进一步提高了人们的生活质量。其次,它也推动了人工智能技术的发展和普及,为人工智能技术在更多领域的应用提供了借鉴和参考。
- 未来,ChatGPT在技术上还有很大的发展空间。一方面,可以通过增加模型的深度和复杂度,来提高模型的精度和泛化能力。另一方面,可以通过结合其他技术,如图像识别、情感分析等,进一步提升模型的功能和性能。此外,ChatGPT也可以与其他技术结合,如语音识别、自然语言生成等,来实现更加人性化的交互方式,为人们提供更加便捷的服务和体验。
- 总之,ChatGPT是一种重要的自然语言处理技术,对社会产生了广泛的影响,未来也有着广阔的发展前景。它为人们提供了更加便捷、高效、智能化的服务和体验,有望在不久的将来成为人们日常生活中必不可少的一部分。同时,ChatGPT的发展也将推动人工智能技术的发展,为人们带来更多的福利和发展机会。
相关文章:
《ChatGPT是怎样炼成的》
ChatGPT 在全世界范围内风靡一时,我现在每天都会使用 ChatGPT 帮我回答几个问题,甚至有的时候在一天内我和它对话的时间比和正常人类对话还要多,因为它确实“法力无边,功能强大”。 ChatGPT 可以帮助我解读程序,做翻译…...
Streaming System是第一章翻译
GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法…...
abap MODIFY常用语法解析
MODIFY 是既可以操作数据又可以操作内表的一个语法, 实现的逻辑都一样. 如果你内表或数据库中存在该行数据会对该行数据进行更新. 如果不存在,就会插入数据. , 1.如果it_tab是带有标题行的内表,是可以忽略FROM wa_tab工作区的 MODIFY it_tab .2.把工作区wa_tab中的数据更新…...
[媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 直播毋庸置疑已经融入到了我们生活的方方面面,小到才艺,游戏,大到政策的发布,许多企业和机构也越来越重视直播,那么一场活动怎…...
打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第102讲。 蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多…...
链表经典刷题--快慢指针与双指针
本篇总结链表解题思路----快慢指针,其实也就是双指针,这个快慢并不单纯指“快慢”,它更多的可以表示,速度快慢,距离长度,时间大小等等,用法很有趣也很独特,理解它的思想,…...
【Java集合框架】篇四:Set接口
1. Set及主要实现类特点 Set:无序、不可重复(去重)、存储value HashSet:底层使用HashMap,即使用 数组单项链表红黑树 结构进行存储。(jkd8中) LinkedHashSet:是HashSet的子类&…...
Python 数据库连接 + 创建库表+ 插入【内含代码实例】
人生苦短 我用python Python其他实用资料:点击此处跳转文末名片获取 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。连…...
DSS 部署环境需求清单
文章目录 DSS系统需求项目地址计算资源计算基准:计算引擎程序硬件需求表 :DSS计算及存储资源需求计算资源计算基准:计算程序硬件需求表:DSS系统需求 项目地址 https://github.com/WeBankFinTech/DataSphereStudio 计算资源计算基准: 1.日活用户10万。 2.单用户单日总…...
Python的面向对象,详细讲解Python之用处等基本常识
目录 Python 面向对象 面向对象技术简介 创建类 实例 实例 self代表类的实例,而非类 实例 创建实例对象 访问属性 实例 Python内置类属性 实例 python对象销毁(垃圾回收) 实例 实例 类的继承 实例 方法重写 实例 基础重载方法 运算符重载 实例…...
如何使用固态继电器为恒温器供电
恒温器有两种电源:电池和 24VAC。恒温器需要电池才能不间断地运行。电池消耗的能量尽可能低非常重要,但即使您最大限度地减少消耗,这仍然不是一个用户友好的选择,因为电池会不时需要更换。要降低更换频率,可以使用 24V…...
【LeetCode】剑指 Offer(14)
目录 题目:剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 32…...
Rman单实例迁移到单实例
关于同平台同版本数据库之间的迁移操作的实验 ---Source DB[rootoracle-db-19cs ~]# cat /etc/redhat-release CentOS Stream release 8 [rootoracle-db-19cs ~]# --- Target DB[rootoracle-db-19ct ~]# cat /etc/redhat-release CentOS Stream release 8 [rootoracle-db-19ct…...
毕业设计 基于stm32舞台彩灯控制器设计app控制系统
基于stm32舞台彩灯控制器设计app控制1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2 WS2812RGB彩灯电路设计3、部分代码展示3.1 控制WS2812显示颜色3.2 设置RGB灯的颜色,角度,亮度实物图1、项目简介 选题指导…...
【MyBatis】篇一.
文章目录1、MyBatis概述2、环境搭建1、MyBatis概述 认识: JavaEE开发的一个套件SSM,即: MyBatis是一个持久层的框架,是对JDBC的一个封装,是一个半自动的ORM框架。 ORM即实体类对象和数据库中的数据的一个映射关系&am…...
【JavaScript速成之路】JavaScript流程控制
📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,流程控制2,分支结构2.1,if语句2.2&…...
18、基准测试,sysbench
基准测试,sysbench 1. sysbench1.1 用途1.2 安装1.3 版本1.4 查看帮助1.5 测试过程阶段2 CPU 性能测试2.1 测试原理2.2 查看帮助2.3 测试3. 内存性能测试3.1 查看帮助信息3.2 测试过程4.磁盘性能基准测试4.1 查看帮助4.2 生成文件(prepare)4.3 测试文件io(run)4.4 结果分析4.5…...
3D,点云拼接2
文章目录 点云配准方法自动配准技术PCL实现的配准算法两两配准1.关键点提取2.特征描述符3. 对应关系估计4. 对应关系去除5. 变换矩阵估算在上篇文章中对于拼接的概念、拼接精度的评价做了详细的介绍。本文是对拼接(配准)的进一步介绍,涉及更多原理层面的东西。 主要围绕以下三…...
jmeter学习笔记一(http基础知识)
HTTP请求:客户端同通过发送http请求向服务器请求资源的访问。http请求由三部分组成:请求行、请求头、请求正文 请求行包括:请求方法 URI 协议/版本 请求头:Content-type、Cookie、Authorization、User-Agent、Accept、Acc…...
【Java】CompletableFuture 并发顺序调度
前言 Java CompletableFuture 提供了一种异步编程的方式,可以在一个线程中执行长时间的任务,而不会堵塞主线程。 和Future相比,CompletableFuture不仅实现了Future接口,也实现了 CompletionStage接口。Future接口不用多说&#…...
职场人必备的6款实用办公app,每一款都是心头爱
打工人不容易啊,不提高工作效率怕是要被淘汰了。今天给大家分享6款职场人必备的实用办公APP,免费效率神器让工作事半功倍。这些APP每一款都是我的心头爱,肯定会让人大开眼界的,超级实用,直接往下看吧。1、向日葵远程控…...
小丑改造计划之复习一
1.函数重载 根据参数个数 参数顺序 参数类型 的不同 可以在同一个域存在多个同名函数 但是不可以根据返回值 缺省参数的不同去重载函数 2.指针和引用的区别 第一点 指针是内存地址,会开辟内存空间,而引用和它所引用的变量共享同一块内存 第二点 引用必须…...
final修饰符使用中遇到的一些问题
文章目录final修饰符1. final不能用来修饰构造方法2. final修饰变量的一些注意问题2.1 final修饰成员变量2.2 final修饰引用类型2.2.1 演示代码中lombok链式编程介绍final修饰符 final具有“不可改变”的含义,它可以修饰非抽象类、非抽象成员方法和变量。 用final…...
好记又实用的获取电脑型号方法
个人常用的方法 方法二最好记又好用。 方法一 dxdiag命令 按下键盘WINR调出运行在输入框输入dxdiag命令后,按下回车;进入DirectX诊断工具,便可查看系统型号等信息。 这里就会显示系统型号。 方法二 设备和打印机 控制面板-查看方式-小图…...
@Transactional配置详解
一:事务注解Transactional,属性propagation的7个配置 PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。,默认配置,也是常用的选择。 PROPAGATION_SUPPORTS -- 支持当前事务&#…...
性能测试面试题汇总
稳定性测试的怎么挑选的接口? 1、频繁使用的接口:选择那些被频繁使用的接口,因为这些接口可能会面临更大的负载和并发访问,从而可能导致性能问题。 2、核心功能接口:选择那些实现系统核心功能的接口,因为这…...
vue权限控制和动态路由
思路 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到localStore中,保证刷新页面后能记住用户登录状态)…...
利用正则表达式删掉代码中的所有注释-pycharm为例
首先删除注释 打开您想要删除注释的Python文件。 使用快捷键 Ctrl Shift R 打开 "Replace in Files"(在文件中替换)对话框。 在 "Find"(查找)框中输入以下正则表达式,以查找所有行中的注释内容…...
【java基础】内部类、局部内部类、匿名内部类、静态内部类
内部类 内部类就是定义在另一个类中的类。我们使用内部类的原因主要有以下两点 内部类可以对同一个包中的其他类隐藏内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据 public class A {class B {} }我们使用内部类可以访问外部类的所有属性&…...
react renderProps学习记录
react renderProps学习记录1.引入2.改一下呢3.再改一下呢4.总结一下如何向组件内部动态传入带内容的结构(标签)?children propsrender props1.引入 上代码: import React, { Component } from react import ./index.css export default class Parent extends Com…...
怎么做网页模板展示网站/网络营销的六大功能
认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示。 一、需要测试的C代码: #include "myfunction.h"//计算和的函数 int add(int a, int b) {int c a b;return c; }//计算最小公约数 int Foo(…...
电子商务网站设计的基本要求/上海百度推广公司
WScript.Shell(Windows Script Host Runtime Library)是一个对象,对应的文件是C:/WINDOWS/system32/wshom.ocx,Wscript.shell是服务器系统会用到的一种组件。shell 就是“壳”的意思,这个对象可以执行操作系统外壳常用…...
网站的文件结构/hao123网址大全浏览器设为主页
Java里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点:可见性和有序性以及原子性。 Java内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的问题,理想情况下我们希望做到“…...
上海知名网站建设公司排名/杭州专业seo
Shell基本概念及编程这个系统写了很多东西,但实际上还没有真正的写过一个脚本。那么为什么没写呢?因为SHELL脚本程序基实就是Shell 命令语句的集合,保存成以sh后缀的文件文件,执行时需要执行权限。通常一个标准的SHELL脚本包含如下…...
做黄金比较专业的网站/微商引流的最快方法是什么
React Native已经封装了大部分最常见的组件,譬如ScrollView和TextInput,但不可能封装全部组件。而且,说不定你曾经为自己以前的App还封装过一些组件,React Native肯定没法包含它们。幸运的是,在React Naitve应用程序中…...
wordpress 破解/百度公司推广电话
MySQL之表(或数据库)操作语言-01 学习目标MySQL之表(或数据库)操作语言-011. 表(或数据库)操作语句1.1 查询表(或数据库)1.2 新建表(或)数据库1.3 删除表(或数据库&#…...