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

【人工智能】第二部分:ChatGPT的架构设计和训练过程

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

2.1 架构设计

自注意力机制(Self-Attention Mechanism)

前馈神经网络(Feedforward Neural Network)

残差连接(Residual Connection)和层归一化(Layer Normalization)

最终输出

2.2 自注意力机制详解

2.3 多头注意力机制

2.4 位置编码

2.5 训练过程

2.5.1 预训练

2.5.2 微调

作者其他作品:


 

2.1 架构设计

ChatGPT的核心架构是基于Transformer解码器。Transformer解码器主要由多个堆叠的解码器层(Decoder Layer)组成,每个层包括以下几个关键组件:

自注意力机制(Self-Attention Mechanism)

自注意力机制是解码器的核心组件之一,用于捕捉输入序列中各个单词之间的关系。通过计算查询(Query)、键(Key)和值(Value)向量之间的相似度,自注意力机制能够为每个单词分配不同的权重,反映其在当前上下文中的重要性。这一机制使得模型能够在生成过程中考虑到整个输入序列的各个部分,从而生成连贯且上下文相关的文本。

前馈神经网络(Feedforward Neural Network)

前馈神经网络由两个线性变换和一个非线性激活函数(通常是ReLU)组成。它对每个位置的表示进行非线性变换,以增强模型的表达能力。具体步骤如下:

  1. 第一层线性变换:将输入向量映射到一个更高维度的隐空间。
  2. 激活函数:应用ReLU激活函数,增加模型的非线性特性。
  3. 第二层线性变换:将激活后的向量映射回原始维度。

这种双层结构能够捕捉复杂的特征和模式,进一步提升模型的生成质量。

残差连接(Residual Connection)和层归一化(Layer Normalization)

为了缓解深层神经网络中常见的梯度消失和梯度爆炸问题,Transformer解码器引入了残差连接和层归一化技术。

  • 残差连接:在每个子层的输入和输出之间添加一个直接连接,使得输入能够跳跃式地传递到后面的层。这种连接方式不仅有助于梯度的反向传播,还能加快模型的收敛速度。
  • 层归一化:对每一层的输入进行归一化处理,使得输入在不同训练阶段保持稳定,有助于加速训练过程和提高模型的稳定性。

每个解码器层的输入是前一层的输出,经过自注意力机制、前馈神经网络、残差连接和层归一化的处理后,传递给下一层。通过多层堆叠,模型能够逐层提取和整合更加抽象和高层次的特征。

最终输出

在所有解码器层处理完毕后,模型的输出被传递到一个线性层,该层将高维表示映射到词汇表的维度。接着,通过Softmax函数计算每个单词的概率分布。这一步骤将解码器的输出转换为一个概率分布,用于预测下一个单词。整个生成过程是自回归的,即每次生成一个单词,然后将其作为输入,用于生成下一个单词。

2.2 自注意力机制详解

自注意力机制是Transformer中最关键的部分,它通过计算查询、键和值的点积来捕捉输入序列中的依赖关系。具体步骤如下:

  1. 查询、键和值的生成:输入序列通过线性变换生成查询(Q)、键(K)和值(V)矩阵。

    Q=XWQ​,K=XWK​,V=XWV​

  2. 计算注意力权重:通过点积计算查询和键的相似度,然后除以一个缩放因子(通常是键的维度的平方根),最后通过Softmax函数将相似度转换为概率分布。

  3. 加权求和:用注意力权重对值进行加权求和,得到每个位置的注意力表示。

2.3 多头注意力机制

为了捕捉输入序列中的多种关系,Transformer引入了多头注意力机制(Multi-Head Attention)。具体来说,将查询、键和值矩阵分成多个头,每个头独立地计算注意力,然后将各头的输出拼接起来,再通过线性变换得到最终的输出。

多头注意力机制的公式如下:

MultiHead(Q,K,V)=Concat(head1​,head2​,…,headh​)WO​

其中,每个头的计算方法为:

headi​=Attention(QWQi​​,KWKi​​,VWVi​​)

2.4 位置编码

Transformer没有循环结构,因此无法自然地捕捉序列中的位置信息。为了解决这个问题,Transformer引入了位置编码(Positional Encoding)。位置编码通过正弦和余弦函数生成,并加到输入序列的词嵌入中,使得模型能够区分序列中不同位置的单词。

位置编码的公式如下:

其中,pospospos表示位置,iii表示维度的索引,dmodeld_{model}dmodel​表示词嵌入的维度。

2.5 训练过程

ChatGPT的训练过程包括两个主要阶段:预训练和微调。

2.5.1 预训练

在预训练阶段,模型在大规模的无监督文本数据上进行训练。训练目标是最大化给定上下文条件下生成下一个单词的概率。具体来说,模型通过计算预测单词与真实单词之间的交叉熵损失来进行优化。

预训练的公式如下:

其中,xtx_txt​表示序列中的第ttt个单词,TTT表示序列的长度。

2.5.2 微调

在微调阶段,模型通过监督学习和强化学习在特定任务或领域的数据上进行进一步训练。监督学习使用标注数据进行训练,强化学习则通过与环境的交互,优化特定的奖励函数。

微调过程包括以下步骤:

  1. 监督学习微调:使用人工标注的数据进行监督学习,优化模型在特定任务上的性能。
  2. 强化学习微调:使用强化学习算法(如策略梯度)进行优化,通过与环境的交互,最大化奖励函数。

强化学习微调的公式如下:

其中,πθ​表示模型的策略,R(x)表示奖励函数。


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史 

