self-attention笔记


self-attention

对于self-attention的理解

        对于self-attention,我们直觉可能会觉得是从一个大的数据中,将我们的注意力集中在我们感兴趣的区域里, 但通过self-attention的原理可以发现,其原理更像是对于一个区域(一个向量),我们搜集其他向量中跟这个向量有关的信息。

        相比于直接全部用全连接层进行输出,self-attention可以更好的保证自己的特征, 就比如对于一个序列ABCD,我们要输出A的语义, 虽然我们要综合考虑BCD的信息,但是主要的信息来源还是A带来的, 如果直接将ABCD丢进全连接层, 那么ABCD在网络里的地位是一样的, 换句话说相当于A丢失了很多自己的特征。但是对于self-attention来说,因为self-attention的原理是从BCD中找与A最相似的信息,  所以相比于全连接层,并不会丢失很多关于A的信息,这就是self-attention的优点之一。
网课笔记

self-attention下_哔哩哔哩_bilibili

对于数据,比如语义数据如何编码呢?   可以用one-hot 编码 ,但是这样相当于默认每个词之间是彼此独立的

 所以针对这个弊端, 又有一种编码方式Word Enbedding

保留了一定的语义信息。

对于一个序列输入(输入由多个向量组成)其输出有以下几种形式:

 self-attention

为了让每个局部a,都能考虑全局的信息,也就是要将下图中a2,a3,a4中与a1有关的信息和a1关联起来,得到b1,从a1到b1的过程就叫做self-attention,b1就相当于融合了全局信息的a1。

 具体是实现方式:Dot-product   因为向量点乘能保证一定的相关性, 对于向量长度恒定的两个向量来说, 点乘的值越大其向量越接近(角度)

对于每一个q,都去跟其他的k相乘,得到a11后做soft-max处理, 这时候的a11和a12都是具体的值, 


这里每个a_hot都是经过softmax后的值。

Transformer中Self-Attention以及Multi-Head Attention详解_哔哩哔哩_bilibili

最后,需要组装成b1,b1相当于

 所以需要额外乘一个v向量,让其最后能组装成一个向量b1。

 比如对于a1.1_hot和a1.2_hot这个来说,  由上一步得到的是(0.33, 0.67) 这里其实已经是最终b1的形式了(因为矩乘的原因)但是在我们的视角里我们只得到了a1.1_hot和a1.2_hot的值为0.33和0.67为了让其能够组合成一个向量,所以需要乘一个向量v保证最后b1的形式为:(a1.1_hot,a1.2_hot)

矩阵化:其中I是输入,0是输出

问题: 如果输入是个2x4的向量,  注意力窗口只有两个向量a1,a2。 那么输出的0的shape是什么?

K^{T}Q相当于

\begin{bmatrix} 1 & 2 & 3 &4 \\ 2 & 4 & 6 & 8 \end{bmatrix}  * \begin{bmatrix} 1 & 3\\ 3& 5\\ 5& 7\\ 7& 9 \end{bmatrix}     , 那么此时输出的是2X2大小的矩阵,  经过softmax后并不会改变shape  所以还是2X2的大小,   那么为了使得输入输出的shape一样,   那么只能通过V来将2X2变成2X4  也就是V的shape必须是2X4的矩阵。

 MUlti-head Self-Attention

就相当于a输入进后, 再并联全连接层,使其拆分(代码中简化成直接将输入向量a均分),这样做的好处是一个向量a,里面包含很多信息,将其分组再判断其相似度,可以更精细。    

在进行拆分后,正常情况下输出的b,会翻倍,比如,原本b11应该是(1,1)b21输出应该是(0,1)。拆分之后相当于做了2遍。所以多出了蓝色的b12和b22。

  

        一般地,对于一个向量长度为t,向量个数为的2(也就是只有a1和a2)的输入来说, 其正常情况下输出的b的shape是2X2,通过一个2Xt的参数矩阵W0,将其shape变为输入的shape:2Xt  如果此时对向量拆分,变成t/u 那么输出b的shape应该是2X(2*t/u) ,因为将原本的一份b变成了t/u份,  此时再通过(2*t/u)X t 的矩阵将其变为输入的shape:2Xt

 Positional Encoding

一个基本的位置编码方法:相当于对于每一个位置,都预设一个值,然后将其加在原来的输入向量a上, 这样可以希望神经网络能够学习到这个不同的值,通过这个不同的预设值来感知不同的位置。

对于在图像中的应用:

整体来看,CNN可以看成一种特殊的self-attention。  self-attention相当于用一系列的嵌套网络结构将某个向量附近的所有向量结合起来输出一个值。   而CNN相当于在一个人为定好的区域(卷积核)内将信息整合输出一个值。  所以self-attention和CNN的输入和输出是相似的, 一个是全局,一个是局部。 并且其中实现细节不一样。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

八大排序算法--希尔排序(动图理解)

