首页 > 其他分享 >Transformer模型-Multi-Head Attention多头注意力的简明介绍

Transformer模型-Multi-Head Attention多头注意力的简明介绍

时间:2024-04-05 14:00:17浏览次数:28  
标签:Transformer attention heads Attention Head length key model size

今天介绍transformer模型的Multi-Head Attention多头注意力。

原论文计算scaled dot-product attention和multi-head attention

实际整合到一起的流程为:

通过之前文章,假定我们已经理解了attention;今天我们按顺序来梳理一下整合之后的顺序。重新梳理Attention Is All You Need(Transformer模型): Attention=距离,权重,概率;Multi-Head attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/136998593

当使用多头注意力时,通常d_key = d_value = (d_model / n_heads),其中n_heads是头的数量。研究人员表示,模型之所以能够“关注不同位置的不同表示子空间中的信息”,所以经常使用并行注意力层而不是全维度层。只有一个头时,平均化会阻止这种情况。

第一步:通过线性层W*传递输入Q、K和V

计算注意力的第一步是获取Q、K和V张量;它们分别是查询、键和值张量。它们是通过获取位置编码的嵌入(记作X)并同时将张量传递通过三个线性层(分别记作Wq、Wk和Wv)来计算的。这可以在上面的详细图像中看到。

  • Q = XWq
  • K = XWk
  • V = XWv
  • has a size of (batch_size, seq_length, d_model). An example would be a batch of 32 sequences of length 10 with an embedding of 512, which would have a shape of (32, 10, 512).
  • WqWk, and Wv have a size of (d_model, d_model). Following the example above, they would have a shape of (512, 512).

The linear layers for WqWk, and Wv can be created using nn.Linear(d_model, d_model)

**关于W*和线性层,可参考文章:

学习transformer模型-线性层(Linear Layer),全连接层(Fully Connected Layer)或密集层(Dense Layer)的简明介绍-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137212380学习transformer模型-权重矩阵Wq,Wk,Wv的简明介绍-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137160105

第二步:将Q、K和V分割为各自的头

创建了Q、K和V张量后,现在可以通过将d_model的视图更改为(n_heads, d_key)来将它们分割为各自的头。n_heads可以是一个任意数,但在处理较大的嵌入时,通常会选择8、10或12。请注意,d_key = (d_model / n_heads)。

  • Q has a shape of (batch_size, n_heads, Q_length, d_key)
  • K has a shape of (batch_size, n_heads, K_length, d_key)
  • V has a shape of (batch_size, n_heads, V_length, d_key)

第三步:对每个头计算attention

关于点积和矩阵乘法,请参看:

学习transformer模型-点积dot product,计算attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137093906学习transformer模型-矩阵乘法;与点积dot product的关系;计算attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137090019

第四步:把所有头的attention结果拼接到一起(concat)。

把所有头的attention结果拼接到一起(concat)。

拼接操作会逆转最初进行的分割。第一步是转置n_heads和Q_length。第二步是将n_heads和d_key重新拼接在一起以得到d_model。

完成这些步骤后,A将具有(batch_size,Q_length,d_model)的形状。

第五步,也是最后一步:通过线性层Wo输出。

是将A通过Wo传递,其形状为(d_model,d_model)。再次,权重张量在每个批次中的每个序列上广播。最终的输出保持了其形状:

(batch_size,Q_length,d_model)

请注意,这个输出可以与原始输入X进行加权和,从而得到自注意力机制的输出。

用jupyter计算attention(没有multi-head)。可以参看以下文章,

学习transformer模型-用jupyter演示逐步计算attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137151606

原文链接:

https://medium.com/@hunter-j-phillips/multi-head-attention-7924371d477a

标签:Transformer,attention,heads,Attention,Head,length,key,model,size
From: https://blog.csdn.net/ank1983/article/details/137228070

相关文章

  • transformer结构-position_encoding层
    transformer结构-position_encoding层1完整代码importmathimporttorchimporttorch.nnasnnclassPositionEncoding(nn.Module):def__init__(self,d_model,dropout,max_len):"""d_model:词嵌入维度max_len:每个句子最大长度。......
  • Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models
    NaturalLanguageProcessingSpecializationIntroductionhttps://www.coursera.org/specializations/natural-language-processingCertificateNaturalLanguageProcessingwithAttentionModelsCourseCertificate本文是学习这门课NaturalLanguageProcessing......
  • Java.lang.OutOfMemoryError: GC overhead limit exceeded
    缘由系统是微服务架构,在服务器上跑了近11个微服务,某天发布更新部署新功能,几分钟后发现系统跑着跑着崩了。。。排查通过对11个微服务运行打印的日志,发现只有基础微服务日志中出现了GCoverheadlimitexceeded报错信息,然后从报GC异常的上一个报错的异常进行定位,发现是因为某......
  • SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环
    SCI一区|Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测目录SCI一区|Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介......
  • 【T5中的激活函数】GLU Variants Improve Transformer
    【mT5中的激活函数】GLUVariantsImproveTransformer论文信息阅读评价AbstractIntroductionGatedLinearUnits(GLU)andVariantsExperimentsonText-to-TextTransferTransformer(T5)Conclusion论文信息名称内容论文标题GLUVariantsImprov......
  • 神经网络算法:一文搞懂 Self-Attention 和 Multi-Head Attention
    随着Transformer模型的迅速普及,Self-Attention(自注意力机制)和Multi-HeadAttention(多头注意力机制)成为了自然语言处理(NLP)领域中的核心组件。本文将从简要介绍、工作流程、两者对比三个方面,为您解析这两种注意力机制。前期分享一文搞懂Transformer一文搞懂Attent......
  • 神经网络算法:一文搞懂BERT(基于Transformer的双向编码器)
    本文将从BERT的本质、BERT的原理、BERT的应用三个方面,带您一文搞懂BidirectionalEncoderRepresentationsfromTransformers|BERT。GoogleBERT一、BERT的本质BERT架构:一种基于多层Transformer编码器的预训练语言模型,通过结合Tokenization、多种Embeddings和特定任......
  • Transformer模型-Positional Encoding位置编码的简明介绍
    今天介绍transformer模型的positionalencoding 位置编码背景位置编码用于为序列中的每个标记或单词提供一个相对位置。在阅读句子时,每个单词都依赖于其周围的单词。例如,有些单词在不同的上下文中具有不同的含义,因此模型应该能够理解这些变化以及每个单词所依赖的上下文。......
  • Transformer学习-最简DEMO实现字符串转置
    Transformer学习-最简DEMO实现字符串转置一.代码二.参考三.输出背景:调试AI加速卡在Pytorch训练时的精度问题,搭建了一个简单的Transformer,设置随机种子,保证每次重训练loss完全一致,可以直接对比各算子的计算误差一.代码importosimportrandomimportnumpya......
  • Cesium 根据飞机航线计算飞机的Heading(偏航角)、Pitch(俯仰角)、Roll(翻滚角)
    需求设置飞机的一些坐标位置(经纬度高度),插值得到更多的坐标位置,然后飞机按照这些坐标集合形成的航线飞行,飞机的朝向、俯仰角以及飞机转弯时的翻转角根据坐标集合计算得出,而不需要手动设置heading、pitch、roll。坐标插值不知道为什么,可能是飞行速度变化太大,我用Cesium自带的插......