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

深入解析 Transformer 模型:以 ChatGPT 为例从词嵌入到输出预测的大语言模型核心工作机制

概述

本文以通俗易懂的方式系统阐释大型语言模型(Large Language Models, LMs)的核心原理。ChatGPT、DeepSeek等主流大语言模型均基于Transformer(变换器)神经网络架构构建,其核心能力在于理解文本中词语的上下文关联并预测序列中的后续词语。这种逐词生成机制使得大语言模型能够构建连贯的回复内容——例如对输入"谢谢你"生成"不客气"的过程中,模型会依次预测"不"、“客”、"气"三个字符。本文将系统解析这一复杂神经网络的工作机制。

Transformer的预测逻辑

Transformer模型由编码器(Encoder)与解码器(Decoder)两个核心组件构成:

  • 编码器:负责处理并编码输入序列,提取文本特征与上下文信息
  • 解码器:基于编码器输出与已生成序列,解码并预测后续词语

在训练阶段,模型同时接收输入序列与目标输出序列以学习映射关系。以英日翻译任务为例,英语句子(如"Thank you")输入编码器,对应的日语翻译(如"Arigato")输入解码器,通过迭代优化使模型掌握从输入到输出的转换规则。这类似于人类学习外语的过程——通过对照中英文例句,逐渐掌握翻译规律。

核心处理步骤

Transformer的编码与解码过程遵循相似的基础流程,解码器在其基础上增加了特殊机制。通用处理步骤包括:

  1. 词嵌入(Word Embedding):将句子中的每个单词转换为实数向量表示
  2. 位置编码(Positional Encoding):通过数学函数生成位置信息,解决词序丢失问题
  3. 自注意力机制(Self-Attention):计算句子内部词语间的关联强度,捕捉上下文信息
  4. 残差连接(Residual Connection):将前序计算结果与原始输入相加,缓解信息丢失
  5. 层归一化(Layer Normalization):对数据分布进行标准化,加速模型收敛
  6. 前馈网络(Feed-Forward Network):通过非线性变换增强模型表达能力

注:上述步骤同时适用于编码器与解码器,但解码器包含更多特殊层与机制,具体差异将在后续章节详述。

解码器的特殊步骤

  1. 编码器-解码器注意力(Encoder-Decoder Attention):计算输入序列与输出序列间的词语关联,建立跨序列上下文理解
  2. 掩码机制(Masking):在训练阶段屏蔽未来位置信息,防止模型"窥探"后续词语
  3. SoftMax激活:将最终输出转换为词汇表上的概率分布,选择概率最高的词语作为预测结果

重要说明:

  • 每个主要处理步骤(自注意力、编码器-解码器注意力、前馈网络)后均需执行残差连接与层归一化
  • 本解析基于《Attention is All You Need》论文框架,但简化了部分实现细节
  • ChatGPT采用仅解码器(Decoder-only)架构,但其核心原理仍遵循Transformer基本框架

编码器部分

编码器是输入序列的处理模块。当用户输入"你好"时,该序列会被送入编码器进行处理;在训练阶段,预期响应(如"您好,有什么可以帮您?")则会被送入解码器。所有输入序列均被特殊标记包围:

  • <SOS>(Start of Sequence):标记序列起始
  • <EOS>(End of Sequence):标记序列结束

这些标记为模型提供了明确的序列边界信息,避免了使用句号等标点符号可能导致的歧义(因段落中可能包含多个句子)。

编码器处理流程

1. 词嵌入

词嵌入是将离散词汇转换为连续向量的过程,使计算机能够处理文本信息。其核心原理是:

  • 每个词汇通过独热编码(One-hot Vector)表示,如"Thank"可表示为[1,0,0,0]
  • 通过矩阵乘法将独热向量映射到固定维度的实值空间(如4维、512维等)
  • 向量维度取决于模型复杂度,维度越高理论上可表达的语义信息越丰富

