【小白入门篇1】GPT到底是怎样练成?

news2024/11/20 9:30:02

由于具有代表性的OpenAI公司GPT模型并没有开源,所以本章节是参考一些开源和现有课程(李宏毅)讲解ChatGPT原理。本章没有涉及到很多数学运算,比较适合小白了解GPT到底是怎么练成。GPT的三个英文字母分别代表Generative(生成式),Pre-trained(预训练),Transformer(Transforer模型,参考《Transformer家族》和《Transformer原理》)。

目前GPT模型已经发展出很多类似版本,不仅仅是OpenAI的GPT,还有Google Brad、Anthropic Claude以及xAI的Grok等等。

01 GPT的原理—文字接龙游戏

GPT真正在做的事就是”文字接龙“。简单来说就是预测输入的下一个字概率。

但并不是直接选择概率最大的文字作为输出,而是在输出时候还要掷骰子,也就是说答案具有随机性 也就是为什么每次你问大模型的时候,一样的问题会得到不一样的输出。

1ca8c21f5434749912c2d8c0003d1f70.jpeg


这跟我们以往做预测的时候,感觉很不一样, 以往我们都是输出概率最大作为结果, 所以为什么要掷骰子呢?

因为有很多相关研究证明,每次输出最大概率不一定是最好的,类似地文章《The Curious Case of Neural Text Degeneration》中有论证过, 同时这也符合我们人类特征, 同一个问题,可能问同一个人多次, 答案的输出并不是一模一样。

ChatGPT的答案为什么不一定是对的?

如果我们理解了ChatGPT的原理之后,其实ChatGPT就是在关心文字接龙顺不顺畅, 而不会关心内容的真实性(如果有朋友用过,就知道它的答案不一定是正确)。

GPT为什么可以实现上下文关联?

其实还是文字接龙的游戏, 在每次回答问题的时候,GPT不仅考虑当前的输入, 也会将历史的对话作为输入。

02 GPT是怎么学习文字接龙的呢?

基本经历过自学、人类教导、找到好老师、老师引导四个的过程。

2.1 自学

其实任何文本都是可以作为训练资料的, 比如下图的例子,就是依次学习文句,增加下个字的概率。ff23e25dde4e6be46dbfa7004bad4446.jpeg


    但是光靠学习文字接龙还远远不够, 比如GPT 仍不知道该如何给出有用的回答。比如问 GPT “世界上最高的山是哪座山?”,“你能告诉我么”、“珠穆朗玛峰”、“这是一个好问题” 都是上下文通顺的回答,但显然 “珠穆朗玛峰” 是更符合人类期望的回答。这时需要人类的指导。

2.2 人类教导cea5e1b41934b1f44b98cfc506922e74.jpeg

   这时候在语言模型自学之后,需要引入人类监督训练。这个阶段不需要很多标注好资料去训练,毕竟成本太大。 74796d9a92afe0e611befb7aa1ba2526.jpeg


通过这种人类监督训练,我们就可以得到一个简易版的GPT模型。

  2.3 找到好老师

    为了让简易版的GPT模型变强,其实OpenAI参考了以前的AlphaGo模型的方式,通过海量的自我对弈优化模型,最终超过人类。为了完成目标,人类引导的方式成本过高,于是乎,请了一个”好老师“(reward模型),这个老师不会像人类监督那样,直接给出答案,而是对模型输出给一个反馈,只有好与不好,让模型根据反馈自动调整输出,直到老师给出好的评价。
38acafec0426e942791307c025349bde.jpeg


  怎么找到有个能辨别 GPT 回答好坏的老师模型(即 Reward 模型)?

  于是研究人员让 GPT 对特定问题给出多个答案,由人类来对这些答案的好坏做排序(相比直接给出答案,让人类做排序要简单得多)。基于这些评价数据,研究人员训练了一个符合人类评价标准的老师(Reward 模型)。

    2.4 老师引导

