transformer中QKV的通俗理解(渣男与备胎的故事)

用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下
参考链接: 哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)

Attention is all you need介绍

更具体的介绍可以去阅读论文

在Attention is all you need这篇文章中提出了著名的Transformer模型

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。

更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。

一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。

Attenion机制

在深度学习中,注意力机制的目标是从大量的信息中选择出更有用的信息。
Attention is all you need这篇文章体现注意力机制的核心就是下面这个公式了

刚刚看到这个公式的时候我也是很蒙的,查了很多资料才搞懂,这里再次推荐一个B站的up主,讲的很形象, 本文的素材也是部分来自于此
在线激情讲解transformer&Attention注意力机制(上)

Q,K,V是由输入的词向量x经过线性变换得到的,其中各个矩阵w可以经过学习得到, 这种变换可以提升模型的拟合能力, 得到的Q,K,V 可以理解为
Q: 要查询的信息
K: 被查询的向量
V: 查询得到的值

总结一下:
首先QKV都源于输入特征本身,是根据输入特征产生的向量,但目前我们现在无需关注是如何产生这组向量的。
V可以看做表示单个输入特征的向量。当我们直接把一组V输入到网络中进行训练,那这个网络就是没有引入Attention机制的网络。
但如果引入Attention,就需要将这组V分别乘以一组权重α\alphaα,那么就可以做到有重点性地关注输入特征,如同人的注意力一般。

下面就用一个通俗的例子来解释如何学习到α\alphaα并且使用attention机制

通俗易懂的例子 海王与备胎

有一个海王,有N个备胎,他想要从自己的备胎中寻找出最符合自己期望的那个,便于他分配注意力并且来管理时间。

在这个案例中
Q 表示渣男对备胎的要求
K 表示渣男自身的条件 因为备胎们也会看渣男的条件是否让她们满意
V 表示匹配的结果
无论是渣男还是备胎, 都有着自己的一套Q K V 来记录他们选择的情况

现在我们的渣男要开始筛选备胎了, 对他来说,当然是备胎的条件越符合他的理想越好
放在Q,K,V上来讲就是渣男的Q与备胎的K之间的相似度越高越好

现在的问题就是如何计算他们的相似度了
点乘拓展:
在向量中,AB点乘的结果反应了他们之间的相似度, (A在B上的投影与B的模相乘得到的结果)
如果AB垂直,那么他们点乘为0, 也就是他们的相似度为0
因此AB点乘的结果越大, 我们就可以认为两个向量的相似度越高


在渣男选择备胎的过程中, 由于他们选择的条件Q,K是矩阵的形式, 因此计算矩阵之间的相似度我们采用 Q∗KTQ*K^TQ∗KT 来实现
相当于计算了Q的每一行与K的每一行的点乘结果(结合下图中23列的例子来理解) 也就得到了Q的每一行与K的每一行之间的相似度结果
最后通过softmax来进行归一化, 得到一个直观的0~1之间的相似度结果


渣男与备胎之间的这些结果共同构成了权值, 也就是核心式中的左半部分
α=softmax(QKTdk)\alpha = softmax(\frac{QK^T}{\sqrt{d_k}})α=softmax(dk​​QKT​)
对于dk{\sqrt{d_k}}dk​​也许很多人会有疑问,为什么要除以dk{\sqrt{d_k}}dk​​ ,能不能除以其他的东西呢,为什么是除不是乘呢? 主要原因如下

  1. 首先要除以一个数,防止输入softmax的值过大,导致偏导数趋近于0;(另一个角度来看: 如果权重矩阵里面有0.9这种高注意力的权重,那么会导致注意力几乎都被它所分走,除以一个数可以让注意力的分布更加均匀)
  2. dk{d_k}dk​ 是词向量/隐藏层的维度, 选择dk{\sqrt{d_k}}dk​​ 可以使得q*k的符合N(0,1)的分布,类似于归一化。

利用上面计算后得到的权重矩阵来对每个备胎加权,也就是
Attention(K,Q,V)=α∗VAttention(K,Q,V) = \alpha * VAttention(K,Q,V)=α∗V
这样渣男就知道自己该对谁付出更多的注意力了,也有可能渣男比较自恋, 备胎都不太满足他的要求, 他的理想型可能是自己这种类型的, 那么他最需要关注的就是他自己

