先来看图:

从图片中可以看出V K Q 是固定的单个值,而Linear层有3个,Scaled Dot-Product Attention 有3个,即3个多头;最后cancat在一起,然后Linear层转换变成一个和单头一样的输出值;类似于集成;多头和单头的区别在于复制多个单头,但权重系数肯定是不一样的;类比于一个神经网络模型与多个一样的神经网络模型,但由于初始化不一样,会导致权重不一样,然后结果集成;(初步理解)

证明:attention函数来自于 attention is all you need,如下所示:

多头注意力机制函数:

从第二张图中可以多头函数看出:attention函数输入为由原来的Q,K,V变成了QW(上标为Q,下标为i),KW(上标为K,下标为i),VW(上标为V,下标为i);即3个W都不相同;将Q,K,V由原来的512维度变成了64维度(因为采取了8个多头);然后再拼接在一起变成512维,通过W(上标为O)进行线性转换;得到最终的多头注意力值;

个人最终认为:多头的本质是多个独立的attention计算,作为一个集成的作用,防止过拟合;从attention is all your need论文中输入序列是完全一样的;相同的Q,K,V,通过线性转换,每个注意力机制函数只负责最终输出序列中一个子空间,即1/8,而且互相独立;

多头注意力机制的理解相关推荐

  1. 【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

    目录 前言 一.注意力机制:Attention 二.自注意力机制:Self-Attention 三.多头注意力机制:Multi-Head Self-Attention 四.位置编码:Positiona ...

  2. Pytorch:Transformer(Encoder编码器-Decoder解码器、多头注意力机制、多头自注意力机制、掩码张量、前馈全连接层、规范化层、子层连接结构、pyitcast) part1

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  3. 融合多头注意力机制的网络恶意流量检测

    摘要 [目的]现有的网络恶意流量检测方法依赖统计特征进行建模,忽略了网络流量本身所具备的时序特征,通过对时序特征的提取.学习.建模,可以进一步提高网络恶意流量检测精度.[方法]将网络流量以会话为基本单 ...

  4. transformer学习之多头注意力机制

    文章目录 题目 注意力机制 多头注意力机制 为什么要使用多头注意力机制 代码实现 题目 transformer学习之多头注意力机制 注意力机制 详细了解 ➡️ 注意力机制 之前我们也学习过了Seq2S ...

  5. 动手学深度学习(五十)——多头注意力机制

    文章目录 1. 为什么用多头注意力机制 2. 什么是多头注意力机制 3. 多头注意力机制模型和理论计算 4. 动手实现多头注意力机制层 小结 练习 1. 为什么用多头注意力机制 所谓自注意力机制就是通 ...

  6. 基于多头注意力机制LSTM股价预测模型

    1.多头注意力机制层的构建 class MultiHeadAttention(tf.keras.layers.Layer):def __init__(self, num_heads, d_model) ...

  7. 通过7个版本的attention的变形,搞懂transformer多头注意力机制

    --1-- Transformer模型架构 Transformer 由两个独立的模块组成,即Encoder和Decoder Encoder 编码器是一个堆叠N个相同的层.每层由两个子层组成,第一个是多 ...

  8. Transformer、多头注意力机制学习笔记:Attention is All You Need.

    文章目录 相关参考连接: https://blog.csdn.net/hpulfc/article/details/80448570 https://blog.csdn.net/weixin_4239 ...

  9. 注意力机制QKV理解

    注意力机制说白了就是要通过训练得到一个加权,自注意力机制就是要通过权重矩阵来自发地找到词与词之间的关系.因此肯定需要给每个input定义tensor,然后通过tensor间的乘法来得到input之间的 ...

最新文章

  1. 熟悉Linux的环境实验报告,实验1 熟悉Linux开发环境 实验报告
  2. u-boot.lds文件详解
  3. ibatisnet 学习手记(1)
  4. HALCON示例程序measure_metal_part_first_example.hdev通过拟合边缘进行尺寸测量
  5. 基于Transformer的通用视觉架构:Swin-Transformer带来多任务大范围性能提升
  6. python assert_python assert使用说明
  7. git clone 添加代理_用树莓派3搭建私有git代码仓库
  8. 微服务开发的入门级框架Spring Boot详解:注解
  9. bzoj 4196 树链剖分 模板
  10. 如何判断stdin的数据类型
  11. 计算机编程—必备基础知识点
  12. VS2015,C++MFC建立可视化界面第一天
  13. Python实现离散Radon变换
  14. 音频压缩算法ALaw,uLaw
  15. 手绘风格的 JS 图表库:Chart.xkcd
  16. 把VBA转换成JAVA_请教,我用Excel中生成了Java代码,用VBA生成Jav
  17. cad转图片,cad图纸该如何转换成svg格式图片呢?
  18. 个人计算机有ip地址吗,如何查看ip? 查看个人电脑IP地址五大方法
  19. R语言patchwork包将多个ggplot2可视化结果组合起来、使用plot_annotation函数以及tag_level参数为组合图添加自定义编码序列(字符向量列表)
  20. termux命令行美化oh my zsh

热门文章

  1. python中的set函数、列表的操作
  2. Python的map方法的应用
  3. numpy中函数shape的用法
  4. VS cmake远程调试ubuntu项目生成报错:“Does not match the generator used previously: Ninja“(删除.vs隐藏文件夹)
  5. C语言数据结构(大话数据结构——笔记2)第四章:栈与队列
  6. pycharm提示:Usually first parameter of a method is named 'self'
  7. python os.path.exists()(用于判断文件夹路径是否存在)
  8. python 生成器表达式(构建器表达式)
  9. 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
  10. arm架构的linux芯片方案,ARM推64位处理器架构ARMV8及芯片[多图]