当前位置: 首页 > news >正文

State of ChatGPT ---- ChatGPT的技术综述

        声明:该文总结自AI菩萨Andrej Karpathy在youtube发布的演讲视频。

        原视频连接:State of GPT | BRK216HFS

        基础知识:

Transformer原文带读与代码实现icon-default.png?t=O83Ahttps://blog.csdn.net/m0_62716099/article/details/141289541?spm=1001.2014.3001.5501

How to train your (Chat)GPT Assistant?

四个主要阶段:预训练(Pretraining)、监督微调(Supervised Finetuning)、奖励建模(Reward Modeling)、强化学习(Reinforcement Learning)。.

四个阶段按照先后顺序进行。Pretraining是99%的计算发生的地方,可能花费数月的时间进行训练;其余三个阶段都属于Finetuning,花费的算力与时间都较小。

Pretraining

在训练之前,我们首先需要获取训练所需要的数据。混合多种来源的数据(已有数据集、Github、维基百科...)按照一定的算法进行采样等数据处理,形成了GPT的数据集。

在训练之前,还有一个重要的步骤,即为Tokenization(词元化),目的在于将所有的文本变换成整数的列表。词元的划分方式有所不同,GPT采用的是一种subword的方式。

在Pretraining阶段,我们一般会发生哪些步骤呢?

这里其实考验的就是Transformer的知识点了。因为之前已经讲过,我在这里就不赘述。如果不了解的同学可以去看一下我之前发的博客,里面也给了一些老师的视频链接。这是基础。

那么我们就是在Transformer的基础上训练一个模型。将我们(B,T)的词元输入到Transformer中并进行训练。如图所示 B=4, T=10。当然实际的长度会长的多。

总而言之,模型的输入是一长串的上下文数字序列,输出的是预测的下一个token。并行训练计算并不断地调整权重。

Supervised Finetuning

在经过漫长的预训练过程后,我们得到了一个强大的,能够进行广泛表达的模型。接下来我们就需要通过一些有监督的小型数据集进行微调,以至于让大模型能够更好的帮助进行下游任务。(GPT1)

预训练模型能够通过提示完成任务。例如在这个例子中,我们存在一些段落,然后提供一些QA,QA,QA,这就也被称为Few-show prompt,然后我们完成Q,GPT在补充文档的过程中帮助我们回答了A的答案。这就是基于模型的提示工程的示例。

        然后,Karpathy说了,目前最好用的Base Model 可能是Leta的LLaMA系列,虽然其参数量不大,但是其训练的数据更好。有更多的词元。

        但是,总而言之,Base models不是真正意义上的助手,其只是帮助我们预测下一个Token是什么,并完成它目前认为的文档。

 因此我们进入了Supervised Finetuning阶段,在这个阶段,我们需要获取的是少量但是高质量的数据集(Prompt,Response...)。我们依然要进行语言建模并进行训练,得到一个SFT模型。这样我们就得到了真正的助手,并且在某种程度上可以发挥作用。

Reward Modeling && Reinforcement learning

微调过后,我们就可以进入基于人类反馈的强化学习(reinforcement learning from human feedback)了。其包括Reward modeling && reinforcement learning。

在reward modeling过程中,我们需要把数据收集转换成比较的形式。

在训练的过程中,我们的数据集大概是如上的样式,我们生成了3段一摸一样的的提示词,然后利用Fine tuning中训练的SFT模型生成结果。生成结果后,我们通过人工的判断进行打分。这样我们就得到了自己的数据集。

我们把提示词和生成的回答以及打分都进行词元化,并将reward作为预测的结果进行训练。这样我们就可以让模型自己判断生成结果的好坏,并要求输出的结果必须远高于其他的结果。

但是在完成了奖励模型后,可能是由于在实际应用中发现奖励模型的效果欠佳,所以人们逐渐探索出强化学习的道路,并发现奖励模型在强化模型中应用效果非常好。因此逐渐对奖励模型进行强化学习。

这里不得不提一嘴,关于Finetuning后面的部分,我个人其实也不是很了解技术层面。因此若有问题,还是欢迎大家提出批评 :)

接下来我们就利用奖励模型得到的评分,进行强化学习。具体思路大概如下:评分越高,我生成completion中的token概率就会越高,反而就会越低。这样能够提升我们生成高质量回答的概率。

最后我们就可以获得一个可以部署的模型(RHLF模型)。当然市面上目前有的大多数模型是Base Model, SFT Model 与 RHLF Model。

RHLF对于专业知识的效果更好,但是会失去一些熵,这就意味着,base model的生成多样性可能是更好的。

Applications

 

    人们在应用的过程中发现,尤其是有关于需要推理的问题,模型很少能够完成复杂的问题。这并不是模型能力不够,而是复杂的推理过程可能无法在一个token中展现出来。因此用户们尝试着让模型对任务步骤进行分解,分成多个阶段进行处理,这样可以大大提升处理任务的成功率。这种方法也被称为chain of thought。

让模型使用工具

利用记忆帮助完成任务。

强制约束LLM的输出

更改模型的权重。

以上就是关于内容的总结。欢迎大家交流讨论~~~

相关文章:

State of ChatGPT ---- ChatGPT的技术综述

