首页 > 其他分享 >概念

概念

时间:2024-11-08 11:08:45浏览次数:1  
标签:begin Attention end boldsymbol Transformer 概念 bmatrix

概念

Transformer

  • Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer。
  • Transformer 模型使用了注意力机制(attention mechanisms),不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息
  • Transformer 使用的是Encoder + Decoder的结构

Transformer 整体结构

  • 添加了补充信息(手动修改版):
    Img

Transformer的编码器(Encode Block):

  • 组成:由Multi-Head Attention,Add & Norm,Feed Forward 组成
  • 作用:通过多头注意力机制、带有残差连接、层归一化、逐位置前馈网络,将输入的Embedding丰富化,形成更丰富的输入特征

softmax函数:

  • 作用:将一组输入通过函数的方式,预测每个输出的可能概率,这个转换函数即softmax函数
  • 公式:
    $$
    \sigma(z)j=\frac{e^{z_j}}{\sum{n}e{z_i}} \
    z=[z_1,z_2,...,z_n] \
    z:\text{输入向量},n:\text{向量的维度},\sigma(z)_j:\text{输出向量中,第j个元素的概率}
    $$

点积操作(余弦法):

  • 作用:计算相似度。如果两个向量的点积接近于0,它们被认为是正交的,即不相似;如果点积的绝对值很大,它们被认为是相似的
  • 公式:
    $$
    \begin{aligned}
    a &= [ a_1, a_2, \dots, a_n] \
    b &= [ b_1, b_2, \dots, b_n] \
    \
    a \cdot b & = [a_1 b_1 + a_2 b_2 + \dots + a_n b_n] \
    &= \sum\limits_{i=1}^n a_i b_i
    a \cdot b = |a| |b| \cos \theta
    \end{aligned}
    $$
    Img

Transformer的输入:

单词的表示向量x:

  • 公式: x = 单词 Embedding + 位置 Embedding
    Img

单词 Embedding:

  • 含义:
    • 逻辑上解释,词向量(Embedding)是从不同的语义角度(多维)解释单词。换个说法就是词向量表示单词的多维特征值。
    • 数学上解释为,将词汇映射到多维空间中的向量表示。
  • 预训练获取:
    • Word2Vec
    • Glove
    • Transformer

位置 Encoding(Position Encoding):

  • 表示单词出现在句子中的位置(因为 Transformer 不采用 RNN 的结构,而是使用全局信息,这样就不能利用单词的顺序信息)
  • 位置Encoding与单词Embedding具有相同的维度$d_{model}$
  • 位置PE的计算:
    $$
    \begin{aligned}
    PE_{(pos,2i)} &=\sin(pos/10000^{2i/d_{model}})\
    PE_{(pos,2i + 1)} &=\cos(pos/10000^{2i/d_{model}}) \
    \text{pos}:\text{单词位置}, \text{i}:\text{维度}
    \end{aligned}
    $$

