如何理解self attention中的QKV矩阵
如何理解self attention中的QKV矩阵
疑问:三个矩阵的形状是一样的(embd_dim*embd_dim),作用也都是对输入句子的embedding做线性变换(tf.matmul(Q,input_value),tf.matmul(K,input_value),tf.matmul(V,input_value))。
那么,为什么需要三个矩阵QKV。
对于这个问题,在我第一次看了b站博主视频https://www.bilibili.com/video/BV1P4411F77q(强烈推荐)。就已经明白了。但是因为没有做相关笔记,也没有项目实践。所以,又忘记了,然后又看了一遍。吸取之前的教训,所以来这里做笔记了。
公式:
1.初始化三个矩阵Q,K,V(待学习参数)
2.计算embedding:query=embedding_x(input sentense)*Q,key= embedding_x(input sentense)*K,value=embedding_x(input sentense)*V
3.计算点积,每个词和每个词的相关性,其实就是attention加权求和的权重:
logits = tf.matmul(query, key, transpose_b=True) / math.sqrt(depth)
每一行代表的是当前词和句子的每个词的相关性(你品,你细细品,点积的含义)。
4.对权重做归一化,保证一行的权重和为1:alignment = tf.nn.softmax(logits, axis=-1)
5.对输入(input sentense)加权求和:attended = tf.matmul(alignment, value)。每一个词的embedding包含了这个句子所有词的信息。其实这就是transform相比于lstm和gru的优点。
总结:self attention 要做的事情,就是要将一句话的内容融合到每个词的向量表示中。如何融合=>通过加权。加权就要算权重。如何算这个权重=>向量的点击(Q和K的点积)。最后,通过计算好的权重加权,就完成啦。
思考:为什么需要用三个Q,K,V分别对embedding_x 做线性变换,再计算attention。
个人理解,为什么不共享一个线性变换的矩阵,而是用三个。从模型角度是增加模型的解释能力。从业务角度,分别计算的是搜索词和关键词及每个句子间的词向量。有一定差异。
(关于业务角度,个人理解不一定正确,欢迎讨论)
如何理解self attention中的QKV矩阵相关推荐
- 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...
- python—结巴分词的原理理解,Hmm中的转移概率矩阵和混淆矩阵。
结巴分词的过程: jieba分词的python 代码 结巴分词的准备工作 开发者首先根据大量的人民日报训练了得到了字典库.和Hmm中的转移概率矩阵和混淆矩阵. 加载字典, 生成trie树 为什么要加载 ...
- 理解CSS3 transform中的Matrix(矩阵)
一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如"拉普拉斯不等式").这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面& ...
- 通俗易懂:Attention中的Q、K、V是什么?怎么得到Q、K、V?
说一下Attention中的QKV是什么,再举点例子说明QKV怎么得到.还是结合例子明白的快. Attention中Q.K.V是什么? 首先Attention的任务是获取局部关注的信息.Attenti ...
- 如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题
如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题? 1.首先介绍一下,矩阵的病态问题 矩阵病态主要是因为矩阵向量之间相关性太大,在二维上说就是矩阵向量之间的夹角太小,导致这两 ...
- Scipy sparse中关于CSC矩阵的自我理解
官方文档可见:https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.html#scipy.spars ...
- excel中如何对矩阵得对角线进行求和_如何利用图卷积网络进行图形深度学习(第2部分)...
图上的机器学习是一项艰巨的任务,由于高度复杂但信息量丰富,本文是关于如何利用图卷积网络(GCN)进行深度学习的系列文章中的第二篇.我将简要回顾一下上一篇文章: 图形卷积网络的高级介绍 具有谱图卷积的半 ...
- 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层
本文是<TensorFlow从浅入深>系列之第12篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
- 拉普拉斯算子属于卷积方法吗_二维图像中的Laplace算子和图论中的Laplacian矩阵...
最近在阅读 如何理解 Graph Convolutional Network(GCN)?www.zhihu.com 接触到了图论中的Laplacian矩阵,定义为 , 是Laplacian矩阵, 是 ...
最新文章
- Apache POI和EasyExcel 第七集:EasyExcel的基本操作,读取和写入Excel,一行足矣
- Java使用Jdbc操作MySql数据库(一)
- ueditor配置文件配置自动段落缩进_vimrc里各种配置的含义
- 2434: [Noi2011]阿狸的打字机
- html5编游戏好难,分享微信开发Html5轻游戏中的几个坑
- EXCEL怎么打20位以上的数字?
- 第五节: Quartz.Net五大构件之Trigger的四大触发类
- python可变参数函数二阶导数公式_python中函数的可变参数
- DBX到PDF转换器
- 光纤中的多种光学模式芯径_光纤光缆的21条基础知识
- easyui结合java,Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试
- 网络文件系统访问与ftp服务
- 以图搜图:Python实现dHash算法
- JSK-373 加密【入门】
- 2018.8.2课堂笔记
- 不存在一笔画完一个正方体
- 第一次参加本校大学生创新创业训练项目答辩的反思与总结
- 《mysql从删库到跑路》下载
- 使用python Mayavi 绘制矢量场图
- RN导入高德地图定位的用法实例
热门文章
- 供水信息化运行管理平台 智慧供水管网信息化管理平台建设概述
- property=og:title 是什么意思?og:的用法又是什么呢?
- Python abs()函数
- python编程基础人邮版答案_《Python Web 编程》(人邮出版社)作业答案下载
- Python opencv PIL numpy base64互相转化
- qml虚拟键盘的实现
- android ppt 注释软件,安卓版WPS Office 5.5.2增强PPT悬浮备注框
- PHP操作期数,期号的常用方法
- 面向对象的特性——继承
- 利用matlab实现光波(电磁波)的仿真