声明:该文总结自AI菩萨Andrej Karpathy在youtube发布的演讲视频。 原视频连接:State of GPT | BRK216HFS 基础知识: Transformer原文带读与代码实现https://blog.csdn.net/m0_62716099/article/details/141289541?spm1001.2014.3001.5501 H…...

构建高效新闻推荐系统:Spring Boot的力量

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...

如何使用ipopt进行非线性约束求目标函数最小值(NLP非线性规划)内点法(inner point method)

非线性规划,一般用matlab调用cplex和gurobi了,但这两个一般用于线性规划和二次规划 线性规划LP,二次规划(quadratic programming),如果要求更一般的非线性规划IPOT是个很好的选择,求解器很多&a…...

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题 一句话省流: 确保项目地址没有任何中文,重新申请个许可证,然后该咋就咋,完事。 ——————————————————————————————…...

回归分析在数据挖掘中的应用简析

一、引言 在数据驱动的时代,数据挖掘技术已成为从海量数据中提取有价值信息的关键工具。 回归分析,作为一种经典的统计学习方法,不仅在理论研究上有着深厚的基础,而且在实际 应用中也展现出强大的功能。 二、回归分析基础 2.1 回…...

【Node.js】worker_threads 多线程

Node.js 中的 worker_threads 模块 worker_threads 模块是 Node.js 中用于创建多线程处理的工具。 尽管 JavaScript 是单线程的,但有时候在处理计算密集型任务或长时间运行的操作时,单线程的运行会导致主线程被阻塞,影响服务器性能。 为了…...

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法(Greedy Algorithm),又名贪婪法,是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决…...

【STM32】 TCP/IP通信协议(3)--LwIP网络接口

LwIP协议栈支持多种不同的网络接口(网卡),由于网卡是直接跟硬件平台打交道,硬件不同则处理也是不同。那Iwip如何兼容这些不同的网卡呢? LwIP提供统一的接口,底层函数需要用户自行完成,例如网卡的…...

15分钟学 Python 第39天:Python 爬虫入门(五)

Day 39:Python 爬虫入门数据存储概述 在进行网页爬虫时,抓取到的数据需要存储以供后续分析和使用。常见的存储方式包括但不限于: 文件存储(如文本文件、CSV、JSON)数据库存储(如SQLite、MySQL、MongoDB&a…...

使用Pytorch构建自定义层并在模型中使用

使用Pytorch构建自定义层并在模型中使用 继承自nn.Module类,自定义名称为NoisyLinear的线性层,并在新模型定义过程中使用该自定义层。完整代码可以在jupyter nbviewer中在线访问。 import torch import torch.nn as nn from torch.utils.data import T…...

学习记录:js算法(五十六):从前序与中序遍历序列构造二叉树

文章目录 从前序与中序遍历序列构造二叉树我的思路网上思路 总结 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示…...

qt使用QDomDocument读写xml文件

在使用QDomDocument读写xml之前需要在工程文件添加: QT xml 1.生成xml文件 void createXml(QString xmlName) {QFile file(xmlName);if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate |QIODevice::Text))return false;QDomDocument doc;QDomProcessin…...

Oracle架构之表空间详解

文章目录 1 表空间介绍1.1 简介1.2 表空间分类1.2.1 SYSTEM 表空间1.2.2 SYSAUX 表空间1.2.3 UNDO 表空间1.2.4 USERS 表空间 1.3 表空间字典与本地管理1.3.1 字典管理表空间(Dictionary Management Tablespace,DMT)1.3.2 本地管理方式的表空…...

springboot整合seata

一、准备 docker部署seata-server 1.5.2参考&#xff1a;docker安装各个组件的命令 二、springboot集成seata 2.1 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>&…...

鸿蒙开发(NEXT/API 12)【二次向用户申请授权】程序访问控制

当应用通过[requestPermissionsFromUser()]拉起弹框[请求用户授权]时&#xff0c;用户拒绝授权。应用将无法再次通过requestPermissionsFromUser拉起弹框&#xff0c;需要用户在系统应用“设置”的界面中&#xff0c;手动授予权限。 在“设置”应用中的路径&#xff1a; 路径…...

docker export/import 和 docker save/load 的区别

Docker export/import 和 docker save/load 都是用于容器和镜像的备份和迁移&#xff0c;但它们有一些关键的区别&#xff1a; docker export/import: export 作用于容器&#xff0c;import 创建镜像导出的是容器的文件系统&#xff0c;不包含镜像的元数据丢失了镜像的层级结构…...

明星周边销售网站开发:SpringBoot技术全解析

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

STM32+ADC+扫描模式

1 ADC简介 1 ADC(模拟到数字量的桥梁) 2 DAC(数字量到模拟的桥梁)&#xff0c;例如&#xff1a;PWM&#xff08;只有完全导通和断开的状态&#xff0c;无功率损耗的状态&#xff09; DAC主要用于波形生成&#xff08;信号发生器和音频解码器&#xff09; 3 模拟看门狗自动监…...

R语言绘制散点图

散点图是一种在直角坐标系中用数据点直观呈现两个变量之间关系、可检测异常值并探索数据分布的可视化图表。它是一种常用的数据可视化工具&#xff0c;我们通过不同的参数调整和包的使用&#xff0c;可以创建出满足各种需求的散点图。 常用绘制散点图的函数有plot()函数和ggpl…...

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...