总结与提升
今天学习了ai,对今天学习的内容进行总结。
本文参考chat gpt-4的训练文献。
模型架构基础
- Transformer 架构:ChatGPT 采用了 Transformer 架构,这是一种基于自注意力机制的深度学习模型架构。它能够并行计算文本中的长期依赖关系,有效捕捉输入文本的语义信息,从而更好地理解和生成自然语言文本。在 Transformer 架构中,包含了多个堆叠的编码器和解码器层,编码器负责将输入文本编码为一个固定维度的向量表示,解码器则根据编码器的输出和之前生成的文本,逐步生成下一个单词或字符.
- 大规模参数:模型具有海量的参数,如 GPT-3 拥有 1.75 万亿个参数,这些大规模的参数使得模型能够学习到丰富的语言知识和语义模式,从而具备强大的语言生成能力,可以适应各种不同的自然语言处理任务,并在多个任务上达到了颠覆性的效果,如生成新闻、回答问题、翻译等.
预训练数据
- 数据来源广泛:预训练数据来源多样,主要包括维基百科、书籍、期刊、Reddit 链接、Common Crawl 等。其中,维基百科提供了丰富的多语言、多领域且被严格引用的说明性文字;书籍则有助于训练模型的故事讲述和反应能力;期刊论文为模型提供了更有条理、理性和细致的语言表达范例;Reddit 链接中的热门内容反映了当下的流行趋势和大众关注点;Common Crawl 包含了海量的不同语言和领域的网页文本。此外,还有如 GitHub 代码数据集、Stack Exchange 对话论坛和视频字幕数据集等其他类型的数据.
- 海量数据规模:预训练数据量达到了 45TB,如此大规模的数据为模型提供了丰富的语言样本,使其能够学习到各种语言表达方式、语义理解和知识体系,从而在面对不同的输入文本时,能够更准确地生成符合语义和逻辑的回复2.
训练方法
- 无监督预训练:首先使用大量的无监督数据进行预训练,让模型自动从海量文本中学习语言的语法、语义、逻辑等知识和模式,如学习单词之间的共现关系、句子的结构模式、文本的语义连贯性等,初步构建起对自然语言的理解和生成能力.
- 监督调优:在预训练的基础上,使用监督学习的方式,利用带有标签的文本数据集对模型进行进一步训练。这些标签为模型提供了明确的文本正确性和上下文信息指导,帮助模型更加准确地理解和生成符合要求的文本,使其生成的文本更加准确、连贯,能够更好地适应各种具体的自然语言处理任务,如问答、翻译等.
- 人类反馈强化学习(RLHF):这是 ChatGPT 训练的独特之处,通过引入人类反馈来优化模型。具体包括以下几个步骤 :
- 训练回报模型:在监督学习之后,使用强化学习中的回报模型来训练。该回报模型作为一种奖励机制,当 ChatGPT 生成合理、有条理和通顺的文本时,会给出正面的奖励值;而当生成不合理、有误导性或无意义的文本时,则给出负面的奖励值。这样可以引导模型朝着生成更符合人类期望的高质量文本的方向进行调整和优化。
- 使用 PPO 模型微调 SFT 模型:ChatGPT 使用近端策略优化(PPO)模型来调整其回报模型,以改善模型的生成效果。同时,还采用了自我微调(SFT)技术,让模型能够根据当前的任务和数据集自主学习和调整,进一步提高模型在多个任务和数据集上的性能表现。
训练优化与改进
- 模型微调:针对特定的任务或领域,在预训练好的模型基础上进行微调,使其更适应具体的应用场景和需求。微调时需要选择合适的预训练模型,并准备与任务相对应的数据集,然后根据任务需求构建模型,对预训练模型进行调整和初始化,通过反向传播算法更新模型参数,以最小化损失函数,提高模型在特定任务上的生成能力和语义理解能力.
- 模型压缩:为了提高模型的运行效率和存储效率,采用模型压缩技术,如剪枝、量化、蒸馏等。剪枝通过删除一些不重要的神经元和连接来减少模型的大小和计算量;量化则是将模型中的浮点数参数转换为低精度的整数或定点数参数,以减少存储空间和计算量;蒸馏是将一个较大的教师模型的知识传递给一个较小的学生模型,从而得到一个性能较好且规模较小的模型.
- 加速训练与推理:采用分布式训练、梯度累积、动态学习率调整等方法来加快模型的训练速度,缩短训练时间。在推理阶段,通过模型优化、硬件加速、网络剪枝和量化等技巧来提高模型的推理速度,从而提升模型的运行效率,更好地满足实际应用中的实时性要求.
下面来说一下实操:
数据收集与预处理
- 数据收集:
- 对于文本相关的任务,可以收集新闻文章、小说、论文、社交媒体文本等。例如,训练一个新闻生成模型,就需要大量的新闻报道作为数据来源.
- 对于图像任务,收集各种相关的图片,如训练一个动物分类模型,就需要收集不同种类动物的图片.
- 还可以利用公开数据集,如 MNIST 数据集用于手写数字识别、CIFAR-10 数据集用于图像分类等常见的基准数据集.
- 数据预处理 :
- 对文本数据进行清洗,去除噪声、重复内容、特殊符号等,然后进行分词、词向量化等操作,将文本转化为模型能够处理的格式。
- 对于图像数据,进行裁剪、缩放、归一化等操作,使图像数据具有统一的尺寸和格式,便于模型训练。
选择合适的模型架构
- 根据任务类型和数据特点选择模型架构:
- 卷积神经网络(CNN):适用于处理图像数据,能够自动提取图像的特征,如在图像分类、目标检测等任务中表现出色1.
- 循环神经网络(RNN)及其变体:如长短期记忆网络(LSTM)和门控循环单元(GRU),适合处理序列数据,如文本生成、语音识别等自然语言处理任务.
- Transformer 架构:在自然语言处理领域广泛应用,能够有效捕捉文本中的长距离依赖关系,如 GPT、BERT 等模型都是基于 Transformer 架构构建的,适用于文本生成、机器翻译等多种任务.
模型训练
- 准备训练环境:
- 安装必要的软件和库,如 Python、TensorFlow、PyTorch 等深度学习框架及其相关依赖库.
- 配置合适的硬件环境,对于小规模的模型训练,普通的高性能个人电脑可能就足够,但对于大规模复杂模型,可能需要使用云计算服务或专用的 GPU 服务器来加速训练.
- 确定超参数:
- 设置学习率,学习率决定了模型参数更新的步长,过大或过小的学习率都可能影响训练效果,通常需要通过试验来选择合适的学习率值.
- 确定批次大小,即每次训练时使用的数据样本数量,批次大小会影响训练的速度和模型的收敛情况.
- 设定训练的轮数,即模型对整个数据集进行训练的次数,一般来说,训练轮数越多,模型越有可能收敛到更好的性能,但也可能导致过拟合.
- 开始训练:
- 将预处理后的数据输入到选定的模型中,使用选定的优化算法,如随机梯度下降(SGD)、Adagrad、Adadelta、Adam 等,对模型的参数进行更新,以最小化损失函数的值.
- 在训练过程中,监控模型的训练损失、准确率等指标的变化情况,根据这些指标的变化趋势来调整训练策略,如调整学习率、提前停止训练等,防止过拟合和欠拟合的发生.
模型评估与优化
- 模型评估:
- 使用测试数据集对训练好的模型进行评估,计算各种评估指标,如准确率、精确率、召回率、F1 值、均方误差等,以客观地评价模型的性能和泛化能力.
- 除了定量评估指标外,还可以通过人工观察和分析模型生成的结果来进行定性评估,如查看生成的文本是否通顺、合理,图像是否符合预期等。
- 模型优化 :
- 如果模型存在过拟合问题,可以采用正则化技术,如 L1 正则化、L2 正则化、Dropout 等,来减少模型的复杂度,防止模型对训练数据过度拟合。
- 若模型性能不理想,可以尝试调整模型的结构,如增加或减少层数、神经元数量等,或者更换不同的模型架构。
- 还可以收集更多的数据或对数据进行增强,以增加数据的多样性,提高模型的泛化能力。
模型部署与应用
- 将训练好且经过评估和优化的模型部署到实际的生产环境中,使其能够为具体的应用提供服务.
- 根据应用的需求,开发相应的接口或应用程序,将模型集成到整个系统中,实现 AI 模型的实际应用价值,如将图像分类模型集成到图像识别系统中,将文本生成模型应用于智能写作助手等
相关文章:
总结与提升
今天学习了ai,对今天学习的内容进行总结。 本文参考chat gpt-4的训练文献。 模型架构基础 Transformer 架构:ChatGPT 采用了 Transformer 架构,这是一种基于自注意力机制的深度学习模型架构。它能够并行计算文本中的长期依赖关系ÿ…...

