【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train
Hung-yi Lee 课件整理
预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。
文章目录
- 机器是怎么学习的
- ChatGPT里面的监督学习
- GPT-2
- GPT-3和GPT-3.5
- GPT
- ChatGPT
- 支持多语言
- ChatGPT里面的自监督学习
G:generative
P:pre-train
T:transformer
机器是怎么学习的

有监督学习一般需要成对的语料来训练模型,比如机器翻译为例,需要中文和英文成对的语料来训练模型。
ChatGPT里面的监督学习

这里讲怎么把有监督学习套用到ChatGPT上,还是成对的语料,一问一答给到模型,机器自己寻找一个函数使得,当我们输入“台湾第一高峰是哪一座?”的时候输出“玉”的概率最大,当把“玉”再加到问句后面输入给模型的时候,输出“山”的概率最大。

但是这时候出现一个问题,假设机器真的是根据老师的教导来寻找函数,它的能力会非常有限,因为人类老师可以提供的成对资料十分有限。比如我们问它:世界第一高山是哪一座?它的学习语料里面没有喜马拉雅这个词,那么它就不会输出正确的结果。
实际上ChatGPT有一个机制可以无痛制造成对的语料。

网络上的每一段文字都可以教机器做文字接龙,比如“世界第一高峰是喜马拉雅山”,ChatGPT可以把前半段当作输入,后半段当作输出。
当输入“世界第一高峰是”的时候输出“喜”字的概率最大。
当输入“今天天气真好”的时候,输出“,”的概率最大。
ChatGPT的上一代模型GPT,它设计的目标就是这样一个文字接龙模型。
GPT-2
GPT模型在2018年就已经出现了,那时候模型比较小,只有117M的参数,使用的数据也只有1GB。
第二年(2019年)公开了GPT-2,模型大小到了1542M的参数,训练数据是40G。
这时候的GPT就可以瞎掰了,讲出来的东西就开始像模像样了。
GPT-2能做很多事情,比如回答“世界第一高峰”这个问题,给一段文字让它输出摘要。

对于GPT-2在回答问题上的表现有这样一个测试。
横轴表示模型的大小,纵轴表示F1(不知道的可以理解为准确率),我们看出它的能力和人类的回答还有很大的差距,但是比一些常见的模型好很多了。
就算只是做文字接龙,这时候的GPT就已经有能力回答问题了。
GPT-3和GPT-3.5

到了2020年,GPT-3的参数量是GPT-2的100倍了,有175B的参数,它的训练数据有570GB,这个数据量相当于阅读哈利波特30万遍,实际上OpenAI从网络上爬取了45T的数据,从中筛选了570GB数据出来训练模型。
那么什么是GPT-3.5呢,其实没有任何一篇文章明确说明它的含义,OpenAI官方的说法是只要是在GPT-3上做微调,再来做其他事情的模型都是GPT-3.5。
我们来看看GPT-3能做什么事情。

我们给GPT-3输入这样的语料,输入是程序代码的描述,输出是程序代码,这样它就可以写程序了,这不是很惊人的事情。

这里我们可以看到在42个NLP任务上做的测试,先不考虑细节,整体上可以看到随着模型越来越大准确率在提高,但是最大的也就是不到60%的准确率,难道GPT-3智能这么大点能耐吗?
GPT
其实GPT很多时候是不受控制的。
比如说你给它一段描述,让它剖析一下这段程序语言,问他这段代码里面的C的目的是什么,它给出的答案是这样的,出一个选择题给你让你选择。
这是因为它学习了网上很多试题,它的学习能力很强,但是给出的答案不一定是我们想要的,
ChatGPT
怎么办呢,怎么才能强化它的能力呢。
再下一代就到ChatGPT了。需要介入人类老师了,在这之前是不需要人类老师的,从GPT到ChatGPT就需要人类老师的介入了,所以ChatGPT是GPT经过监督学习的模型。
人类老师告诉它,以后别人问你“台湾最高的山是什么山”你要告诉他是“玉山”。
这个有监督学习的过程也叫finetune,或者是继续学习,之前的GPT模型是预训练模型,也是自监督学习。
这里用于有监督学习的语料不是人类整理的,是用一些方法无痛生成的,这种方式就叫做自监督学习,也叫基石模型。
支持多语言
它是怎么做到支持多语言的呢?
ChatGPT不是在单一的预训练模型上做的finetune,里面可能就包含Muti-Bert这样的语言模型。
Muti-Bert支持104种语言,当我们给它只做了英文的阅读理解后,它自动的其他语言也都学会了。
所以ChatGPT不需要单独做翻译这件事情,它自己就学会了翻译。

