多头注意力机制的理解
先来看图:
从图片中可以看出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,而且互相独立;
多头注意力机制的理解相关推荐
- 【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码
目录 前言 一.注意力机制:Attention 二.自注意力机制:Self-Attention 三.多头注意力机制:Multi-Head Self-Attention 四.位置编码:Positiona ...
- Pytorch:Transformer(Encoder编码器-Decoder解码器、多头注意力机制、多头自注意力机制、掩码张量、前馈全连接层、规范化层、子层连接结构、pyitcast) part1
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...
- 融合多头注意力机制的网络恶意流量检测
摘要 [目的]现有的网络恶意流量检测方法依赖统计特征进行建模,忽略了网络流量本身所具备的时序特征,通过对时序特征的提取.学习.建模,可以进一步提高网络恶意流量检测精度.[方法]将网络流量以会话为基本单 ...
- transformer学习之多头注意力机制
文章目录 题目 注意力机制 多头注意力机制 为什么要使用多头注意力机制 代码实现 题目 transformer学习之多头注意力机制 注意力机制 详细了解 ➡️ 注意力机制 之前我们也学习过了Seq2S ...
- 动手学深度学习(五十)——多头注意力机制
文章目录 1. 为什么用多头注意力机制 2. 什么是多头注意力机制 3. 多头注意力机制模型和理论计算 4. 动手实现多头注意力机制层 小结 练习 1. 为什么用多头注意力机制 所谓自注意力机制就是通 ...
- 基于多头注意力机制LSTM股价预测模型
1.多头注意力机制层的构建 class MultiHeadAttention(tf.keras.layers.Layer):def __init__(self, num_heads, d_model) ...
- 通过7个版本的attention的变形,搞懂transformer多头注意力机制
--1-- Transformer模型架构 Transformer 由两个独立的模块组成,即Encoder和Decoder Encoder 编码器是一个堆叠N个相同的层.每层由两个子层组成,第一个是多 ...
- Transformer、多头注意力机制学习笔记:Attention is All You Need.
文章目录 相关参考连接: https://blog.csdn.net/hpulfc/article/details/80448570 https://blog.csdn.net/weixin_4239 ...
- 注意力机制QKV理解
注意力机制说白了就是要通过训练得到一个加权,自注意力机制就是要通过权重矩阵来自发地找到词与词之间的关系.因此肯定需要给每个input定义tensor,然后通过tensor间的乘法来得到input之间的 ...
最新文章
- 熟悉Linux的环境实验报告,实验1 熟悉Linux开发环境 实验报告
- u-boot.lds文件详解
- ibatisnet 学习手记(1)
- HALCON示例程序measure_metal_part_first_example.hdev通过拟合边缘进行尺寸测量
- 基于Transformer的通用视觉架构:Swin-Transformer带来多任务大范围性能提升
- python assert_python assert使用说明
- git clone 添加代理_用树莓派3搭建私有git代码仓库
- 微服务开发的入门级框架Spring Boot详解:注解
- bzoj 4196 树链剖分 模板
- 如何判断stdin的数据类型
- 计算机编程—必备基础知识点
- VS2015,C++MFC建立可视化界面第一天
- Python实现离散Radon变换
- 音频压缩算法ALaw,uLaw
- 手绘风格的 JS 图表库:Chart.xkcd
- 把VBA转换成JAVA_请教,我用Excel中生成了Java代码,用VBA生成Jav
- cad转图片,cad图纸该如何转换成svg格式图片呢?
- 个人计算机有ip地址吗,如何查看ip? 查看个人电脑IP地址五大方法
- R语言patchwork包将多个ggplot2可视化结果组合起来、使用plot_annotation函数以及tag_level参数为组合图添加自定义编码序列(字符向量列表)
- termux命令行美化oh my zsh
热门文章
- python中的set函数、列表的操作
- Python的map方法的应用
- numpy中函数shape的用法
- VS cmake远程调试ubuntu项目生成报错:“Does not match the generator used previously: Ninja“(删除.vs隐藏文件夹)
- C语言数据结构(大话数据结构——笔记2)第四章:栈与队列
- pycharm提示:Usually first parameter of a method is named 'self'
- python os.path.exists()(用于判断文件夹路径是否存在)
- python 生成器表达式(构建器表达式)
- 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
- arm架构的linux芯片方案,ARM推64位处理器架构ARMV8及芯片[多图]