Transformer的注意力机制:

  • 注意力函数可以描述为将一个查询$Q$和一组键值对$KV$映射到一个输出,其中查询$Q$、键$K$、值$V$和输出$Attention(Q,K,V)$都是向量。
  • 输出$Attention(Q,K,V)$是值的加权和,其中分配给每个值的权重是由查询与相应键的相容函数计算得出的
  • QKV的计算:
  • 假设我们有一个模型,将英语句子$X$翻译成法语句子$Y$
    • $X$的第一个词向量一般是$BOS$/$SOS$标记,该模型需要从输入句子 $X$ 中为输出句子 $Y$ 中的第一个词向量 $y1$ 提取上下文
      $$
      X = \begin{bmatrix}
      \boldsymbol{x}_1 \
      \boldsymbol{x}_2 \
      \vdots \
      \boldsymbol{x}_m
      \end{bmatrix} \
      Y = \begin{bmatrix}
      \boldsymbol{y}_1 \
      \boldsymbol{y}_2 \
      \vdots \
      \boldsymbol{y}_m
      \end{bmatrix}
      $$
    • 对于$Q$:
      • 假设:$y_1$是输出句子$Y$的第一个元素,本身是四个维度的向量Img
      • 假设:$Q$的权重矩阵为$W^Q$,Img
      • 对$y_1$进行$W^Q$点积计算$q_1 = y_1 \cdot W^Q$,计算$y_1$在注意力计算中的查询需求:Img
      • 对于其他q值
        $$ Q = \begin{bmatrix}
        \boldsymbol{q}_1 \
        \boldsymbol{q}_2 \
        \vdots \
        \boldsymbol{q}_n \
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{y}_1 W^Q \
        \boldsymbol{y}_2 W^Q \
        \vdots \
        \boldsymbol{y}_n W^Q
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{y}_1 \
        \boldsymbol{y}_2 \
        \vdots \
        \boldsymbol{y}_n \
        \end{bmatrix} W^Q = YW^Q
        $$
    • 对于$K$:
      • 假设:$x_1$是输入句子$X$的第一个元素,本身是四个维度的向量
      • 假设:$K$的权重矩阵为$W^K$
      • 对$x_1$进行$W^K$点积计算$k_1 = x_1 \cdot W^K$,计算$x_1$在注意力计算中的查询需求Img
      • 对于其他k值
        $$
        K = \begin{bmatrix}
        \boldsymbol{k}_1 \
        \boldsymbol{k}_2 \
        \vdots \
        \boldsymbol{k}_n \
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{x}_1 W^K \
        \boldsymbol{x}_2 W^K \
        \vdots \
        \boldsymbol{x}_n W^K \
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{x}_1 \
        \boldsymbol{x}_2 \
        \vdots \
        \boldsymbol{x}_n \
        \end{bmatrix} W^K = XW^K
        $$
    • 计算$q_1$和$k_1$的相似度得分,对$q_1$值和$k_1$值进行点积:
      • 其中q、k维度必须相同(通过$WQ$、$WK$进行矩阵变换保证) $\dim(\boldsymbol{q}_1) = \dim(\boldsymbol{k}_1)$
      • $\boldsymbol{s}_{11} = \boldsymbol{q}_1 \cdot \boldsymbol{k}_1 = \boldsymbol{q}_1\boldsymbol{k}^T_1$
    • 计算$q_1$在$X$中每个key的相似度得分,对$q_1$值和$K$向量进行点积:
      $$
      \begin{aligned}
      \boldsymbol{q}_1 K^\top &= \boldsymbol{q}_1 \begin{bmatrix}
      \boldsymbol{k}_1 \
      \boldsymbol{k}_2 \
      \vdots \
      \boldsymbol{k}_n \
      \end{bmatrix}^\top \
      &= \boldsymbol{q}_1 \begin{bmatrix}
      \boldsymbol{k}_1^\top & \boldsymbol{k}_2^\top & \dots & \boldsymbol{k}_n^\top
      \end{bmatrix} \
      &= \begin{bmatrix}
      \boldsymbol{q}_1 \boldsymbol{k}_1^\top & \boldsymbol{q}_1 \boldsymbol{k}2^\top & \dots & \boldsymbol{q}1 \boldsymbol{k}n^\top
      \end{bmatrix} \
      &= \begin{bmatrix}
      s
      & s
      & \dots & s

      \end{bmatrix}
      \end{aligned}
      $$
    • 得分转换为可能性/权重,对$q_1 K^T$的得分矩阵,进行$softmax()$,得到的结果表示在考虑查询$q_1$时,应该给$X$中的各个key多少权重,即$q_1 \text{对于} X$的注意力权重(attention weights)
      $$
      \begin{aligned}
      \
      \text{softmax}(\boldsymbol{q}1 K^\top) &= \text{softmax}(\begin{bmatrix}
      s
      & s_{12} & \dots & s_{1n}
      \end{bmatrix}) \
      &= \begin{bmatrix}
      w_{11} & w_{12} & \dots & w_{1n}
      \end{bmatrix}
      \end{aligned}
      $$
    • 对于$V$:
      • 通过上述步骤,得到了$q_1$的注意力权重,如果要得到最终结果,还需要$X$的各个key的value值特征矩阵$V$:
      • 假设$X$的value值权重矩阵为$W^V$
      • 对$X$的元素进行计算:
        $$
        V = \begin{bmatrix}
        \boldsymbol{v}_1 \
        \boldsymbol{v}_2 \
        \vdots \
        \boldsymbol{v}_n
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{x}_1 W^V \
        \boldsymbol{x}_2 W^V \
        \vdots \
        \boldsymbol{x}_n W^V
        \end{bmatrix} = \begin{bmatrix}
        \boldsymbol{x}_1 \
        \boldsymbol{x}_2 \
        \vdots \
        \boldsymbol{x}_n
        \end{bmatrix} W^V = XW^V
        $$
    • 计算单词向量$y_1$对应的查询$q_1$在句子$X$中的上下文:
      $$
      \begin{aligned}
      \
      \text{softmax}(\boldsymbol{q}1^\top K) V &= \begin{bmatrix}
      w
      & w_{12} & \dots & w_{1n}
      \end{bmatrix} , V \
      &= \begin{bmatrix}
      w_{11} & w_{12} & \dots & w_{1n}
      \end{bmatrix} \begin{bmatrix}
      \boldsymbol{v}_1 \
      \boldsymbol{v}2 \
      \vdots \
      \boldsymbol{v}n
      \end{bmatrix} \
      &= \sum\limits
      ^n w
      \boldsymbol{v}_i
      \end{aligned}
      $$
    • 计算整个$Y$在$X$的上下文:
      • 见下一章 缩放点积注意力
    • 其中 权重矩阵 $WQ,WK,W^V$都会在训练过程中得到优化

