问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深入解析Transformer模型:架构与关键组件

创作时间:
作者:
@小白创作中心

深入解析Transformer模型:架构与关键组件

引用
CSDN
1.
https://blog.csdn.net/u014661768/article/details/145413393

Transformer是一种用于自然语言处理(NLP)和其他序列到序列(sequence-to-sequence)任务的深度学习模型架构,它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制(self-attention mechanism),彻底改变了序列数据处理的方式。本文将深入解析Transformer模型的各个关键组件及其工作原理。

详细过程

  1. Tokenization(文本分词)
  • 定义:将文本转换为Token(词元)的过程。
  • 子词分词:将单词拆分为更小的单元(子词),例如:
  • “subword” → “sub” + “word”
  • “encoded” → “encod” + “ed”
  • Token数量:以GPT为例,1000个Token约等于750个英文单词或500个汉字。不同模型对Token的处理方式不同,例如GLM在处理中文时比GPT更节省Token。
  • Token词表:包含所有可能的Token,例如GPT-3的词表有50257个Token,GPT-4有100256个,Llama 3有128000个。Token词表越大,模型对多语言的适应能力越强。
  • Tokenization示例:以“海南麒麟瓜”为例,经过Tiktoken处理后得到11个Token。每个汉字的UTF-8编码与Token之间存在对应关系,但并非简单的偏旁部首拆分。不同的分词工具(如Tiktoken、GLM)处理方式不同。
  • Tokenization的优势:减少词表数量,提高计算效率。例如,使用Token表示汉字可以有效减少词表规模。
  1. Embedding(词向量嵌入)
  • 定义:将Token转换为向量,以便在数学空间中进行处理。
  • 向量维度演进
    模型
    维度
    特性
    经典Transformer
    512
    基础语义表示
    GPT-3
    12,288
    复杂关系建模
    Llama3
    16,384
    多模态扩展能力
  • 与传统方法对比
    维度
    One-hot编码
    Embedding
    存储效率
    5000词需5000维
    统一压缩为固定维度
    语义表达
    无法体现词间关系
    “国王-男+女≈女王”
    计算复杂度
    O(n)线性增长
    O(1)常量级映射
  • 相似度计算方法
  • 欧式距离:空间两点之间的直线距离。
  • 余弦相似度:两向量之间夹角的余弦值,夹角越小,相似度越高。
  • Embedding的稀疏性:高维向量空间中大部分坐标点为空,仅少量点对应实际Token。这种稀疏性为后续处理提供了空间。
  1. Positional Encoding(位置编码)
  • 定义:在向量中加入位置信息,以保留词序信息。
  • 必要性:Transformer模型并行处理输入序列,忽略词序信息。加入位置编码可以弥补这一缺陷,确保模型理解词序对语义的影响。
  • 实现方式:位置编码可以是固定的,也可以是可训练的。GPT模型中,位置编码是可训练的,使用了大量参数来拟合位置信息。
  1. Encoder & Decoder(编码器与解码器)
  • 整体结构
  • 编码器:处理输入序列,输出包含语义信息的向量。
  • 信息聚合:从任意一个Token出发,聚合与其相关的语义信息。
  • 多头自注意力机制:从不同角度进行信息聚合。
  • 多层结构:重复进行信息聚合,GPT-3为96层。
  • 最终输出:n个向量,每个向量都代表整个输入序列的语义信息,但侧重点不同。
  • 解码器:基于编码器输出和已生成的文本,生成下一个Token。
  • 自回归生成:从已生成的文本出发,逐个生成下一个Token。
  • 多层结构:与编码器类似,也进行多层信息聚合。
  • 带掩码的多头自注意力机制:防止模型“看到”未来的Token,确保生成过程符合逻辑。
  • 信息融合:将编码器输出和已生成的文本信息进行融合。
    1. 编码器输出(代表输入序列的语义信息)。
    2. 已生成的文本(作为上下文信息)。

4.1.注意力机制(Attention Mechanism)

  • 定义:注意力机制通过计算不同信息之间的相关度系数,将注意力集中在重要的信息上。
  • QKV
  • Q (Query):查询词,用于寻找相关信息。
  • K (Key):键,用于匹配查询词。
  • V (Value):值,包含实际的信息内容。
  • 工作原理
    1. 计算Q与K的相关度系数。
    2. 对V进行加权求和,权重由相关度系数决定。
    3. 最终输出是V的加权求和结果。

自注意力机制(Self-Attention)

  • 定义:将QKV都设置为相同的输入数据,目的是进行信息聚合。
  • 工作原理
    1. 以每个token为中心,计算与其他token的相关度系数。
    2. 对V进行加权求和,将相关信息聚合到每个token上。
  • 结果:每个token的向量都包含了来自其他token的信息,实现了信息聚合。

