首页 > 编程语言 >神经网络算法:一文搞懂 Self-Attention 和 Multi-Head Attention

神经网络算法:一文搞懂 Self-Attention 和 Multi-Head Attention

时间:2024-04-03 23:34:03浏览次数:26  
标签:Multi Self Attention Head 搞懂 注意力 向量

随着 Transformer 模型的迅速普及,Self-Attention(自注意力机制)和Multi-Head Attention(多头注意力机制)成为了自然语言处理(NLP)领域中的核心组件。

本文将从简要介绍、工作流程、两者对比三个方面,为您解析这两种注意力机制。

图片

前期分享

一、简要介绍

Self-Attention(自注意力机制):使输入序列中的每个元素能够关注并加权整个序列中的其他元素,生成新的输出表示,不依赖外部信息或历史状态。

  • Self-Attention允许输入序列中的每个元素都与序列中的其他所有元素进行交互。

  • 它通过计算每个元素对其他所有元素的注意力权重,然后将这些权重应用于对应元素的表示,从而得到一个加权和的输出表示。

  • Self-Attention不依赖于外部信息或先前的隐藏状态,完全基于输入序列本身。

图片

Self-Attention

Multi-Head Attention(多头注意力机制):通过并行运行多个Self-Attention层并综合其结果,能够同时捕捉输入序列在不同子空间中的信息,从而增强模型的表达能力。

  • Multi-Head Attention实际上是多个并行的Self-Attention层,每个“头”都独立地学习不同的注意力权重。

  • 这些“头”的输出随后被合并(通常是拼接后再通过一个线性层),以产生最终的输出表示。

  • 通过这种方式,Multi-Head Attention能够同时关注来自输入序列的不同子空间的信息。

图片

Multi-Head Attention

二、工作流程

Self-Attention(自注意力机制):通过生成查询、键和值向量,计算并归一化注意力分数,最终对值向量进行加权求和,从而得到输入序列中每个位置的加权表示。

图片

Self-Attention工作流程

第一步:查询、键和值的生成

  • 输入:接收一个由嵌入向量组成的输入序列,这些嵌入向量可以是词嵌入加上位置嵌入。

  • 处理:使用三个独立的线性层(或称为密集层)为每个输入向量生成查询(Q)、键(K)和值(V)向量。

    • 查询向量用于表示当前焦点或希望获取的信息。

    • 键向量用于确定与查询向量匹配的信息。

    • 值向量包含与相应的键向量关联的实际信息。

图片

第二步:注意力矩阵的计算

  • 处理:计算查询向量和所有键向量之间的点积,形成一个注意力分数矩阵。

    • 这个矩阵的每个元素表示一个查询向量和对应键向量之间的相关性分数。

    • 由于点积操作,分数可能非常大或非常小。

图片

第三步:归一化注意力分数

  • 处理:应用softmax函数对注意力分数矩阵进行归一化。

    • 归一化后,每行的和为1,每个分数表示对应位置信息的权重。

    • 在应用softmax之前,通常会除以一个缩放因子(如查询或键向量维度的平方根)来稳定梯度。

图片

第四步:加权和输出

  • 处理:使用归一化后的注意力权重对值向量进行加权求和。

    • 加权求和的结果是自注意力机制的输出,它包含了输入序列中所有位置的加权信息。

    • 输出向量的每个元素都是输入向量的加权和,权重由注意力机制决定。

图片图片

Multi-Head Attention(多头注意力机制):通过将输入的查询、键和值矩阵分割成多个头,并在每个头中独立计算注意力,再将这些头的输出拼接并线性变换,从而实现在不同表示子空间中同时捕获和整合多种交互信息,提升模型的表达能力。

图片

Multi-Head Attention工作流程

  • 初始化: 首先,初始化必要的参数,包括查询、键和值矩阵的权重,以及多头注意力中的头数。这些权重将用于后续的线性变换。

  • 线性变换: 对输入的查询、键和值矩阵进行线性变换。这些线性变换是通过与相应的权重矩阵相乘来实现的。变换后的矩阵将用于后续的多头注意力计算。

  • 分割与投影: 将线性变换后的查询、键和值矩阵分割成多个头。每个头都有自己的查询、键和值矩阵。然后,在每个头中独立地计算注意力分数。

  • 缩放与Softmax: 对每个头的注意力分数进行缩放,以避免梯度消失或爆炸的问题。然后,应用Softmax函数将注意力分数归一化,使得每个位置的权重之和为1。

  • 加权求和: 使用归一化后的注意力权重对值矩阵进行加权求和,得到每个头的输出矩阵。

  • 拼接与线性变换: 将所有头的输出矩阵拼接在一起,形成一个大的输出矩阵。然后,对这个输出矩阵进行线性变换,得到最终的输出。

三、两者对比