示例:

  • "Hi"的4维词嵌入可能为[0.1, 3.2, -1.7, 2.1]
  • "there"的4维词嵌入可能为[0.9, -3.2, 1.8, 0.4]

词嵌入的计算过程本质是神经网络的矩阵运算:

  • 输入层为词汇表大小的独热向量
  • 隐藏层为词嵌入维度的实值向量
  • 权重矩阵通过训练不断优化,最终使语义相近的词汇在向量空间中距离更近

上图展示了计算"感谢"一词词嵌入值的神经网络示意图。代表"感谢"的神经元被赋予值1,其他神经元为0,通过与权重矩阵[1.2, 2.9]相乘得到词嵌入结果。

独热向量与权重矩阵的乘法示例:

  • 独热向量:[1, 0, 0, 0](“Thank”)、[0, 0, 1, 0](“you”)、[0, 0, 0, 1](“”)
  • 权重矩阵:
    [1.2, 2.9]
    [0.7, -0.3]
    [1.3, 0.8]
    [0.3, 0.9]
    



2. 位置编码

为解决Transformer并行处理导致的词序信息丢失问题,引入位置编码机制。其核心是通过正弦和余弦函数生成位置向量:

  • 偶数维度:PE(pos,2i)=sin⁡(pos/100002i/dmodel)PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}})PE(pos,2i)=sin(pos/100002i/dmodel)
  • 奇数维度:PE(pos,2i+1)=cos⁡(pos/100002i/dmodel)PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}})PE(pos,2i+1)=cos(pos/100002i/dmodel)

位置向量与词嵌入向量相加后,形成包含位置信息的特征表示,使模型能够区分词序不同但词汇相同的句子(如"蝙蝠吃了猫"与"猫吃了蝙蝠")。

上图展示了位置编码的计算过程:黄色方框中的正弦和余弦波点与词嵌入值相加,生成包含位置信息的特征向量。

3. 自注意力机制

自注意力机制是Transformer的核心创新,用于计算句子内部词语间的关联强度,其工作流程如下:

步骤i:生成查询、键、值向量
通过线性变换从位置编码后的向量生成三组向量:

  • 查询向量(Query, Q):表示当前词的查询需求
  • 键向量(Key, K):表示其他词的特征标识
  • 值向量(Value, V):表示其他词的特征值

计算公式:
Q=XWQQ = XW_QQ=XWQ, K=XWKK = XW_KK=XWK, V=XWVV = XW_VV=XWV
其中WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV为可学习的权重矩阵。

示例:

  • "Thank"的Q向量为[4.47, 2.28],K向量为[9.54, 8.22],V向量为[2.1, 6.3]
  • "you"的K向量为[5.64, 5.72],V向量为[2.36, 4.8]

步骤ii:计算相似度分数
通过点积计算Q与K的相似度:

  • "Thank"与自身的相似度:(4.47×9.54)+(2.28×8.22)=61.3(4.47 × 9.54) + (2.28 × 8.22) = 61.3(4.47×9.54)+(2.28×8.22)=61.3
  • "Thank"与"you"的相似度:(4.47×5.64)+(2.28×5.72)=38.2(4.47 × 5.64) + (2.28 × 5.72) = 38.2(4.47×5.64)+(2.28×5.72)=38.2

步骤iii:SoftMax归一化
将相似度分数通过SoftMax函数转换为概率分布:

  • 功能:使分数总和为1,形成注意力权重
  • 示例:61.3和38.2经SoftMax处理后可能成为0.62和0.38(实际计算中可能更接近1和0)

步骤iv:计算自注意力分数
将SoftMax权重与V向量相乘并累加:

  • "Thank"的自注意力分数:(2.1×1)+(6.3×1)+(2.36×0)+(4.8×0)=[2.1,6.3](2.1 × 1) + (6.3 × 1) + (2.36 × 0) + (4.8 × 0) = [2.1, 6.3](2.1×1)+(6.3×1)+(2.36×0)+(4.8×0)=[2.1,6.3]

