深度学习 - 注意力机制

1 深度学习中的注意力机制

        2014年Recurrent Modelsof Visual Attention -- NIPS 2014: 2204-2212

https://proceedings.neurips.cc/paper/2014/file/09c6c3783b4a70054da74f2538ed47c6-Paper.pdficon-default.png?t=M4ADhttps://proceedings.neurips.cc/paper/2014/file/09c6c3783b4a70054da74f2538ed47c6-Paper.pdf        2014年-2015年Attention in Neural Machine Translation -- ICLR 2015

https://arxiv.org/abs/1409.0473icon-default.png?t=M4ADhttps://arxiv.org/abs/1409.0473        2015年Attention-Based RNN in NLP and Image -- ICML 2015

http://proceedings.mlr.press/v37/xuc15.pdficon-default.png?t=M4ADhttp://proceedings.mlr.press/v37/xuc15.pdf        2015年-2016年Attention-Based CNN in NLP

        2017年Self-Attention in Neural Machine Translation

2 Recurrent Models of Visual Attention

1. RNN模型处理图像分类任务,采用强化学习的方法训练 -- 当要看的图片很大时,模仿人类看图片时会注意图片的某些位置 -- 关注图片重点信息,忽略不重点信息

        模型由如下几部分构成:

Glimpse Sensor:

        Glimpse Sensor提取图像输入,通过位置信息l_{t-1}(前一时刻传来的), x_t为输入数据,位置信息传到x_t后,将会对x_tl_{t-1}位置进行采样,按照图里的样子,在这个特定的位置,要采集3个patchs,比如初始的采样图像大小为8*8,接着采样的大小为(8 * 2) * (8 * 2)-- 最里面那个方框

        “2”表示的是一个因子,是相对前一次采样的尺寸大小的乘子,最后一次采样的大小为(8 * 2 * 2) * (8 * 2 * 2),这3个采样的照片的中心位置不变,就是前面传过来的l_{t-1},接下来对这三个采样的照片进行一个resize,接下来对这三个采样的照片进行一个resize,例如全部都重新设置成大小为8 * 8 尺寸的照片,最后得到 \rho (x_t,l_{t-1}) ,这样就把不同层次的信息组合了起来。

深度学习 - 注意力机制_第1张图片

 

Glimpse Network

        给定位置信息l_{t-1},和输入的图片x_t用Glimpse Sensor来提取数据\rho (x_t,l_{t-1}),经过线性表示【也就是经过一个普通的神经网络】得到\theta _g^0,位置信息也经过网络表示【同上】得到\theta _g^1,然后\theta _g^0\theta _g^1也经过一个线性层,结合两者得到\theta _g^2,Glimpse网络f(.;\theta _g^0,\theta _g^1,\theta _g^2)定义了用来产生glimpse representationg_t的注意力网络的可训练带宽限制传感器

深度学习 - 注意力机制_第2张图片

 Action and Location Extractor

        输入信息g_t和前一段隐藏层信息h_{t-1},通过RNN得到下一阶段输入的隐藏层信息,而隐藏层信息通过不完全可观察马尔科夫决策过程(POMDP)得到下状态a_t, 和下一阶段的位置信息l_t

action和location的提取

深度学习 - 注意力机制_第3张图片

 奖罚机制:在执行一次活动之后(意思也就是对一个输入图片,经过这个系统之后得出分类结果),如果分类正确,则判为1,否则判为0

2. 训练

        整个模型过程可以看做是一个局部马尔科夫决策过程。每个阶段的动作和位置只与上一阶段的动作和位置有关

                即展开RNN结构,以时间为序,整个过程可表示为: s_{1:t} = x_1,l_1,a_1,...,x_{t-1},l_{t-1},a_{t-1},x_t  -- 在这个分布的条件下最大化我们的奖赏函数;

                J(\theta ) = E_{p(s_{1:T};\theta )}[\sum_{t = 1}^{T}r_t] = E_{p(s_{1:T};\theta )}[R]

                最大化J不是一件简单的事情,因为这涉及到高维相互序列的期望,可能导致进入未知的环境空间;

                深度学习 - 注意力机制_第4张图片

 神经网络可作为非常好的特征抽取器和函数拟合器,与其他算法结合,训练出更理想的模型。

