Datawhale大语言模型-Transformer以及模型详细配置

Datawhale大语言模型-Transformer以及模型详细配置

Transformer模型

当前主流的大语言模型都基于 Transformer 模型进行设计的。Transformer 是由多层的多头自注意力(Multi-head Self-attention 模块堆叠而成的神经网络模型。原始的 Transformer 模型由编码器和解码器两个部分构成,而这两个部分实际上可以独立使用,例如基于编码器架构的 BERT 模型 [13] 和解码器架构的 GPT 模型 [14]。

与 BERT 等早期的预训练语言模型相比,大语言模型的特点是使用了更长的向量维度、更深的层数,进而包含了更大规模的模型参数,并主要使用解码器架构,对于 Transformer 本身的结构与配置改变并不大。

下面对Transformer的每一个模块进行介绍

位置编码

  • 可以通过训练学校得到,也可以事先指定
  • 在输入词嵌入当中引入位置编码,将绝对或者相对位置信息注入

前馈层网络

  • 用于学习复杂的函数关系和特征
    F F N ( X ) = σ ( X W U + b 1 ) W D + b 2 FFN(X)=\sigma(XW^U+b_1)W^D+b_2 FFN(X)=σ(XWU+b1)WD+b2

注意力机制

一种基于相似度的查表

  • 计算query与key的相似度
    e i j = q i T k j e_{ij}=q_i^Tk_j eij=qiTkj
  • 相似度规范化
    α i j = e x p ( e i j ) ∑ j ′ e x p ( e i j ′ ) \alpha_{ij}=\frac{exp(e_{ij})}{\sum_{j'}exp(e_{ij'})} αij=∑j′exp(eij′)exp(eij)
  • 对value进行加权求和
    o i = ∑ j α i j v i o_i=\sum_{j}\alpha_{ij}v_i oi=j∑αijvi

多头自注意力

该部分属于是Transformer当中的核心创新技术

  • 多头自注意力机制能够直接建模任意距离的词元之间的交互关


    多头自注意力机制通常由多个自注意力模块组成。在每个自注意力模块中,对于输入的词元序列,将其映射为相应的查询(Query, 𝑸)、键(Key, 𝑲)和值(Value,𝑽)三个矩阵。然后,对于每个查询,将和所有没有被掩盖的键之间计算点积。这些点积值进一步除以 D \sqrt D D 进行缩放(𝐷 是键对应的向量维度),被传入到 softmax函数中用于权重的计算 。进一步,这些权重将作用于与键相关联的值,通过加权和的形式计算得到最终的输出。在数学上,上述过程可以表示为:
    Q = X W Q K = X W K V = X W V A t t e n s t i o n ( Q , K , V ) = s o f t m a x ( Q K T D ) V Q=XW^Q\\ K=XW^K\\ V=XW^V\\ Attenstion(Q,K,V)=softmax(\frac{QK^T}{\sqrt D})V Q=XWQK=XWKV=XWVAttenstion(Q,K,V)=softmax(D QKT)V
    与单头注意力相比,多头注意力机制的主要区别在于它使用了 𝐻 组结构相同但映射参数不同的自注意力模块。输入序列首先通过不同的权重矩阵被映射为一组查询、键和值。每组查询、键和值的映射构成一个"头",并独立地计算自注意力的输出。这使得自注意力的计算可以更好的基于硬件去进行优化,这也是其成为主流的大语言模型的方法之一

编码器

将输入变换为隐藏层的特征

  • 将每个输入词元都编码成一个上下文语义相关的表示向量
  • 编码器结构由多个相同的层堆叠 而成,其中每一层都包含多头自注意力模块前馈网络模块
    X l ′ = LayerNorm ⁡ ( MHA ⁡ ( X l − 1 ) + X l − 1 ) , X l = LayerNorm ⁡ ( FFN ⁡ ( X l ′ ) + X l ′ ) , \begin{array}{l} \boldsymbol{X}{l}^{\prime}=\operatorname{LayerNorm}\left(\operatorname{MHA}\left(\boldsymbol{X}{l-1}\right)+\boldsymbol{X}{l-1}\right), \\ \boldsymbol{X}{l}=\operatorname{LayerNorm}\left(\operatorname{FFN}\left(\boldsymbol{X}{l}^{\prime}\right)+\boldsymbol{X}{l}^{\prime}\right), \end{array} Xl′=LayerNorm(MHA(Xl−1)+Xl−1),Xl=LayerNorm(FFN(Xl′)+Xl′),

解码器

将隐藏层的特征变换为自然语言序列