有了好老师后,就可以开始像周伯通那样,左手(GPT)右手(好老师)互搏。要实现 AI 引导AI,得借助强化学习技术;简单来说就是让 AI 通过不断尝试,有则改之、无则加勉,从而逐步变强。8919eb11885d315c3a4aca9632cc8f0c.jpeg



有了人类训练出来的好老师,通过好老师夜以继日引导,从而最终对齐了人类的偏好,最终实现了符合人类特征的回答。

3 总结

以上语言模型学习接龙的过程其实也是对应我们微调模型PPO策略:

  • 自学->对应 PreTraing (预训练)

  • 人类指导-> Supervised Finetuing(监督微调)

  • 好老师-> Reward Modeing(奖励模型)

  • 老师引导-> Reinforcement Learning(强化学习)

bc78d0eab4912cc7f9abec3b4d028f2c.jpeg

GPT经过这样过程学会成为文字接龙高手,它能够对答如流,但实际上这些回答往往欠缺逻辑性和正确性的考虑,从某种意义上说模型有时候是 “一本正经地胡说八道”,因而闹出很多笑话。但是GPT在很多领域依然能够超越人类(毕竟人类很多时候也会一本正经胡说八道,从某种意义来说更像人类了),并且还在不断发展,GPT功能是很强,但是如何学会用它,也是一门需要学习课程(提示工程师),有些人也用了提示工程结合其他工具制作出来很多GPT外挂(GPTs)。

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

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

相关文章

CSS样式,1行文字溢出...省略,2行文字溢出...省略,多行文字溢出...省略

提示&#xff1a;CSS样式文字溢出…省略 文章目录 前言一、1行文字溢出...省略二、2行或多行文字溢出...省略三、1行或多行文字溢出...省略总结 前言 一、1行文字溢出…省略 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset…

Linux中Oracle数据库启动顺序

首先使用oracle用户登录Linux&#xff0c;用lsnrctl status查看监听状态 1、&#xff1a;进入sqlplus $ sqlplus /nolog SQL> 2&#xff1a;使用sysdab角色登录sqlplus SQL> conn /as sysdba 3&#xff1a;启动数据库 SQL> startup 4&#xff1a;打开Oracle监听 …

gitee上传方法,gitee基础命令使用,看一遍就会q(≧▽≦q)

废话不多说&#xff0c;直接上项目演示ψ(&#xff40;∇)ψ 必备工具:Git Bash 首先创建新仓库&#xff1a; 填写仓库名称 起一个合适的名字即可 其他的可以不用填&#xff0c;直接点击创建 然后会跳转到这样的一个页面 然后打开项目文件夹,点击右键,选择 Open Git Bash h…

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的捕获模式(外部中断)应用

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的捕获模式(外部中断)应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 805…

电商爬虫系统|电商数据采集|电商API商品数据采集

1、基本的说明 当初为了在几个电商网站抓取商品信息数据搭建的系统。该系统主要用来抓取电商网站上面的一百个左右品类的商品的价格信息、商品信息和折扣信息等。抓取的电商网站主要是某宝和某东。其他的电商网站抓取信息的方式无外乎这两种。跟其他的示例代码不同&#xff0c…

[Java、Android面试]_12_java访问修饰符、抽象类和接口

文章目录 1. java访问修饰符2. 抽象类和接口2.1 抽象类2.2 接口2.3 抽象类和接口的区别 本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&…

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…

使用蜂鸣器演奏《生日快乐》

一、音的组成 音乐通常由以下几个基本元素组成&#xff1a; 旋律&#xff08;Melody&#xff09;&#xff1a;旋律是一系列连续的音符&#xff0c;通过它们的音高和音长来构成乐曲的主旋律部分。旋律是音乐中最容易被人们记住和感知的部分。 节奏&#xff08;Rhythm&#xff…

如何从零开始拆解uni-app开发的vue项目(一)