来看看真正的实验数据。
最下面一行显示人类的表现是93%的准确率。
- 在AQNet模型的Pre-train里面没有中文语料,用中文语料做finetune,然后再在中文上做测试,准确率只有78.1;
- 在Bert模型的Pre-train里面只有中文语料,用中文语料做finetune,然后再在中文上做测试,准确率是89.1,提升了不少;
- 神奇的是,在Bert模型的Pre-train里面有104中语言,用英文语料做finetune,然后再在中文上做测试,准确率也能达到78.8,这说明了我们教它英文,它自己学会了中文。
怎么理解呢,在机器学完很多种语言后,对它来说所有的语言都是一种语言了,没有差别。

ChatGPT里面的自监督学习
我们知道,ChatGPT除了自监督学习,有监督学习还做了强化学习。
在强化学习里面人不是告诉机器答案是什么,而是告诉机器现在的答案是好还是不好。
增强学习有什么好处呢,监督学习的老师是比较辛苦的,需要知道正确的答案,强化学习的老师就可以偷懒,只需要点个赞或者点个倒赞就可以。
增强学习还有一个优势是适合用在人类自己都不知道答案的时候,比如“请帮我写诗赞美AI”,这样的问题,人类不需要给答案,只要给反馈就可以了。
那么ChatGPT就是这样三个过程,先做预训练,然后做有监督学习,最后做强化学习。