与编码器不同,解码器需要引入掩码自注意力(Masked Self-attention)模块 ,用来在计算注意力分数的时候掩盖当前位置之后的词,以保证生成目标序列时不依赖于未来的信息

在训练过程中,解码器可以通过一次前向传播,让每个词元的输出用于预测下一个词元

Y l ′ = LayerNorm ⁡ ( MaskedMHA ⁡ ( Y l − 1 ) + Y l − 1 ) , Y l ′ ′ = LayerNorm ⁡ ( CrossMHA ⁡ ( Y l ′ , X L ) + Y l ′ ) , Y l = LayerNorm ⁡ ( FFN ⁡ ( Y l ′ ′ ) + Y l ′ ′ ) , \begin{aligned} \boldsymbol{Y}{l}^{\prime} & =\operatorname{LayerNorm}\left(\operatorname{MaskedMHA}\left(\boldsymbol{Y}{l-1}\right)+\boldsymbol{Y}{l-1}\right), \\ \boldsymbol{Y}{l}^{\prime \prime} & =\operatorname{LayerNorm}\left(\operatorname{CrossMHA}\left(\boldsymbol{Y}{l}^{\prime}, \boldsymbol{X}{L}\right)+\boldsymbol{Y}{l}^{\prime}\right), \\ \boldsymbol{Y}{l} & =\operatorname{LayerNorm}\left(\operatorname{FFN}\left(\boldsymbol{Y}{l}^{\prime \prime}\right)+\boldsymbol{Y}{l}^{\prime \prime}\right), \end{aligned} Yl′Yl′′Yl=LayerNorm(MaskedMHA(Yl−1)+Yl−1),=LayerNorm(CrossMHA(Yl′,XL)+Yl′),=LayerNorm(FFN(Yl′′)+Yl′′),

大语言模型的参数配置

考虑因素如下

  • 归一化方法
  • 位置编码
  • 激活函数
  • 注意力计算

归一化

为了应对训练过程当中不稳定这一问题,深度学习方法通常会采用特定的归一化策略来加强神经网络训练过程的稳定性。

激活函数

前馈网络中激活函数的选择对于大语言模型的表现至关重要。通常来说,激活函数主要是为神经网络中引入非线性变化,从而提升神经网络的模型能力

位置编码

由于 Transformer 模型中自注意力模块具有置换不变性,因此仅使用注意力机制无法捕捉序列中的顺序关系 ,从而退化为"词袋模型"。为了解决这一问题,需要引入位置编码(Position Embedding, PE)对于序列信息进行精确建模,从而将绝对或相对位置信息整合到模型中。

旋转位置编码

使用了基于绝对位置信息的旋转矩阵来表示注意力中的相对位置信息

为序列中每个绝对位置设置了特定的旋转矩阵 R θ , t R_{\theta,t} Rθ,t(位置索引为t)

代码内容实现

注意力机制

参考资料

DataWhale组队学习资料:https://www.datawhale.cn/learn/content/107/3295

Transformer动画演示:https://www.bilibili.com/video/BV1vN9gYZEj8/?spm_id_from=333.1387.favlist.content.click&vd_source=5a776c1236491cc434fff497ee1d79a5

相关推荐
大腾智能25 分钟前
大腾智能受邀出席2025华为云城市峰会暨东莞市人工智能大模型中心开服活动
人工智能·中小企业数字化·工业软件·工业数字化
白雪讲堂27 分钟前
GEO与AISEO全面解析
人工智能
大数据追光猿1 小时前
【大模型面试知识】基础问题分析&总结
数据库·人工智能·深度学习·语言模型·ai编程
噔噔噔噔@1 小时前
举例说明自然语言处理(NLP)技术
人工智能·自然语言处理
HABuo1 小时前
【YOLOv8】YOLOv8改进系列(9)----替换主干网络之RepViT
人工智能·深度学习·yolo·目标检测·计算机视觉
Blossom.1181 小时前
区块链技术在供应链管理中的应用与创新
人工智能·阿里云·区块链·人机交互·智能合约·数据可视化·信任链
豆芽8191 小时前
深度学习与计算机视觉方向
人工智能·python·深度学习·opencv·机器学习·计算机视觉
IT古董2 小时前
【漫话机器学习系列】152.ReLU激活函数(ReLU Activation Function)
人工智能·深度学习·机器学习
挣扎与觉醒中的技术人2 小时前
【硬核实战】ETCD+AI智能调度深度整合!从架构设计到调优避坑,手把手教你打造高可用调度系统!
大数据·人工智能·etcd
ZHOU_WUYI2 小时前
无需归一化的Transformers:神经网络设计的突破
人工智能·深度学习·神经网络