本能
在认知神经学中,注意力是一种人类不可或缺的复杂认知功能,指人可以在关注一些信息的同时忽略另一些信息的选择能力。在日常生活中,我们通过视觉、听觉、触觉等方式接收大量的感觉输入。但是我们的人脑可以在这些外界的信息轰炸中还能有条不紊地工作,是因为人脑可以有意或无意地从这些大量输入信息中选择小部分的有用信息来重点处理,并忽略其他信息。这种能力就叫做注意力。
------ 摘自《百度百科》
想解决什么问题?
深度神经网络中引入注意力机制,主要想解决时序模型中的上下文问题。
RNN是时序建模的一个最常见的方法,RNN通过形如f(f(f(x)))的递归形式顺序表达序列。
RNN存在梯度爆炸、梯度消失的问题,对于长期依赖的上下文情况比较吃力;同时串行计算,尤其是当序列很长时,导致训练时间复杂度高。
Attention意图非常简单,尝试简化上下文问题,直接显式建立与相关位置的关系。
在深度学习中,直接的输入一般是原始文本、图片等信息,这里的上下文关系一般是基于初步提取(比如embedding)之后的特征,理论上,并不限制具体输入。
注意力机制就是通过线性加权上下文源序列的特征来表征目标位置的特征。
是的,就是如此原始,如此简单。
眼花缭乱的各种形式只是在表达选择哪些源序列、目标位置在不在源序列里面以及如何形式化权重。
当目标位置在序列里面,就是self Attention;当考查的是整个序列时,就是global Attention;当考查的是局部序列时,就是local Attention。
global/local Attention
比如,原问题:
Global Attention层设计:
local Attention层的设计分成两步,先选择关联的局部序列,再计算权重。
additive Attention
self Attention
self Attention机制是最重要的一种Attention策略,重新表达序列内部每一个位置的包含自身的上下文特征。
如果把源序列的原始特征矩阵用V表示,采用特征之间的点积作为相似度度量,那么上图序列self Attention之后,就变为V x V x V。
但是采用特征向量且点积作为相似度是个很强的假设,可以推广为Q x K x V,其中(Q x K)表示权重,K表示V的某种在Q空间的映射,Q、K、V只需要形状(shape)一致即可,具体内容由机器模拟。
Multi-Head Attention
Multi-Head Attention是并行表示多个上下文c,然后期望不同的Attention有不同的关注点,最终组合出更多样的注意力机制。
以下是Transformer中的Multi-Head Attention机制,每一个Head的Q、K、V输入都加了线性层,会使Attention更加多样性。
应用案例
注意Attention层的具体位置。
本文暂时没有评论,来添加一个吧(●'◡'●)