至于增强学习其他的细节,我们下一篇博客再细讲。
相关文章:
【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train
Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…...
Day03:Web架构OSS存储负载均衡CDN加速反向代理WAF防护
目录 WAF CDN OSS 反向代理 负载均衡 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服务/负载均衡等 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令:文件上传下载/端口服务/Shell反弹等 抓包技术:…...
C++多线程同步(上)
多线程同步 引言总述详情互斥锁示例运行结果分析条件变量示例一实现分析优化运行结果示例二实现代码运行结果示例三实现代码运行结果读写锁示例实现代码注意分析运行结果附言实现运行结果运行结果个人心得引言 项目中使用多线程,会遇到两种问题,一种是对共享资源的访问时需要…...
猜猜心里数字(个人学习笔记黑马学习)
1.定义一个变量,数字类型,内容随意 2.基于input语句输入猜想的数字,通过if和多次elif的组合,判断猜想数字是否和心里数字一致 num5if int(input("请输入第一次猜想的数字:"))5:print("猜对了࿰…...
实用Pycharm插件
Pycharm的离线安装:https://plugins.jetbrains.com/ 需要根据对应的Pycharm/Goland版本选取所需的 对于实用的插件如下: 实时查看每一行的git blame信息: Gittoolbox 转换IDE的英文为中文:Chinese IDE侧格式化json字符串&#…...
数据结构试题练习
(1). 假如队列未满,现有变量data需要入队,请写出表达式; if( (tail1)%SEQLEN ! head ) {seqn[tail] data;tail (tail1)%SEQLEN; } (2). 假如队列未空,现在需要从队列取一个元素并赋值给变量data,请写出表达式; if( head ! tail ) {data se…...
s-table和columns初始化不完整,造成table文件的filter报错
问题 顺藤摸瓜找errorHandler.js文件 发现文件并没有什么问题 顺藤摸瓜找index.vue文件 首先找到报错的filter,发现与columnsSetting相关 找到columnsSetting发现等于columns 返回自己使用S-table组件的地方,发现columns初始化时仅初始化为ref()未表明…...
SLA 是什么?如何实现 SLA 管理
随着业务的不断壮大,为了满足日益增长的客户需求,网络必须保持与这些需求同步。同时,为了提高最终用户的体验,运维人员/网络管理员在监控企业级网络时遇到了不少瓶颈,必须不断审查网络,以确保提供的服务质量…...
火灾安全护航:火灾监测报警摄像机助力建筑安全
火灾是建筑安全中最常见也最具破坏力的灾难之一,为了及时发现火灾、减少火灾造成的损失,火灾监测报警摄像机应运而生,成为建筑防火安全的重要技术装备。 火灾监测报警摄像机采用高清晰度摄像头和智能识别系统,能够全天候监测建筑内…...
JavaScript 基础学习笔记(五):函数、作用域、匿名函数
目录 一、函数 1.1 声明和调用 1.2 形参和实参 1.3 返回值 二、作用域 2.1 全局作用域 2.2 局部作用域 三、匿名函数 3.1 函数表达式 3.2 立即执行函数 一、函数 理解函数的封装特性,掌握函数的语法规则 1.1 声明和调用 函数可以把具有相同或相似逻辑的代…...
Qt环境配置VTK
Qt与VTK的结合为开发者提供了强大的跨平台图形界面开发能力和三维可视化处理能力。本教程旨在详细介绍如何配置Qt环境以使用VTK库,从而为开发者打造高效、强大的三维可视化应用。 一、准备工作 在开始之前,确保您的开发环境中已经安装了Qt和CMake。Qt提…...
腾讯云最新活动_腾讯云促销优惠_代金券-腾讯云官网入口
腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…...
如何创建自己的Spring Boot Starter并为其编写单元测试
当我们想要封装一些自定义功能给别人使用的时候,创建Spring Boot Starter的形式是最好的实现方式。如果您还不会构建自己的Spring Boot Starter的话,本文将带你一起创建一个自己的Spring Boot Starter。 快速入门 创建一个新的 Maven 项目。第三方封装的…...
数据分析---常见处理逻辑
目录 数据清洗数据转换数据聚合数据筛选增删改查(以查为例)数据清洗 去除重复值:使用DISTINCT关键字去除重复行。//这将返回一个包含所有不重复城市的结果集 SELECT DISTINCT city FROM students;处理缺失值:使用IS NULL或IS NOT NULL判断是否为空值,并使用COALESCE或CASE…...
2024-02-26(金融AI行业概览与大数据生态圈)
1.最开始的风控是怎么做的? 人审 吃业务经验 不能大批量处理,效率低下 不适用于移动互联网的金融场景 2.建模的概念 建模就是构造一个数学公式,能将我们手上有的数据输入进去,通过计算得到一些预测结果。 比如初高中学习的…...
git忽略某些文件(夹)更改说明
概述 在项目中,常有需要忽略的文件、文件夹提交到代码仓库中,在此做个笔录。 一、在项目根目录内新建文本文件,并重命名为.gitignore,该文件语法如下 # 以#开始的行,被视为注释. # 忽略掉所有文件名是 a.txt的文件. a.txt # 忽略所有生成的 java文件, *.java # a.j…...
python爬虫实战:获取电子邮件和联系人信息
引言 在数字时代,电子邮件和联系人信息成为了许多企业和个人重要的资源,在本文中,我们将探讨如何使用Python爬虫从网页中提取电子邮件和联系人信息,并附上示例代码。 目录 引言 二、准备工作 你可以使用以下命令来安装这些库&a…...
post请求同时上传文件并传递其他参数的前后端写法
最近有一需求,post请求从前端上传一个文件同时传递一个参数,多次实验后记录下两种写法: 方法一: 前端:重点是设置请求头代码如下: getfile(event) {//input框输入文件let file event.target.files[0];l…...
【数仓】基本概念、知识普及、核心技术
一、数仓基本概念 数仓的定义: 数据仓库(Data Warehouse,简称DW或DWH)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。简言之,它是一个大型存储库,用于存储来…...
ky10-server docker 离线安装包、离线安装
离线安装脚本 # ---------------离线安装docker------------------- rpm -Uvh --force --nodeps *.rpm# 修改docker拉取源为国内 rm -rf /etc/docker mkdir -p /etc/docker touch /etc/docker/daemon.json cat >/etc/docker/daemon.json<<EOF{"registry-mirro…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
Spring Boot SQL数据库功能详解
Spring Boot自动配置与数据源管理 数据源自动配置机制 当在Spring Boot项目中添加数据库驱动依赖(如org.postgresql:postgresql)后,应用启动时自动配置系统会尝试创建DataSource实现。开发者只需提供基础连接信息: 数据库URL格…...