缩放点积注意力(Scaled Dot-Product Attention)

  • 是计算注意力权重的一种具体方法

  • 通过计算查询向量和键向量的点积 $QK^{\mathrm{T}}$,然后将这个点积结果除以 $\sqrt{d_k}$($d_k$是键向量的维度,即向量矩阵的列数)进行缩放,再经过 $Softmax$ 函数得到注意力权重。最后用这些权重对值向量 $V$ 进行加权求和得到输出:
    $$
    \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^{\mathrm{T}}}{\sqrt{d_k}}\right)V\
    \text{where } Q = YW^Q, K = XW^K, V = XW^V
    $$

  • 缩放的目的:

    • 是为了避免当 ${d_k}$ 较大时,点积结果过大,导致 Softmax 函数的梯度变得极小,从而影响模型的训练。
  • 结构示意图:

    Img

  • 计算过程图:

    Img
    Img
    Img

多头注意力(Multi-Head Attention)

  • 多头注意力是由多个缩放点积注意力组合形成的
  • 多头注意力使模型能够在不同位置共同关注来自不同表示子空间的信息
  • 由于每个头的维度降低,总计算成本与具有全维度的单头注意力相似
    $$
    MultiHead(X,Y)=MultiHead(Q,K,V)=Concat(head_1,\ldots,head_h)W^{O}\quad \
    where\ head_i = Attention(QW{Q}_i,KW_i,VW^{V}i) \qquad (i = 1 \dots h)
    $$
    一般 $h=8$ 表示8个注意头,且 $d_k = d_v = d
    /h = 64$;因为$W^O$的存在,实际,每个头不一定都必须使用相同的维度64
    $W^{O}$:通过变换还原对应的维度的矩阵
  • 结构示意图:
    Img
  • 计算示意图:
    Img
    Img

自注意力机制(self-Attention)

  • 操作在同一个序列上的注意力机制就是自注意力机制,即查询(Query)、键(Key)和值(Value)都来自同一个序列
  • 在Encoder中的多头注意(Multi-Head Attention)是自注意力机制(self-Attention),因为其中的$X = Y$
  • 在Decoder中的多头注意(Multi-Head Attention)非自注意力机制,而是源-目标注意力机制。(Mask Multi-Head Attention是自注意力机制)因为其中的$X != Y$

Transformer的 残差连接与层归一化层(Add & Norm):

Add&Norm

  • LayerNorm主要是将上层的结果进行归一化(LayerNorm)处理
    公式:
    $$
    \text{LayerNorm}(x + MultiHeadAttention(x))、\text{LayerNorm}(x + FeedForward(x))
    $$
    X表示 Multi-Head Attention 或者 Feed Forward 的输入,MultiHeadAttention(X) 和 FeedForward(X) 表示对应的输出 (输出与输入 X 维度是一样的,所以可以相加)

  • Add:
    Add指 X + MultiHeadAttention(X),是一种残差连接。通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分 (在 ResNet 中经常用到)

  • Norm:
    Norm指 Layer Normalization(通常用于 RNN 结构)。将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛

  • 残差连接公式:Img

Transformer的 逐位置前馈网络(Feed-Forward Networks):

  • 每一层都包含一个全连接前馈网络,该网络分别且同等地应用于每个位置。
  • 它由两个线性变换组成,中间有一个 ReLU 激活函数:
    $$
    FFN(x)=\max(0,xW_1 + b_1)W_2 + b_2 \
    x:{输入},W_1、W_2:{线性变换权重矩阵},b_1、b_2:{偏置项}
    $$
  • ReLU 激活函数(Rectified Linear Unit):
    $y=max(0,x)$,当输入x大于0时,激活函数

Transformer的解码器(Decode Block):

  • 组成:由Masked Multi-Head Attention、Multi-Head Attention、Add&Norm、Feed-Forward、Softmax组成
  • 作用:生成丰富Embedding的、对翻译输出结果有用的编码器

解码器中的掩蔽多头注意力(Masked Multi-Head Attention):

  • 在 Decoder 的时候,是需要根据之前的已预测结果,求解当前位置最有可能的预测结果。因为有顺序的要求,所以需要逐个预测。通过Mask操作,可以避免当前位置知道后续位置的信息。
  • Mask操作本身通过Mask矩阵进行变换得到结果
  • 公式:
    $$
    Attention(Q,K,V)=softmax\left(\frac{QK^{\mathrm{T}}Mask}{\sqrt{d_k}}\right)V
    $$
  • Mask预测过程:
    • 对$QK^{\mathrm{T}}$的结果应用Mask矩阵转换
      Img

