【机器学习】Attention机制的一些整理与理解
写在前面
由于最近需要用到Attention机制,看了一些相关的论文以及介绍等,所以打算将其整理一下。关于Attention机制的一些背景知识就不做过多介绍了,做NLP研究的同学一般对其不会陌生。不熟悉的可以看Google的文章 Attention is all you need。Attention机制目前已经成为各种任务,如序列建模或者转换模型的重要组成部分,它可以允许建立依赖关系而不需考虑输入或者输出序列中的距离。
Sequence2Sequence的实例
下面的图和视频来自:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/真的是一个很生动形象的讲解blog。
在一个常见的sequence2sequence模型中,其模型部分常由一个encoder和一个decoder组成。encoder用于处理输入序列,并将其转换为向量,这个向量称为context。之后context被输入decoder,decoder逐项生成输出序列。在NLP中,为了捕获序列中的信息,encoder和decoder都常用RNN来进行实现。
在RNN中, 每个time step都需要有两个输入,一个是输入序列中的一个word,另一个是hidden state。在每次输入新的word时,它都需要被表示为一个向量。将word转换为向量通常会用到一系列的word embedding(词嵌入)算法,这类算法可以将words转换到向量空间中,以便于计算,同时也可以捕获每个word的含义信息。一般来说,在用到word embedding时,要么需要用到相关领域别人训练好的word embeddings,要么需要自己用本地的数据来训练。下图展示了一个word embedding的实例。
还是结合RNN的例子,下一个time step,RNN输入第二个输入向量和hidden state来创建当前时刻的输出,以此往后推。由于encoder和decoder都是由RNN实现,所以它们是进行同样的处理过程。需要注意的是,encoder最后一次的hidden state实际上就是传入decoder的context。整个过程可以看一下下面的gif,原视频可以在上面的blog链接中找到:
引入Attention机制
这种从输入序列的相关部分放大信号的能力使得注意力模型比没有注意力的模型产生更好的结果。
当面临长序列时,处理一些context中的依赖关系就会陷入瓶颈。一种解决方法就是通过引入Attention机制,其中,Attention机制可以允许模型聚焦关注输入序列中所需要的部分。 引入了Attention机制后的模型,它可以将输入序列中相关部分的作用进行放大,以实现比没有Attention的模型更好的效果。
与前面的例子进行对比,引入了Attention机制之后,主要有两点不同:
一是encoder传入了所有的hidden state给decoder,而不是只有之前的最后时刻的hidden state。如下面的gif所示。
二是引入Attention机制之后,为了聚焦输入序列中的关联部分,decoder在产生输出之前,做了一些额外的工作:
1、接收所有通过encoder得到的hidden states。
2、给每个来自encoder的hidden state一个score,并将每个hidden state的score进行softmax操作。
3、每个hidden state乘以它对应的softmaxed score,以此来放大高score的hidden state,缩小低score的hidden state,最后将加权的hidden state相加作为decoder的输入context向量,整个过程如下图所示:
从上面的过程中可以看到,最为关键的步骤就是对hidden states进行score,下面来介绍score的步骤:
1、引入了Attention机制的decoder先接收结束符,以及一个初始化的hidden state。然后decoder会产生一个新的hidden state以及一个output(被丢弃)。
2、Attention Step:通过encoder得到的hidden states和decoder产生的hidden state计算一个context向量。
3、通过decoder得到的hidden state和context被concatenate 为一个向量。
4、将concatenate后的向量通过一个前馈神经网络(同模型一起训练得到),前馈神经网络的输出作为这个time step输出的word。
5、对下一time step重复这个过程。
过程如下图所示:
REF
https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/
【机器学习】Attention机制的一些整理与理解相关推荐
- Glove与Attention机制资料的整理
前言 2021.7.31 学习是一个持续的过程,重新梳理一下自己的文章.突然发现这篇文章好像是之前组会的时候准备汇报资料学习的参考文献2333.真的很推荐去看. 1 Glove 论文出处:<&l ...
- 干货|理解attention机制本质及self-attention
点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 上一篇,我们讲述了attention的知识,这篇接上篇,更加深入的理 ...
- 深入理解attention机制
深入理解attention机制 1. 前言 2. attention机制的产生 3. attention机制的发展 4. attention机制的原理 5. attention的应用 参考文献 1. ...
- 理解LSTM/RNN中的Attention机制
转自:http://www.jeyzhang.com/understand-attention-in-rnn.html,感谢分享! 导读 目前采用编码器-解码器 (Encode-Decode) 结构的 ...
- 系统学习NLP(二十三)--浅谈Attention机制的理解
转自:https://zhuanlan.zhihu.com/p/35571412 Attentin机制的发家史 Attention机制最早是应用于图像领域的,九几年就被提出来的思想.随着谷歌大佬的一波 ...
- 引读attention机制--个人理解
文章目录 1. 意会--大脑注意到某物 2. 言传--分解注意过程 2.1 言传的准则 2.2 数据形式 和 大脑潜意识动作 2.3 观察分解例子 2.4 注意过程言传化 3. 公式化--注意机制 3 ...
- 深入理解CV中的Attention机制之SE模块
CV中的Attention机制汇总(一):SE模块 Squeeze-and-Excitation Networks 论文链接:Squeeze-and-Excitation Networks 1. 摘要 ...
- Attention机制理解笔记(空间注意力+通道注意力+CBAM+BAM)
Attention机制理解笔记 声明 Attention分类(主要SA和CA) spitial attention channel attention SA + CA(spitial attentio ...
- 理解Attention机制原理及模型
目前采用编码器-解码器 (Encode-Decode) 结构的模型非常热门,是因为它在许多领域较其他的传统模型方法都取得了更好的结果.这种结构的模型通常将输入序列编码成一个固定长度的向量表示,对于长度 ...
最新文章
- TensorFlow学习笔记之三(神经网络的优化)
- 老万的java技术书单:你还在吃快餐吗?
- Spring 3.2.* MVC通过Ajax获取JSON数据报406错误
- 生产环境该如何选择lvs的工作模式,和哪一种算法
- 前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron
- irule jar包无法导入_poi表格的导入导出
- 发生无法识别的错误_车牌识别系统的核心部件抓拍摄像机怎么安装?
- 10.leetcode83-Remove Diplicates from Sorted List
- system.data oracleClient 需要Oracle客户端8.1.7或high
- SQL注入详解,看这篇就够了
- java中常用的类——System类
- python实例 输出你好
- 原声php 读取excel乱码_php读取excel文件,输出的值乱码解决方法
- froala + vue + plupload替换自带上传功能
- Zhuperb!朱婷登顶知名排球网站年度搜索热度榜
- 一个屌丝程序员的青春(二六五)
- php会员分级,php如何查找会员无限分类的所有上级和所有下级
- 从Docker镜像构建演化史来了解多阶段构建的影响
- 计算机组装 仿真交互,《计算机硬件组装》仿真交互系统设计与实现.doc
- 图像仿射变换原理4:组合变换及对应变换矩阵
热门文章
- SQL server删除数据库所有表数据
- 乐锋游戏-棋牌竞技赢万元大奖
- gpj文件怎么转化成html,MP4视频中提取的音频默认是MP3格式?如何转成WAV?
- VS2015企业版(含安装序列号)
- 史蒂夫·鲍尔默也用Firefox和Google
- 时间介词 in、at、on如何用?
- 基于yolov5的口罩检测
- 开关电源之电感设计 (转)http://www.cnblogs.com/gmh915/archive/2009/09/30/1576988.html
- 雷达系统与原理期末个人总结
- 罗技 mk275 键盘不能输入的解决方案