步骤v:矩阵运算演示
实际计算中,自注意力通过矩阵运算高效实现:

  1. Q、K、V矩阵生成:

    # "Thank"的Q向量计算示例
    (1.2 × 3.4) + (3.9 × 0.1) = 4.47
    (1.2 × 0.6) + (3.9 × 0.4) = 2.28
    

  2. 矩阵转置与乘法:

    • 为满足矩阵乘法条件(前矩阵列数=后矩阵行数),需对K矩阵进行转置
    • 转置后K矩阵形状从[3,2]变为[2,3]

  3. 缩放点积注意力:
    根据《Attention is All You Need》论文公式:
    Attention(Q,K,V)=SoftMax(QKTdk)V\text{Attention}(Q,K,V) = \text{SoftMax}\left(\frac{QK^T}{\sqrt{d_k}}\right)VAttention(Q,K,V)=SoftMax(dkQKT)V
    其中dkd_kdk为K向量维度(本例中为2),缩放操作可防止梯度消失。


  4. 最终自注意力计算:
    将SoftMax权重与V矩阵相乘,得到每个单词的自注意力分数。

4. 残差连接与层归一化

自注意力计算完成后,执行:

  1. 残差连接:将自注意力分数与位置编码值相加
    Output=Attention(X)+X\text{Output} = \text{Attention}(X) + XOutput=Attention(X)+X
  2. 层归一化:对结果进行标准化处理,稳定训练过程

下图为编码器全过程示意图:

  • 红色:"Thank"的输入标记
  • 青色:"you"的输入标记
  • 绿色:的输入标记
  • 黄色:正弦和余弦波位置编码
  • 粉色:缩放点积相似度与SoftMax计算
  • 黑色:自注意力分数与残差连接结果

重要说明:主流大语言模型(如ChatGPT)通常包含多个自注意力层(如8层),每层拥有独立的Q、K、V权重矩阵,以捕捉不同维度的上下文信息。

解码器部分

解码器负责处理输出序列并预测下一个词语,其流程与编码器类似但包含特殊机制。在训练阶段,解码器接收预期输出序列(如"Arigato");在推理阶段,仅输入<SOS>标记,模型需自主生成完整序列。

解码器处理流程

1. 词嵌入与位置编码

与编码器流程相同:

  • 将输出序列中的每个单词转换为词嵌入向量
  • 加入位置编码以保留词序信息


在这里插入图片描述

2. 掩码自注意力

解码器的自注意力机制增加了掩码(Masking)操作:

  • 在训练阶段,对未来位置的注意力分数设置为−∞-\infty
  • 确保预测第i个词时仅依赖前i-1个词的信息,防止"作弊"