uni-app项目分析: 背景:最近接手一个前同事留下的半拉子项目,出拿过来觉得很简单;当我看到app.vue的时候很确定是vue项目,心里不怎么慌,果断安装node.js,然后就去npm ;安装VS code,事实并不是我期盼的那样,或者说根本就不能运行。 报错:应用vs code打开文件,输入命…

【漏洞复现】福建科立迅通信指挥调度平台pwd_update.php SQL注入漏洞 (CVE-2024-2621)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

如何保障消息一定能发送到RabbitMQ?

我们知道&#xff0c;RabbitMQ的消息最终是存储在Queue上的&#xff0c;而在Queue之前还要经过Exchange&#xff0c;那么这个过程中就有两个地方可能导致消息丢失。第一个是Producer到Exchange的过程&#xff0c;第二个是Exchange到Queue的过程。 为了解决这个问题&#xff0c…

【Transformer】transformer注解

every blog every motto: You can do more than you think. 0. 前言 transformer注解 在过去的一年里&#xff0c;《Attention is all you need》中的transformer一直萦绕在很多人的脑海里。除了在翻译质量上产生重大改进之外&#xff0c;它还为许多其他NLP任务提供了一种新的…

2024年【危险化学品经营单位安全管理人员】新版试题及危险化学品经营单位安全管理人员模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员新版试题考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品经营单位安…

matlab 电机仿真平台GUI

1、内容简介 略 74-可以交流、咨询、答疑 2、内容说明 略 电机仿真平台GUI 包含直流机要加调电压启动、回馈制动、串电阻调速 异步电动机要加串电阻启动、星三角启动、回馈制动模块 3、仿真分析 略 4、参考论文 略

【网安】DDoS / Web漏洞 / CC攻击 / 恶意爬虫

【网安】DDoS攻击&#xff1a;方法、影响与防御策略 写在最前面1.DDoS&#xff08;分布式拒绝服务&#xff09;攻击2. Web 漏洞利用3. CC&#xff08;凭证破解&#xff09;攻击4.恶意爬虫 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&…

Vue介绍使用

文章目录 Vue概念一、Vue快速入门二、Vue常用指令三、Vue生命周期四、案例1、查询所有2、新增品牌 Vue概念 一、Vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> <…

chap验证实验

一、添加接口 在每个路由器里添加2SA接口 二、配IP 进入serial接口配置IP R1&#xff1a; R2&#xff1a; ppp mp Mp-group 0/0/0 R3: 查看&#xff1a; 三、aaa认证&#xff0c;chap验证 创建一个新用户&#xff1a; R2进入3/0/0接口&#xff1a; R1进入3/0/0接口&a…

蓝桥杯2021年第十三届省赛真题-解密

一、题目 解密 【问题描述】 小明设计了一种文章加密的方法&#xff1a;对于每个字母 c&#xff0c;将它变成某个另外的字符 Tc。下表给出了字符变换的规则&#xff1a; 例如&#xff0c;将字符串 YeRi 加密可得字符串 EaFn。 小明有一个随机的字符串&#xff0c;加密后为EaFnj…

ERNIE SDK 本地使用与markdown自动生成

ERNIE SDK 仓库包含两个项目&#xff1a;ERNIE Bot Agent 和 ERNIE Bot。ERNIE Bot Agent 是百度飞桨推出的基于文心大模型编排能力的大模型智能体开发框架&#xff0c;结合了飞桨星河社区的丰富预置平台功能。ERNIE Bot 则为开发者提供便捷接口&#xff0c;轻松调用文心大模型…

从零开始学习在VUE3中使用canvas(六):lineCap(线条端点样式)

一、简介 lineCap能够让我们设置线条的端点样式&#xff0c;例如 1. butt const ctx canvas.getContext("2d");ctx.lineCap "butt"; // 默认样式&#xff0c;也可以显式指定 2.round const ctx canvas.getContext("2d");//圆头ctx.lineCap …