多头自注意力机制(Multi-Head Self-Attention)

  • 问题:自注意力机制在处理复杂语义时可能存在局限性,例如无法有效捕捉不同角度的语义关系。
  • 解决方案
  • 多头:引入多组QKV,从不同角度进行特征提取和信息聚合。
  • 工作原理
    1. 将输入数据通过不同的线性变换(WQ, WK, WV)得到多组QKV。
    2. 对每组QKV进行自注意力计算,得到多组输出。
    3. 将多组输出进行拼接,并通过一个线性变换(WO)进行融合,得到最终输出。
  • 优势:能够从多个角度捕捉语义信息,提高模型对复杂语义的理解能力。类似于将一种语言翻译成多种语言,从不同角度解读信息。

带掩码的自注意力机制(Masked Multi-Head Self-Attention)

  • 定义:在多头自注意力机制的基础上,引入掩码机制,限制信息聚合的范围。
  • 工作原理:在预测下一个token时,遮蔽掉未来token的信息,避免模型“看到”答案。类似于在考试中遮住答案,只允许模型基于已有信息进行推理。
  • 目的:防止模型在训练过程中“作弊”,确保其能够真正理解语义并生成合理的输出。

4.2.前馈神经网络(Feed Forward Neural Network)

  • 定义:在多头自注意力机制之后,加入一个前馈神经网络,用于进一步处理信息。
  • 结构
  • 输入层:12288维向量(GPT-3)
  • 隐藏层:4倍于输入层的维度(49152维)。
  • 输出层:与输入层维度相同的向量(12288维)。
  • 作用:对输入数据进行非线性变换,放大或缩小某些特征。类似于对信息进行“放大镜”处理,突出重要信息,弱化次要信息。

4.3.编码器与解码器的区别

  • 编码器
  • 保留所有信息,适用于需要处理整个输入序列的场景。
  • 结构相对简单,只有多头自注意力机制和前馈神经网络。
  • 解码器
  • 适用于生成任务,例如文本生成。
  • 结构更复杂,包含带掩码的多头自注意力机制、多头自注意力机制和前馈神经网络。
  • 特点:
  • 只能看到前面的信息,无法看到未来的信息。
  • 更适合处理顺序依赖关系。
  • Decoder Only架构:最新的大语言模型(如GPT)采用Decoder Only架构,即只使用解码器。
  • 原因
  • 解码器具备理解复杂语义的能力,可以替代编码器。
  • 简化模型结构,提高计算效率。
  • Prompt与Response:将用户输入(Prompt)和模型输出(Response)合并为一个序列,中间使用特殊Token分隔。模型基于整个序列预测下一个Token,实现自回归生成。

5. Linear & Softmax(线性层与归一化)

  • 线性层:将解码器输出的向量转换为与Token词表大小相同的向量。作用:计算每个Token作为下一个Token的相关度。实现:使用与Embedding矩阵相同的矩阵(参数共享),进行矩阵乘法。
  • Softmax:将相关度转换为概率分布。作用:确保所有概率之和为1,且每个概率都在0到1之间。

6. 模型训练与推理

  • 训练阶段

  • 目标:最小化总误差(损失函数)。

  • 方法

  • 计算模型输出与真实标签之间的误差。

  • 反向传播算法更新模型参数。

    阶段
    损失函数
    总误差计算
    预训练
    段落联合概率
    基于段落联合概率计算误差
    SFT微调
    序列交叉熵
    基于问答对计算误差
    强化学习
    奖励模型反馈
    基于奖励模型计算误差
  • 推理阶段

  • 目标:生成文本。

  • 方法:基于已生成的文本,逐个生成下一个Token。

    1. 输入: "中秋节应该吃什么?"
    2. Tokenization → 生成输入序列
    3. 逐层编码 → 获得语义表示
    4. 自回归解码:
    
  • 已生成: "中秋节传统美食包括"

  • 预测下一个Token概率分布

  • 选择最高概率Token"月饼"

    1. 重复直至生成终止符
    
    

相关问题

  • Q:位置编码是否可训练?
  • GPT系列采用可训练位置参数,随模型共同优化
  • 经典Transformer使用固定正弦编码
  • Q:Embedding如何存储知识?
  • 语义关系编码在高维向量空间几何结构中
  • 参数矩阵记录Token间的分布式表示
  • Q:为什么现代模型倾向Decoder-Only?
  • 简化架构提升训练效率
  • 掩码自注意力足以捕获双向上下文
  • 统一处理Prompt与Response序列
  • Q:为什么Transformer 替代了循环神经网络(RNN)
  • RNN: 早期用于处理序列数据的模型,通过逐字阅读来模拟人类阅读方式。
  • 问题
    1. 信息丢失: 使用固定长度的向量存储信息,导致长文本信息丢失。
    2. 无法处理长句子: 难以有效处理长距离依赖关系。
    3. 无法并行计算: 只能按顺序处理,无法利用现代硬件的并行计算能力。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号