Attention Machnism:原理及其实现 - 图1

    转载自:Datawhale(ID:Datawhale)

    作者:yif

    本文8434 字 41 图,建议阅读22 分钟

    本文介绍深度学习中的 Attention 模型。

    Attention 的产生

    起因:《Sequence to Sequence Learning with Neural Networks》

    Attention 模型的引入原因:

    1. seq2seq 将输入序列都压缩成一个固定大小的隐变量,就像我们的压缩文件一样,这个过程是有损压缩的,会迫使丢失许多输入序列中的信息;
    2. 存在着难以对齐的问题。比如中译音 “我爱你”“I love you”, 输入序列中的“我” 应该与 “I” 对齐 (贡献最大),然而在 seq2seq 模型中,“我” 对 “I”,”love”,”you” 的贡献都是一致的。

    Attention Machnism:原理及其实现 - 图2

    Attention 的发展

    Show, attend and tell: Neural image caption generation with visual attention

    本文可以算是第一篇 Attention 论文。

    Attention Machnism:原理及其实现 - 图3

    该任务是实现图文转换。与前面讲述的 seq2seq 的问题一样,在之前的图文转换任务中也是存在着难以对齐的问题。所谓难以对齐就是毫无重点。

    本文提出了两种 attention:

    1. sort Attention
    2. hard Attention

    本文的模型结构:

    Attention Machnism:原理及其实现 - 图4

    将图片通过一个 CNN 转换成的 LD. 这里称 L 个向量为 L 个注释向量 (annotation vector),D 为特征维度,可以认为提取了图片中 L 个区域的特征。对这 L 个区域向量加权相加来表示这张图片。由于不同时刻的关注点是不同的,annotation vector 还要与 decoder 中的隐状态进行交互,以便知道下一时刻的关注区域。

    Attention Machnism:原理及其实现 - 图5

    这里编码器是 VGG,解码器是 LSTM。LTSM 输入是不同时刻的图片的关注点信息,然后生成当前时刻的单词。

    Attention 的计算

    如上所属,attention 的值不仅与 annotation vector 有关,还与上一时刻解码器的隐状态有关。因此有:

    Attention Machnism:原理及其实现 - 图6

    其中 t 表示时刻 t,i 表示第 i 个区域,a 是我们得到的 attention weight 分布。

    f 实际上是对齐函数,用于计算对齐的分数,常见的对齐函数有:dot product,general,multilayer perceptron。

    1,Soft attention:直接使用 attention 的权重对 L 个向量加权相加,这么做的好处是整个问题是可微的,可以利用 BP end to end。

    Attention Machnism:原理及其实现 - 图7

    2,Hard attention:Hard attention 很粗暴,挑出最大权重的向量,剔除其余向量 (置 0)。显然这种形式的模型是不可微的,为了实现 BP,这里采用蒙特卡洛采样的方法来估计模块的梯度。

    Attention Machnism:原理及其实现 - 图8

    帮助我们在 t 时刻选出了第 i 个向量是我们最后选中的的向量,引入一个变量, 当区域 i 被选中时取值为 1,否则为 0. 则有:

    问题如何生成, 在本文中,将视为隐变量,为参数是的多元伯努利分布 (伯努利是两点分布)

    1. pip install torch
    2. from math import sqrt()