【生成式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…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
