对Attention机制的初步理解

注意力机制即 Attention mechanism在序列学习任务上具有巨大的提升作用,在编解码器框架内,通过在编码段加入Attention模型,对源数据序列进行数据加权变换,或者在解码端引入Attention 模型,对目标数据进行加权变化,可以有效提高序列对序列的自然方式下的系统表现。

网上已经有很多大佬博主对Attention机制进行了详细的解释,而且侧重点都有的不同。作为一个初次接触Attention的小白,我暂时抛开attention内部公式与错综复杂的结构不写,谈一下对这个机制的理解。

LSTM

在传统的LSTM网络中,虽然增加了遗忘门等函数,缓解了因序列过长而导致神经网络无法正常收敛的问题,但随着神经网络结构越来越广泛的应用,LSTM这种输入与输出一一对应的网络模型渐渐也无法满足人们的需求。对Attention机制的初步理解

Attention

attention机制最初是为了解决当输入序列非常长时,模型难以学到合理的向量表示。

借用参考博客中的话
Attention机制的基本思想是:打破了传统编码器-解码器结构在编解码时都依赖于内部一个固定长度向量的限制。
Attention机制的实现是: 通过保留LSTM编码器对输入序列的中间输出结果,然后训练一个模型来对这些输入进行选择性的学习并且在模型输出时将输出序列与之进行关联。

attention机制会先保留LSTM所有时刻的隐藏层的输出向量h
对Attention机制的初步理解
然后定义一个新的match结构,从第一个状态开始对所有 h 进行匹配,得到匹配过后的权重,然后对这些权重用softmax转换成概率对Attention机制的初步理解
然后计算出其加权向量和,作为下一次的输入。

算出C0C0之后,把这个向量作为 RNN 的输入。然后第一个时间点的输出的编码z1z1由c0c0和初始状态z0z0共同决定。我们计算得到z1z1之后,替换之前的z0z0再和每一个输入的encoder的vector计算匹配度,然后softmax,计算向量加权,作为第二时刻的输入……如此循环直至结束。

Attention思想

attention在自然语言处理取得的巨大成功让人们禁不住去思考,这种思想能否运用到其他模型之中呢?
以下是我在网上找的论文和相关代码,侵删

文本分类网络:Hierarchical Attention Networks for Document Classification 论文: https://arxiv.org/abs/1707.00896v1 代码: https://github.com/triplemeng/hierarchical-attention-model

图像分类:http://www.sohu.com/a/161793789_642762 暂未找到代码

目标检测:AttentionNet: Aggregating Weak Directions for Accurate Object Detection 论文:https://arxiv.org/abs/1506.07704 代码:https://github.com/sayvazov/AttentionNet