相关文章:

【人工智能】第二部分:ChatGPT的架构设计和训练过程

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...

Informer

I n f o r m e r Informer Informer 摘要: 长序列时间序列的预测 i n f o r m e r informer informer优点: P r o b s p a r e Probspare Probspare自关注机制,在时间复杂度和内存使用方面达到 O ( N l o g N ) O(NlogN) O(NlogN),在序列依…...

12岁学什么编程机构好:深入剖析与全面指导

12岁学什么编程机构好:深入剖析与全面指导 在数字化时代,编程已成为一项必备技能。对于12岁的孩子来说,选择一个合适的编程机构至关重要。然而,市场上的编程机构众多,如何选择成为了一个难题。本文将从四个方面、五个…...

Day60 柱状图中最大的矩形

84 柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode) 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的…...

typescript --object对象类型

ts中的object const obj new Object()Object 这里的Object是Object类型,而不是JavaScript内置的Object构造函数。 这里的Object是一种类型,而Object()构造函数表示一个值。 Object()构造函数的ts代码 interface ObjectConstructor{readonly prototyp…...

如何使用python将多个EXCEL表进行合并

在Python中,你可以使用pandas库来轻松地将多个Excel表格合并。以下是一个基本的步骤指南和示例代码,说明如何合并多个Excel文件到一个单独的DataFrame中: 步骤 安装pandas和openpyxl(如果你正在处理.xlsx文件)。导入…...

【前端每日基础】day35——HTML5离线存储

HTML5引入了一些新的特性和API来增强Web应用的功能,其中之一就是离线存储。离线存储允许Web应用在没有网络连接的情况下仍能正常运行。以下是HTML5离线存储的主要技术和详细介绍: Web Storage (LocalStorage 和 SessionStorage) LocalStorage 概述&…...

动态规划算法:背包问题

背包问题概述 背包问题 (Knapsack problem) 是⼀种组合优化的 NP完全问题 。 问题可以描述为:给定⼀组物品,每种物品都有⾃⼰的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最⾼。 根据物品的个…...

新版idea配置git步骤及项目导入

目录 git安装 下载 打开git Bash 配置全局用户名及邮箱 查看已经配置的用户名和邮箱 在IDEA中设置Git 问题解决 项目导入 前言-与正文无关 ​ 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0…...

赶紧收藏!2024 年最常见 20道 Kafka面试题(一)

一、Kafka都有哪些特点? Kafka是一个分布式流处理平台,它被设计用于高吞吐量的数据管道和流处理。以下是Kafka的一些主要特点: 高吞吐量、低延迟:Kafka每秒可以处理数十万条消息,延迟可以低至几毫秒。这是通过优化数据…...

unsigned char*和const char*的一些问题

1.可以返回字符串常量,但是不能返回char buf[BUF_SIZE] char* get_str(){char* str "hello world";return str; }char* get_str(){char str[32] {0};strcpy(str, "hello world");return str; }//err 2.联合体不能用指针,也…...

前端知识1-4:性能优化进阶

性能优化进阶 Navigation Timing API navigationStart / end 表示从上一个文档卸载结束时 > 如果没有上一个文档,这个值和fetchStart相等 unloadEventStart / end 标识前一个网页unload的时间点 redirectStart / end 第一个http重定向发生和结束的时间 fetch…...

ios 新安装app收不到fcm推送

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…...

汽美汽修店管理系统会员小程序的作用是什么

汽车后市场汽美汽修赛道同样存在着大量商家,连锁品牌店或个人小店等,门店扎堆且区域覆盖面积广,当然每天车来车往也有不少生意。 随着线上化程度加深和商家不断拓展市场的需要,传统运营模式可能难以满足现状,尤其是年…...

远程自动锁定平面

目录 Ubuntu 系统上 方法一:使用 SSH 重新连接 方法二:解锁当前会话 方法三:通过 SSH 解锁会话 方法四:禁用自动锁屏(如果合适) windows系统 方法三:修改组策略设置 Ubuntu 系统上 远程…...

鸿蒙Ability Kit(程序框架服务)【UIAbility组件与UI的数据同步】

UIAbility组件与UI的数据同步 基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 [使用EventHub进行数据通信]:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前&am…...

一个完整的springboot项目,我们还需要做什么

文章目录 一 从0创建Srpingboot项目1.1 启动springboot项目1.2 导入必要的依赖 二、还缺什么2.1 统一异常捕获2.2 统一MVC返回2.3 数据分层2.4 连接数据库模块2.5 放置常量和工具类2.6 基础controller、基础entity、query查询类2.7 为了方便处理异常,一般还可以入参…...

QT-界面居中管理

问题:为什么不能对checkbox直接居中,LineEdit可以 复选框是一个固定大小的控件,不适合填满整个单元格,而相比之下QLineEdit是一个可变大小的控件 关于居中: lineEdit:lineEdit -> setAlignment(QT::Al…...

Python | MATLAB | R 心理认知数学图形模型推断

🎯要点 🎯图形模型推断二元过程概率:🖊模型1:确定成功率 θ 的后验分布 | 🖊模型2:确定两个概率差 δ \delta δ 的后验分布 | 🖊模型3:确定底层概率,后验预…...

Linux系统tab键无法补齐命令-已解决

在CentOS中,按下tab键就可以自动补全,但是在最小化安装时,没有安装自动补全的包,需要安装一个包才能解决 bash-completion 1.检查是否安装tab补齐软件包(如果是最小化安装,默认没有) rpm -q ba…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...