步骤:

  1. 生成Q、K、V向量

  2. 计算未缩放点积相似度

  3. 应用掩码并缩放:

    • 对与"Arigato"的相似度分数(25.1)施加掩码(设为−∞-\infty
    • 除以K向量维度的平方根(2\sqrt{2}2

  4. 计算SoftMax与自注意力分数

  5. 残差连接:将自注意力分数与位置编码值相加

在这里插入图片描述

解码器全过程示意图:

  • 紫色:标记
  • 红色:"Arigato"标记
  • 黄色:正弦和余弦波位置编码
  • 粉色:Q、K、V计算与相似度分数
  • 黑色:自注意力分数与残差连接结果

3. 编码器-解码器注意力

该机制用于建立输入序列与输出序列间的关联:

  • Q向量来自解码器输出
  • K和V向量来自编码器输出

步骤:

  1. 生成跨序列的Q、K、V向量

  2. 计算缩放点积相似度:

    • Q(解码器)与K(编码器转置)相乘
    • 除以K向量维度的平方根

  3. 计算SoftMax与注意力分数:

    • 的编码器-解码器注意力分数为[13.87, 0.72]
    • "Arigato"的编码器-解码器注意力分数为[16.2, 0.78]

  4. 残差连接:将编码器-解码器注意力分数与解码器输出相加

    • 的最终输出:[2.57, 5.49]
    • "Arigato"的最终输出:[9.5, 0.38]

编码器-解码器注意力全过程示意图:

4. 最终预测

通过前馈网络与SoftMax函数生成预测结果:

  1. 将残差连接后的输出送入前馈网络
  2. 输出层神经元数量与词汇表大小匹配
  3. 加入偏置项并通过SoftMax函数获得概率分布
  4. 选择概率最高的词语作为预测结果

模型通过预测<EOS>标记判断序列结束:

解码器预测流程示意图:

训练机制

训练过程通过以下步骤优化模型参数:

  1. 输入序列与目标序列分别送入编码器与解码器
  2. 计算预测序列与目标序列的交叉熵损失
  3. 通过反向传播调整所有可学习参数(嵌入矩阵、注意力权重等)
  4. 迭代优化直至损失收敛

当预测结果与目标不符时,模型会调整所有权重以提高下次预测的准确性。

总结

Transformer架构通过以下机制实现了对文本的深度理解与生成:

编码器流程:

  1. 词嵌入:将词汇转换为向量表示
  2. 位置编码:通过正弦/余弦函数加入词序信息
  3. 自注意力:计算词语间关联,捕捉上下文
  4. 残差连接与归一化:增强信息流动,稳定训练
  5. 输出编码后的上下文特征

解码器流程:

  1. 词嵌入与位置编码:同编码器
  2. 掩码自注意力:计算输出序列内部关联,屏蔽未来信息
  3. 编码器-解码器注意力:建立输入与输出的关联
  4. 前馈网络与SoftMax:生成下一个词语的概率分布
  5. 迭代预测:直至生成<EOS>标记

现代大语言模型如ChatGPT虽采用仅解码器架构,但其核心原理仍遵循上述Transformer框架,通过海量数据训练与超大规模参数配置,实现了强大的自然语言处理能力。

http://www.dtcms.com/a/523658.html

相关文章:

  • 破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
  • 云手机是一种应用软件吗?
  • 工业无线通信突破!SG-Lora-TCP 模块,7 公里无线替代 TCP 布线
  • 网站建设 服务内容 费用上海有几个区最好
  • 现代前端状态管理深度剖析:从单一数据源到分布式状态
  • UART 串口协议详解与 STM32 实战实现
  • 【CMakeLists.txt】QtSvg 头文件包含配置详解
  • 调用Zlib库接口压缩、解压缩(C++源码)
  • flume的log4j日志无输出排查
  • 一个域名可以做两个网站吗天津人事考试网
  • whisper 模型处理音频办法与启示
  • linux rt任务调度器
  • 金融智能体技术解读:十大应用场景与AI Agent架构设计思路
  • 永磁同步电机(PMSM)在MATLAB中的高级调参策略与实践
  • 李宏毅机器学习笔记31
  • 【timecode】两种不同的时间码格式:“`00:00:00`” 和 “`00:00:00:00`”
  • 个人网站 不用备案深圳建设网站和公众号
  • npm 安装 canvas 报错 node-gyp ERR! 的解决方法(Windows 系统)
  • 编辑器汇总:Neovim、Helix、Vim、LazyVim、Kakoune、nb、Lite XL
  • 如何开发一个自己的包并发布到npm
  • 商城型网站的概念企业信息平台登录
  • Docker MySQL 单主从及分表函数
  • UE5 蓝图-11:本汽车蓝图的事件图表,汽车拆分事件,染色事件(绿蓝黄青)。
  • CDC 实时数据同步与小时级统计方案(Flink 1.13.5 + MySQL 8.0)
  • Redis之String 类型入门与实战,由基础语法快速掌握再到缓存加速/验证码防刷/计数统计场景应用
  • 【Qt | .pro文件】Qt项目文件详解:pro文件与pri文件
  • SpringAI2-Spring AI-聊天模型:ChatClient,流式编程,ChatModel
  • [MySQL] 事务和视图
  • 建设网站的特色wordpress域名网站搬家
  • 记录画图笔记