入门pytorch-Transformer
前言 虽然Transformer是2017年由Google推出,如果按照读论文只读近两年的思路看,那它无疑是过时的,但可惜的是,目前很多论文的核心依然是Transformer,或者由其进行改进的,故本文使用pytorch来搭建一下Trans…...

泛型编程--
auto自动推导数据类型 函数模板 定义和调用 函数模板具体化 函数模板通用版本之外的一个特殊版本 函数模板 具体化函数 ,它们的声明和定义都可以分开写。 声明 定义 函数模板写变量 模板参数缺省 类成员函数作为函数模板 类构造函数是函数模板 函数模板重载 函数模…...

【大语言模型】LangChain 核心模块介绍(Agents)
【大语言模型】LangChain 核心模块介绍(Agents) 一、简介二、Agents 的核心概念三、实战案例3.1、需求说明3.2、实现思路3.3、完整源码 一、简介 我们都知道四肢的绝大部分动作都是由大脑决定的,大脑通过中枢神经下发自己的操作指令…...

19C-RAC 环境mgmtca.trc.1过大
客户监控告警/u01使用率超过80%,通过一层层目录查看,发现是mgmtca.trc.1过大导致的告警 [rootgsdb1 ~]# du -sh /u01/app/grid/cfgtoollogs/mgmtca/mgmtca.trc.1 103G /u01/app/grid/cfgtoollogs/mgmtca/mgmtca.trc.1 查看MOS文档:Huge …...