transformer中QKV的通俗理解(渣男与备胎的故事)相关推荐

  1. 【AI理论学习】对Transformer中Positional Encoding的理解

    对Transformer中Positional Encoding的理解 1. 什么是Positional Encoding?为什么Transformer需要使用Positional Encoding? ...

  2. transformer中相对位置编码理解

    对于一副图像,位置信息占有非常重要的地位,ViT中用了绝对位置编码,Swin中用到了相对位置编码.看了Swin的源码,参考了https://blog.csdn.net/qq_37541097/arti ...

  3. 通俗理解决策树算法中信息增益的

    转载自   通俗理解决策树算法中信息增益的 通俗理解决策树算法中的信息增益 在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明 ...

  4. 对Transformer中的MASK理解

    对Transformer中的MASK理解 Padding Masked Self-Attention Masked 上一篇文章我们介绍了 对Transformer中FeedForward层的理解,今天 ...

  5. AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer

    前言 2018年我写过一篇博客,叫:<一文读懂目标检测:R-CNN.Fast R-CNN.Faster R-CNN.YOLO.SSD>,该文相当于梳理了2019年之前CV领域的典型视觉模型 ...

  6. word2vec预训练词向量+通俗理解word2vec+CountVectorizer+TfidfVectorizer+tf-idf公式及sklearn中TfidfVectorizer

    文章目录 文分类实(一) word2vec预训练词向量 2 数据集 3 数据预处理 4 预训练word2vec模型 canci 通俗理解word2vec 独热编码 word2vec (Continuo ...

  7. 机器学习中训练的模型,通俗理解

    概率统计(建模.学习) 很多新手在初学机器学习/深度学习中,会产生这样的疑问?为什么要训练模型,模型是什么,如何训练- 本人刚开始接触时也产生过类似地疑问,现在为大家排解这些疑问. 1.机器学习中大概 ...

  8. 举例理解transformer中的位置编码

    文章目录 1. transformer结构图 2. 位置编码的作用 3. 位置编码的计算 1. transformer结构图 ​ 在transformer的结构图中,由一个"Position ...

  9. 深入理解transformer中的位置编码

    文章目录 总览 问题1 问题2 问题3 问题4 问题5 问题6 总览 我们今天需要讲解transformer中的位置编码,这其实属于进阶内容.既然你会到这里,我默认你已经看过了transformer的 ...

最新文章

  1. 详解GPU的内存带宽与CPU的不同
  2. 花了一个星期,我终于把RPC框架整明白了!
  3. web服务的搭建 windows server 2008
  4. python教程笔记(详细)
  5. Python中threading的join和setDaemon的区别及用法 例子
  6. 北航计算机学院毕业生2019,北航2019届本科生毕业典礼暨学位授予仪式举行
  7. promise在promise情况下进行使用async与await
  8. anaconda下载的python在哪_Anaconda下Python环境下载及安装
  9. django入门项目图书管理
  10. 希捷四十载:如何做好一家非常规存储公司?
  11. java简单增删改查_无框架JavaWeb简单增删改查,纯 jsp小练习
  12. 数据结构课程设计- (二) 栈与队列(迷宫问题)
  13. 计算机打字声音,键盘打字声音在哪设置
  14. iPhone5s 换电池、修右上角翘起的悲催过程
  15. pyecharts画地图—个性化设置
  16. 谁是软件测试的利益相关者?如何识别它们?
  17. java 写一个quot;HelloJavaWorld你好世界quot;输出到操作系统文件Hello.txt文件中
  18. 目标检测中的指标都是什么意思
  19. 一文看懂BT5.2 LE Audio新特性
  20. 用计算机设置变大的命令按钮 vb,2017年9月计算机二级考试VB考试题

热门文章

  1. Ubuntu Linux 3D桌面完全教程 显卡驱动安装方法 compiz特效介绍
  2. DApp公链选择需要考虑的问题
  3. ps3运行linux,PS3上的PC系统Linux不是摆设!
  4. 51单片机的c语言外部扩展,教你给51单片机扩展片外RAM
  5. Linux 摸索:使用VM安装CenOS 7之后,开机启动黑屏
  6. 几种论文排版工具(texlive, amot, texmaker)——新手的摸索过程
  7. 小米AX1800开SSH权限
  8. 原生JS实现轮播图 方法总结
  9. 4-9-6 tf.keras入门(附带复现cvpr论文流程与代码)
  10. C语言练习题:厘米换算英尺英寸