解码器中的多头注意(Multi-Head Attention):

  • 作用:计算输入句子的特征(嵌入)与输出(部分)句子的特征之间的注意力值(源-目标注意力机制)
  • K、V由编码器的输出计算得到(而不是上一个Decode Block)
  • Q由上一个Decoder Block输出得到
  • 好处:Decoder可以利用到Encoder的所有单词信息(单词信息无需Mask操作)
  • LLM概念脑图
    • GPT
    • transformer
    • self-attention
    • COT(Chain of Thought)
    • RLHF
    • fine-tune
    • Lora
    • Sora
    • TTS

参考:

标签:begin,Attention,end,boldsymbol,Transformer,概念,bmatrix
From: https://www.cnblogs.com/navyum/p/18534724

相关文章

  • 【DL】CAM | 与嵌入的概念相比,图像中有什么相似或不同之处?| 热力图可视化 | python |
    本文将采用像素属性方法嵌入模型输出(Adaptingpixelattributionmethodsforembeddingoutputsfrommodels)的实践。话不多说,先看看效果吧!!!目录1安装pytorch-gradcam2实践① 代码② 效果图“与嵌入的概念相比,图像中有什么相似或不同之处?”为了实现这一点,将创建......
  • 数据分析基础概念1
    一、什么是数据分析?观测、实验、应用二、重新认识数据分析观测:对实物形成客观量化的认知(报表、图表、仪表盘)实验:发现规律、验证假设(科学研究、A/B实验)应用:不断基于数据反馈迭代产品;基于数据训练算法,让机器自动化地完成工作三、观测采集数据、储存数据、展示数据1、采......
  • 调度的概念与层次
    调度的概念与层次‍​​‍一、调度解决的问题理解:在资源有限不能同时处理所有任务的情况下,需要确定某种规则来确定处理这些任务的顺序(划分权级或短时优先或其他等)‍二、调度的层次划分​​‍(一)高级调度/长程调度/作业调度内存的空间有限,无法将所有任务同时装入内存。......
  • 线程的概念、作用和属性
    线程的概念、作用和属性线程的概念理解:线程可视作“轻量级进程”。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文......
  • 鸿蒙开发进阶(HarmonyOS )Form Kit(卡片开发服务)概念
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)FormKi......
  • 进程的概念、组成、特征
    进程的概念、组成、特征‍​​‍一、进程与程序程序:是静态的,是存放在磁盘里的可执行文件,是一系列的指令集合。进程:是动态的,是程序的一次执行过程(同一个程序多次执行会对应多个进程,分配不同的进程号PID)‍二、进程的组成(PCB给操作系统使用,程序段和数据段给进程自己使用)......
  • DICOM标准:重要概念——多种传输语法、私有数据元素标签、唯一标识符(UID)等详解
    1私有数据元素标  1.1 私有数据元素标签(PrivateDataElementTags)        在DICOM标准中,多个实现者可能会定义带有相同(奇数)组号码的私有数据元素标签。为了避免冲突,私有元素根据以下规则分配私有数据元素标签:  a)私有创作者数据元素的分配 编号为(gggg......
  • DICOM标准:DICOM图像核心属性概念详解——关于参考帧、病人位置、病人方位、图像位置和
    目录1、参考帧模块属性2、模态(Modality):3、病人位置(PatientPosition):4、病人方位(PatientOrientation):5、 图像位置和图像方向:6、切片位置7、图像像素模块7.1  图像像素属性描述7.1.1 每个像素的样本7.1.2光度解释7.1.3平面结构7.1.4像素数据1、参......
  • 谈谈全文检索Elasticsearch的核心概念
    Elasticsearch的核心概念1NRT(NearRealtime):近实时两方面:写入数据时,过1秒才会被搜索到,因为内部在分词、录入索引。es搜索时:搜索和分析数据需要秒级出结果。2Cluster:集群包含一个或多个启动着es实例的机器群。通常一台机器起一个es实例。同一网络下,集名一样的多个es实......
  • 边缘计算的基本概念与实践
    在物联网(IoT)领域,边缘计算正逐渐成为一种重要的技术趋势。随着设备数量的激增和数据量的不断增加,传统的集中式云计算模式已经难以满足实时性、数据安全性和带宽效率的需求。边缘计算通过将计算资源下沉到网络边缘,靠近数据源头,从而实现更高效的数据处理和传输。本文将详细介绍......