Self-Attention详解
文章目录
- Sequence数据的处理
- Sequence Labeling(输入和输出的大小一样)
- Self-Attention内部机理
- 如何求解b?
- Multi-head Self-Attention
- Positional Encoding
- Self-Attention for Image
- Self-Attention v.s. CNN
- Self-Attention v.s. RNN
- 总结
Sequence数据的处理
Self-Attention是用来处理Sequence数据的。
输入是Vector Set(Sequence)。
比如:
- 输入是一段文字:每个字会对应一个vector。(编码方式:①one-hot编码;②word embedding)
- 输入是一段声音信号:设置window(一般window的大小是25ms),每个window中的声音信号作为一个vector。(例:如果window滑动的step=10ms,window大小是25ms,那么1s的声音信号可以转化为100个vector的集合)
- 输入是一个Graph:每个node是一个vector。(向量是node的特征)
输出是什么?
- 每个输入的vector对应一个label:词性标注任务
- 整个sequence输入一个label:情感分析、语者辨认
- 机器决定输出的label的个数(Seq2Seq任务):翻译
Sequence Labeling(输入和输出的大小一样)
希望网络可以考虑整个sequence的信息。
首先想到全连接网络,但是每个输入的sequence的长度是不确定的,因此如果想要使用全连接网路哈哈哈没法确定神经元的个数~~
所以,使用Self-Attention:可以实现每个输出都会考虑整个Sequence的信息。
如图所示,一个Self-Attention块的输入是input sequence或者是上一层的输出。
每个输出b都会考虑整个输入序列的信息。
Self-Attention内部机理
如何求解b?
1、首先求解输入之间的相关性权重α。
求解α的方法:
(1)Dot-product
(2)Additive
Self-Attention中的α的求解方法:
然后经过一个激活层,此处是Softmax也可以是其他的,比如ReLU。
使用矩阵运算总结Self-Attention的求解机理:
Multi-head Self-Attention
实现不同类型的relevance。
Positional Encoding
前面讲的Self-Attention中没有涉及位置信息,因此考虑加入位置编码。
上述的positional encoding是hand-crafted的。
也有其他的positional encoding方法此处就不列举了。
Self-Attention for Image
可以将image看成一个w*h的sequence,每个像素的vector中包含的是像素的RGB三通道值。
或者将image分块,每块是一个输入vector。
Self-Attention v.s. CNN
其实CNN可以看成是Self-Attention中的一种情况。
对于Self-Attention其实是针对一个query像素点求解其与其他所有像素点的k值(即relevance)通过k值得到其他像素点对该query像素点的相关性,
而CNN是使用卷积核划定了相关像素点的范围。
Self-Attention模型相比于CNN有更高的灵活性因此训练需要更多的数据。
Self-Attention v.s. RNN
RNN也是一种处理序列数据的模型。
- 相比于Self-Attention,RNN也可以通过循环RNN实现每个输出与所有输入的相关性。
但是单向的RNN只能实现,后面的输出与其前的输入是相关的。 - 并且RNN后面的输出对于距离较远的输入的依赖关系比较难实现,需要一直将前面的所有输入保存在内存中,而Self-Attention只需要在内存中保存计算出的Q、K、V矩阵即可。
- RNN是一个串行的流程,Self-Attention是并行处理的。
总结
Self-Attention可以很好地处理序列数据,可以实现序列数据的全依赖。
但是Self-Attention的运算量很大!需要更多的数据训练。
Self-Attention详解相关推荐
- seq2seq + attention 详解
seq2seq + attention 详解 作者:xy_free \qquad 时间:2018.05.21 1. seq2seq模型 seq2seq模型最早可追溯到2014年的两篇paper [1, ...
- 史上最小白之Attention详解
1.前言 在自然语言处理领域,近几年最火的是什么?是BERT!谷歌团队2018提出的用于生成词向量的BERT算法在NLP的11项任务中取得了非常出色的效果,堪称2018年深度学习领域最振奋人心的消息. ...
- 深度学习之图像分类(十七)-- Transformer中Self-Attention以及Multi-Head Attention详解
深度学习之图像分类(十七)Transformer中Self-Attention以及Multi-Head Attention详解 目录 深度学习之图像分类(十七)Transformer中Self-Att ...
- Self Attention 详解
Self Attention 详解 前言 注意力机制(Attention),之前也是一直有所听闻的,也能够大概理解 Attention 的本质就是加权,对于 Google 的论文<Attenti ...
- 注意力机制Attention详解
注意力机制Attention详解 一.前言 2018年谷歌提出的NLP语言模型Bert一提出,便在NLP领域引起热议,之所以Bert模型能够火出圈,是由于Bert模型在NLP的多项任务中取得了之前所有 ...
- 史上最直白之Attention详解(原理+代码)
目录 为什么要了解Attention机制 Attention 的直观理解 图解深度学习中的Attention机制 总结 为什么要了解Attention机制 在自然语言处理领域,近几年最火的是什么? ...
- 注意力机制详解(Attention详解)
注意力机制与人眼类似,例如我们在火车站看车次信息,我们只关注大屏的车次信息,而忽略大屏外其他内容,从而导致钱包被偷... 注意力机制只关注重点信息,忽略不重要的信息,关注最核心的内容. 主要就是这个公 ...
- 史上最小白之Transformer详解
1.前言 博客分为上下两篇,您现在阅读的是下篇史上最小白之Transformer详解,在阅读该篇博客之前最好你能够先明白Encoder-Decoder,Attention机制,self-Attenti ...
- Transformer原理详解
Transformer原理详解 一.前言 在学习Transformer之前,需要掌握Attention机制.Encoder-Decoder.Self-Attention机制的基础知识,可以参考本人的博 ...
- 【转载】Transformer详解
转载于https://blog.csdn.net/Tink1995/article/details/105080033 文章目录 1.前言 2.Transformer 原理 2.1 Transform ...
最新文章
- xgboost api
- 小程序订单点击不同页面_小程序跳转页面参数丢失
- 耐寂寞谋定未来-农业大健康·国情讲坛:乡村振兴守公益心
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...
- YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】
- 跨域会报40几_关于跨域,以及跨域的几种方式
- ffmpeg-win32-v3.2.4 下载_iTOP-4412开发板android4.4代码下载和编译
- centos7安装redmine3,并升级redmine1.8到3
- python-pymysql模块的使用入门
- 一阶电路中的时间常数_你知道RC电路和RL电路中时间常数的来源么?
- Python机器学习:多项式回归与模型泛化008模型泛化与岭回归
- 苹果充电配件MagSafe Duo Charger现已发售
- CentOS网络配置与重启方法
- C# MVC Controller依赖注入的办法
- Socket 编程之_TCP ☎☎☎
- layui树形美化_Layui导航树美化 - walkwithdream的个人空间 - OSCHINA - 中文开源技术交流社区...
- 模拟信号和数字信号的区别和特点
- [转载]中国文明网:为青少年“防沉迷”汇聚合力
- 基于Qt实现桌面宠物
- C 语言计算双色球的中奖率
热门文章
- 计算机科学与技术考研双非,2021西安电子科技大学计算机科学与技术考研真题经验参考书...
- 在vue开发中会遇到methods方法里有一个函数嵌套另一个函数,最内层函数this取不到data数据,该怎么解决?
- python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据
- 28 爬虫 - re 正则 匹配中文
- 周训练计划之(韦德分化训练法:胸、肩、背、腿、腹)
- anti-fraud-admin 反欺诈后台
- Verilog 实现千兆网UDP协议 基于88E1111--数据发送
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- mysql limt取指定数据条数 top取指定数据条数
- vue开发公众号-关闭浏览器返回主公众号