基于Spring Boot的同城宠物照看系统的设计与实现
一、摘要 在快节奏的现代生活中,宠物已成为许多家庭不可或缺的一部分。然而,宠物照看服务的需求也随之增长。为了满足这一需求,我们设计并实现了一款同城宠物照看系统,该系统利用Java技术和MySQL数据库,为用户提供一个…...

爬虫学习案例5
爬取b站一个视频 罗翔老师某一个视频很刑 单个完整代码: 安装依赖库 pip install lxml requests import osimport requests import re from lxml import etree import json # 格式化展开输出 from pprint import pprint # 导入进程模块 import subprocess head…...

视频监控汇聚平台方案设计:Liveweb视频智能监管系统方案技术特点与应用
随着科技的发展,视频监控平台在各个领域的应用越来越广泛。然而,当前的视频监控平台仍存在一些问题,如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果,也制约了视频监控平台的发展。 为了解决这些问…...

ansible自动化运维(三)jinja2模板roles角色管理
相关文章ansible自动化运维(一)简介及清单,模块-CSDN博客ansible自动化运维(二)playbook模式详解-CSDN博客ansible自动化运维(四)运维实战-CSDN博客 三.Ansible jinja2模板 Jinja2是Python的全功能模板引…...

队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度
429. N 叉树的层序遍历 定义一个队列q,将一层的节点入队,并记录节点个数。根据节点的个数,出队列,并将其孩子入队列。出完队列,队列当前剩余节点的个数就是下次出队列的次数。直到队列为空 /* // Definition for a Nod…...

Windows11安装及使用nvm
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Windows11安装nvm 前言一、简介二、下载三、安装1、双击运行,同意协议,点击Next2、选择nvm安装路径,此路径也是环境变量NVM_HOME的路径&am…...
(一)机器学习 - 入门
数据集 数据集是一组数据的集合,这些数据可以是数值型、文本型、图形型等多种形式。数据集通常用于统计分析、机器学习、科学研究、商业智能等领域,以发现数据中的模式、趋势和关联性。 数据集的组成: 变量(Variables)…...

【解决】k8s使用kubeadm初始化集群失败问题整理
执行提示命令,查看报错信息 journalctl -xeu kubelet1、错误:running with swap on is no 报错 "command failed" err"failed to run Kubelet: running with swap on is no 解决: swap未禁用,需要禁用swap&…...
apache-dubbo
dubbo 文档地址 dubbo 官方文档地址 https://dubbo.apache.org/zh-cn/docs/user/references/api.html nacos 官方文档地址 https://nacos.io/zh-cn/docs/quick-start.html nacos下载地址 https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.…...

ECharts柱状图-柱图2,附视频讲解与代码下载
引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…...

【新人系列】Python 入门(十六):正则表达式
✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...

HTML综合
一.HTML的初始结构 <!DOCTYPE html> <html lang"en"><head><!-- 设置文本字符 --><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置网页…...
孚盟云 MailAjax.ashx SQL注入漏洞复现
0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,主要…...

解决“VMware虚拟机报Intel VT-x”错误
今天,在windows系统上,打开VMware WorkStation v15软件里的虚拟机,弹出"Intel VT-x处于禁用状态"错误,如图(1)所示: 图(1) 虚拟机报"Intel VT-x"错误 问题原因:当前电脑的BIOS没有开启…...
NiceGUI `ui.table` 基础
NiceGUI ui.table 基础 ui.table 是 NiceGUI 提供的一个组件,用于在页面上展示数据表格 基本概念 官方简介 A table based on Quasar’s QTable component. 参数参考rows:list of row objects; 行对象列表columns:list of column objects (defaults to the colu…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...