参考博客:【Recurrent Models of Visual Attention】(讲解)_David Wolfowitz的博客-CSDN博客

3 注意力机制在在神经机器翻译领域的应用

1. 神经机器翻译主要以Encoder-Decoder模型为基础结构

深度学习 - 注意力机制_第5张图片

 

        在神经机器翻译中,Encoder一般采用RNN或者LSTM实现

                从统计角度,翻译相当于寻找译句y,使得给定原句x时条件概率最大;

        得到上下文向量c的方法有很多,可以直接将最后一个隐状态作为上下文变量,也可对最后的隐状态进行一个非线性变换σ(⋅),或对所有的隐状态进行非线性变换σ(⋅)

深度学习 - 注意力机制_第6张图片

 解码器

        用给定的上下文向量c和之前已经预测的词{y_1,y_2,..,y_3}  

 现存问题:

        输入序列不论长短都会被编码成一个固定长度的向量表示,而解码则受限于该固定长度的向量表示

        这个问题限制了模型的性能,尤其是当输入序列比较长时,模型的性能会变得很差;

2. 神经网络模型注意力机制

        在这个新结构中,定义每个输出的条件概率为:p(y_i|y_1,...y_{t-1},x) = g(y_{i-1},s_{i},c_i);

        其中s_i为解码器RNN中的隐层状态:s_i = f(s_{i-1},y_{i-1},c_i);

        这里的上下文向量c_i取决于解码器状态序列,通过使用注意力系数a_{ij}h_j加权求得:c_i = \sum_{j = 1}^{T}a_{ij}h_j

 

深度学习 - 注意力机制_第7张图片

 注意力系数计算:

        a_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})}                 e_{ij} = a(s_{i-1},h_j) -- 反映i位置的输入和j位置输出的匹配程度--alignment mode

计算注意力系数的相似函数(alignment model)有以下几种:

深度学习 - 注意力机制_第8张图片

 3. 注意力机制的抽象理解

        Attention函数的本质可以被描述为一个查询(query)一系列(键key-值value)对的映射

深度学习 - 注意力机制_第9张图片

 Attention(Query,source) = \sum_{i =1}^{L_x}similiary(Query,Key_i)*Value_i

        Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

这里除以\sqrt{d_k}的目的是:防止QK相乘权重过大,最后归一化后出现梯度很小的情况,当计算出来的值过小则很难训练。

注意力系数计算:

        阶段1:根据Query和Key计算两者的相似性或者相关性;

        阶段2:对第一阶段的原始分值进行归一化处理;

        阶段3:根据权重系数对Value进行加权求和,得到Attention Value;

关于Q,K,V表示含义通俗易懂的例子:

        Q就相当于在淘宝中输入查询词汇,比如“裙子”

        K就相当于淘宝内部的数据库,有各式各样的词汇与图片;

        QK^T就相当于计算相似度,根据相似度将与裙子匹配的数据库中的词条找出来 -- 但是这还不是相似度,做了归一化才是相似度;

        V就是找出来的词条的价值,比如价格、购买量、品牌等,相当于物品的总和价值;

        相似度与价值的成绩得到每个物品的应得到分数,然后根据分数进行排序,得到最终的浏览页面顺序。

深度学习 - 注意力机制_第10张图片

 

4. 自注意力机制与注意力机制的区别

自注意力机制的QKV都在同一边,比如都在encoder端,或者都在decoder端;

注意力机制的Q,K,V分布在不同端,如Q在Decoder端,而KV在encoder端。

5. 多头自注意力机制与注意力机制区别

注意力机制是只用一组W^q,W^k,W^v来与字编码相乘;

而多头注意力机制是使用多组W^q_0,W^k_o,W^v_0,...,W^q_n,W^k_n,W^v_n来与字编码相乘。

深度学习 - 注意力机制_第11张图片

 6. Transformer 整体架构

深度学习 - 注意力机制_第12张图片

 参考: 国科大- 深度学习课件

你可能感兴趣的:(深度学习,transformer)