自注意力(Self-Attention)
一、自注意力机制概述
循环神经网络由于信息传递的容量以及梯度消失问题,实际上也只能建立短距离依赖关系。
为了建立长距离的依赖关系,可以增加网络的层数或者使用全连接网络。但是全连接网络无法处理变长的输入序列,另外,不同的输入长度,其连接权重的大小也是不同的。
这时,提出了自注意力模型,可以“动态”地生成不同连接的权重。
自注意力模型的结构:输入n个,输出也是n个,但是会考虑整个sequence(有context)
自注意力机制实际上是注意力机制的一种,它也是一种网络的构型,它想要解决的问题是网络接收的输入是很多向量,并且向量的大小也是不确定的情况,比如机器翻译(序列到序列的问题,机器自己决定多少个标签),词性标注(Pos tagging 一个向量对应一个标签),语义分析(多个向量对应一个标签)等文字处理以及图像处理中。
二、文字处理中单词向量编码的方式
在文字处理中,我们对单词进行向量编码通常有两种方式:
独热编码(one-hot encoding):用N位的寄存器对N个状态编码,通俗来讲就是开一个很长很长的向量,向量长度和世界上存在的词语的数量是一样多的,每一项表示一个词语,只要把其中的某一项置1,其他的项都置0,那么就可以表示一个词语,但这样的编码方式没有考虑词语之间的相关性,并且内存占用也很大。
词向量编码(Word Embedding):将词语映射(嵌入)到另一个数值向量空间,可以通过距离来表征不同词语之间的相关性。
拿词性标注举例,对一个句子来说每一个词向量对应一个标签,初始的想法是可以通过全连接神经网络,但全连接神经网络没有考虑在句子不同位置,单词可能表示不同含义的问题,并且当输入的句子很长,比如是一篇文章的时候,模型的性能下降严重。
三、 自注意力机制如何实现
针对全连接神经网络存在的这个问题,通过自注意力机制来解决,自注意力机制实际上是想让机器注意到整个输入中不同部分之间的相关性,它的实现方法如下:
对于每一个输入向量a,在本例中也就是每一个词向量,经过self-attention之后都输出一个向量b,这个向量b是考虑了所有的输入向量才得到的,这里有四个词向量a对应就会输出四个向量b
那么向量b是如何产生的呢?
自注意力模型经常采用QKV(Query-Key-Value)模式,计算过程如下图所示
步骤1:对于每一个向量a,分别乘上三个系数 , ,得到q,k,v三个值:
写成向量形式:
写成向量形式:
写成向量形式:
得到的Q,K,V分别表示 query,key和value(查询向量,键向量和值向量)
三个W就是我们需要学习的参数
步骤2:利用得到的Q和K计算每两个输入向量之间的相关性,也就是计算attention的值α,α的计算方法有多种,通常采用点乘的方式
写成向量形式:
矩阵A中的每一个值记录了对应的两个输入向量的Attention的大小α
步骤3:对A矩阵进行softmax操作或者relu操作得到A'
步骤4:利用得到的A'和V计算每个输入向量a对应的self-attention层的输出向量b:
,写成向量形式 O=V⋅A′
拿第一个向量对应的self-attention输出向量举例,它的产生过程如下:
先通过三个W矩阵生成q,k,v;然后利用q,k计算attention的值α,再把所有的α经过softmax得到α;最后对所有的v进行加权求和,权重是α,得到对应的self-attention输出的
总结:
四、自注意力机制的问题
自注意力机制虽然考虑了所有的输入向量,但没有考虑到向量的位置信息。在实际的文字处理问题中,可能在不同位置词语具有不同的性质,比如动词往往较低频率出现在句首。
有学者提出可以通过位置编码(Positional Encoding)来解决这个问题:对每一个输入向量加上一个位置向量e,位置向量的生成方式有多种,通过e来表示位置信息带入self-attention层进行计算。
自注意力(Self-Attention)相关推荐
- 序列到序列网络seq2seq与注意力机制attention浅析
序列到序列网络 序列到序列网络(Sequence to Sequence network),也叫做seq2seq网络, 又或者是编码器解码器网络(Encoder Decoder network), 是 ...
- 注意力机制(Attention)最新综述论文及相关源码
来源:专知 注意力机制(Attention)起源于模仿人类的思维方式,后被广泛应用于机器翻译.情感分类.自动摘要.自动问答等.依存分析等机器学习应用中.专知编辑整理了Arxiv上一篇关于注意力机制在N ...
- 注意力机制Attention Mechanism及论文
注意力机制Attention Mechanism Q,K,V 注意力分数 seq2seq中注意力机制的应用 注意力机制源于对人类视觉的研究.在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息 ...
- 关于《注意力模型--Attention注意力机制》的学习
关于<注意力模型--Attention注意力机制>的学习 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程.在github上找到一份基于 ...
- 翻译: 详细图解Transformer多头自注意力机制 Attention Is All You Need
1. 前言 The Transformer--一个使用注意力来提高这些模型的训练速度的模型.Transformer 在特定任务中的表现优于谷歌神经机器翻译模型.然而,最大的好处来自于 The Tran ...
- 图像处理注意力机制Attention汇总(附代码)
原文链接: 图像处理注意力机制Attention汇总(附代码,SE.SK.ECA.CBAM.DA.CA等) 1. 介绍 注意力机制(Attention Mechanism)是机器学习中的一种数据处理方 ...
- 注意力机制Attention详解
注意力机制Attention详解 一.前言 2018年谷歌提出的NLP语言模型Bert一提出,便在NLP领域引起热议,之所以Bert模型能够火出圈,是由于Bert模型在NLP的多项任务中取得了之前所有 ...
- 神经网络注意力机制--Attention in Neural Networks
Attention in Neural Networks and How to Use It http://akosiorek.github.io/ml/2017/10/14/visual-atten ...
- VALSE学习(四):注意力机制-Attention Network
VALSE2019 会议论文 一.精细化图像理解与多媒体内容创作 Trilinear Attention Sampling Network 近年来,精细化图像识别任务通常采用具有"注意力&q ...
- 论文阅读: 图像分类中的注意力机制(attention)
本文简要总结一下attention机制在图像分类任务中的应用.attention作为一种机制,有其认知神经或者生物学原理: 注意力的认知神经机制是什么? 如何从生物学的角度来定义注意力? 在计算机视觉 ...
最新文章
- KVM中virtio-user工作思路(十二)
- golang struct 转map 及 map[string]*Struct 初始化和遍历
- SpringBoot_02 Spring的Java配置方式
- 3. Nest Provider
- 【Markdown编辑器】LaTeX公式教程
- FP Tree算法原理总结(转)
- 吐血整理!12种通用知识图谱项目简介
- Tomcat BIO . NIO . ARP 配置
- 如何关闭小娜进程_Python多进程之进程间通信 - Pipe amp; Queue
- 微型计算机是一种将CPU,Bwnhlq计算机一级考试选择题题库之微型计算机基础题及答案(XX年最新版)1.doc...
- linux常用指令(持续更新……)
- gis地图数据获取91卫图免费获取方法
- 重装系统后如何恢复oracle10g数据…
- 数据链路层的成帧方法
- 科学计算机解三角函数方程,用科学计算器解方程 急!!!
- linux netstat命令:网络状态查看命令
- 32.0.概率论与数理统计-依概率收敛,切比雪夫不等式
- Ubuntu20.04 LTS装Livesuit的方法
- linux上有趣的项目,介绍几款有趣的开源项目
- sap货物移动相关的bapi(MIGO/MB1A)