核心差异:Self-Attention关注序列内每个位置对其他所有位置的重要性,而Multi-Head Attention则通过在多个子空间中并行计算注意力,使模型能够同时捕获和整合不同方面的上下文信息,从而增强了对复杂数据内在结构的建模能力。

  • Self-Attention (自注意力机制): 自注意力机制的核心是为输入序列中的每一个位置学习一个权重分布,这样模型就能知道在处理当前位置时,哪些位置的信息更为重要。Self-Attention特指在序列内部进行的注意力计算,即序列中的每一个位置都要和其他所有位置进行注意力权重的计算。

  • Multi-Head Attention (多头注意力机制): 为了让模型能够同时关注来自不同位置的信息,Transformer引入了Multi-Head Attention。它的基本思想是将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地计算注意力权重,最后将各个子空间的结果拼接起来。这样做的好处是模型可以在不同的表示子空间中捕获到不同的上下文信息。

案例对比:在“我爱AI”例子中,Self-Attention计算每个词与其他词的关联权重,而Multi-Head Attention则通过拆分嵌入空间并在多个子空间中并行计算这些权重,使模型能够捕获更丰富的上下文信息。

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

  1. 输入:序列“我爱AI”经过嵌入层,每个词(如“我”)被映射到一个512维的向量。

  2. 注意力权重计算:

    • 对于“我”这个词,Self-Attention机制会计算它与序列中其他所有词(“爱”、“A”、“I”)之间的注意力权重。

    • 这意味着,对于“我”的512维嵌入向量,我们会计算它与“爱”、“A”、“I”的嵌入向量之间的注意力得分。

  3. 输出:根据计算出的注意力权重,对输入序列中的词向量进行加权求和,得到自注意力机制处理后的输出向量。

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

  1. 子空间拆分:

    • 原始的512维嵌入空间被拆分成多个子空间(例如,8个头,则每个子空间64维)。

    • 对于“我”这个词,其512维嵌入向量被相应地拆分成8个64维的子向量。

  2. 独立注意力权重计算:

    • 在每个64维的子空间内,独立地计算“我”与“爱”、“A”、“I”之间的注意力权重。

    • 这意味着在每个子空间中,我们都有一套独立的注意力得分来计算加权求和。

  3. 结果拼接与转换:

    • 将每个子空间计算得到的注意力输出拼接起来,形成一个更大的向量(在这个例子中是8个64维向量拼接成的512维向量)。

    • 通过一个线性层,将这个拼接后的向量转换回原始的512维空间,得到Multi-Head Attention的最终输出。

标签:Multi,Self,Attention,Head,搞懂,注意力,向量
From: https://blog.csdn.net/2401_84033492/article/details/137359773

相关文章

  • 神经网络算法:一文搞懂BERT(基于Transformer的双向编码器)
    本文将从BERT的本质、BERT的原理、BERT的应用三个方面,带您一文搞懂BidirectionalEncoderRepresentationsfromTransformers|BERT。GoogleBERT一、BERT的本质BERT架构:一种基于多层Transformer编码器的预训练语言模型,通过结合Tokenization、多种Embeddings和特定任......
  • Wpf Combobox display multiple fields columns properties
    <ComboBoxGrid.Row="0"x:Name="cbx"VirtualizingPanel.VirtualizationMode="Recycling"HorizontalAlignment="Stretch"VerticalContentAlignment="Center"FontSize="30"Selec......
  • ABC221H Count Multiset
    传送门构造序列型DP。经典的就是这么一种构造序列的方式:用两种操作。增加一个\(0\)。将当前序列中所有数加\(1\)。由此可以构造出任意一种自然数不降序列。回到本题。即要求构造一个长度\(k\)和为\(n\)且没有一种数出现超过\(m\)次的不降序列,求方案数。考虑......
  • 一文彻底搞懂SpringMVC执行流程
    文章目录1.MVC2.SpringMVC3.执行流程4.配置文件5.常用注解1.MVCMVC(Model-View-Controller)是一种软件架构模式,旨在将应用程序分为三个核心组件:模型(Model):模型代表应用程序的数据和业务逻辑。它负责管理数据的状态和行为,并且不直接处理用户界面或用户输入。通......
  • 一文彻底搞懂常见IO模型
    文章目录1.常见的IO模型2.阻塞IO(BIO)3.非阻塞IO(NIO)4.IO多路复用5.信号驱动6.异步IO(AIO)7.BIO,NIO,AIO的区别1.常见的IO模型在UNIX操作系统中,常见的I/O模型有以下五种:1.阻塞I/O模型(BlockingI/O)在阻塞I/O模型中,应用程序发起一个I/O请求后会一直阻......
  • 一文彻底搞懂MySQL中事务的五种分类
    文章目录1.什么是事务2.事务的分类3.事务的详解1.什么是事务事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全部成功完成,要么全部失败回滚,从而保证数据库操作一致性和完整性的重要机制,它确保了数据库在并发环境下的正确性和可靠性。在数据库中,事务......
  • 论文阅读:A new approach solve the multi-product multi-period inventory lot sizing
    论文:Anewapproachsolvethemulti-productmulti-periodinventorylotsizingwithsupplierselectionproblem期刊:Computer&OperationsResearch1.模型建立:具有供应商选择问题的多产品多周期库存批量确定1.1问题定义将具有供应商选择问题的多产品多周期库存批......
  • Multiple Presentation
    ......
  • Wpf ComboBoxItem show multi fields
    <Windowx:Class="WpfApp28.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • Multimedia Presentation
    ......