目录 希尔排序 概念 算法思路 动画演示 代码如下 复杂度分析 时间复杂度测试 运行结果 完整代码 创作不易,如果本篇博客对您有一定的帮助,大家记得留言点赞哦。 希尔排序 概念 希尔排序是插入排序的一种,是对直接插入排序的优化。其…

uniapp小程序,根据小程序的环境版本,控制的显页面功能按钮的示隐藏

需求:根据小程序环境控制控制页面某个功能按钮的显示隐藏; 下面是官方文档和功能实现的相关代码: 实现上面需要,用到了uni.getAccountInfoSync(): uni.getAccountInfoSync() 是一个 Uniapp 提供的同步方法&#xff0c…

Acwing.875 快速幂

题目 给定n组ai , bi, pi,对于每组数据,求出akimod pi的值。 输入格式 第一行包含整数n。 接下来n行,每行包含三个整数ai , bi,pi。输出格式 对于每组数据,输出一个结果,表示aibimod pi的值。 每个结果占一行。 数…

Linux - 环境变量

1.基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,生…

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽,心谱落愁无序,旧时的誓言,曾而相似,河水在遵循河道的指引下,在曲折前进中放…

zookeeper学习(三)基础数据结构

数据模型 在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。 整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。 进入 zookeeper 安装的 …

心法利器[93] | 谈校招:技术面

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

大数据面试题:HBase的RegionServer宕机以后怎么恢复的?

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)HBase一个节点宕机了怎么办;2)HBase故障恢复 参考答案: 1、HBase常见故障 导…

抖音短视频seo矩阵系统源码开发部署技术分享

抖音短视频的SEO矩阵系统是一个非常重要的部分,它可以帮助视频更好地被搜索引擎识别和推荐。以下是一些关于开发和部署抖音短视频SEO矩阵系统的技术分享: 一、 抖音短视频SEO矩阵系统的技术分享: 关键词研究:在开发抖音短视频SEO矩…

助力保险行业数字化创新,麒麟信安参展2023中国财险科技应用高峰论坛

2023年7月27日,由中科软科技股份有限公司主办的“中国财险科技应用高峰论坛”在北京古北水镇成功举办。作为享誉中国保险科技界的盛会,本次活动以“数智保险 创新未来”主题,汇聚全国数百位保险公司主管领导、资深保险行业信息化专家&#xf…

【探讨】Java POI 处理 Excel 中的名称管理器

前言 最近遇到了一些导表的问题。原本的导表工具导不了使用名称管理器的Excel。 首先我们有两个Sheet。B1用的是名称管理器中的AAA, 而B2用的对应的公式。 第二个sheet,名为Test2: 这是一段简化的代码: public class Main {public static void mai…

Stable Diffusion - 真人照片的高清修复 (StableSR + GFPGAN) 最佳实践

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132032216 GFPGAN (Generative Facial Prior GAN) 算法,用于实现真实世界的盲脸恢复的算法,利用预训练的面部 GAN&#xf…

61 # http 数据处理

node 中的核心模块 http 可以快速的创建一个 web 服务 const http require("http"); const url require("url");// req > request 客户端的所有信息 // res > respone 可以给客户端写入数据 const server http.createServer();server.on("r…

Linux虚拟机中安装MySQL5.6.34

目录 第一章、xshell工具和xftp的使用1.1)xshell下载与安装1.2)xshell连接1.3)xftp下载安装和连接 第二章、安装MySQL5.6.34(不同版本安装方式不同)2.1)关闭防火墙,传输MySQL压缩包到Linux虚拟机2.2&#x…

【Docker 学习笔记】Docker架构及三要素

文章目录 一、Docker 简介二、Docker 架构1. Docker 客户端和服务器2. Docker 架构图3. Docker 运行流程图 三、Docker 三要素1. 镜像(Image)2. 容器(Container)3. 仓库(Repository) 一、Docker 简介 Dock…

解决el-table打印时数据重复显示

1.表格数据比较多加了横向滚动和竖向滚动,导致打印出问题 主要原因是fixed导致,但是又必须得滚动和打印 方法如下: 1. 2. is_fixed: true,//data中定义初始值 3.打印时设置为false,记得要改回true if (key 2) { this.is_fixed false //打…

vue 修改端口号

在根目录创建一个vue.config.js文件夹 module.exports {lintOnSave: false,devServer: {port: 3000,open: true} }运行后

HCIP--云计算题库 V5.0版本

在国家政策的支持下,我国云计算应用市场发展明显加快,越来越多的企业开始介入云产业,出现了大量的应用解决方案,云应用的成功案例逐渐丰富,用户了解和认可程度不断提高,云计算产业发展迎来了“黄金机遇期”…

ABB机器人10106“保养时间到”故障报警解决办法

ABB机器人10106“保养时间到”故障报警解决办法 如下图所示,机器人示教器提示:10106 到保养时间,应检修机器人。 如下图所示,点击右下方的“确认”, 如下图所示,打开菜单,点击进入程序编辑器, 如下图所示,点击“调试”—,首先点击PP移至Main,然后再调用例行程…

【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…