Attention 详解深度学习中的注意力机制

0 前言
大家好,欢迎来到“自由技艺”的知识小馆 。今天我们来探讨下深度学习中的 Attention 机制,中文名为“注意力” 。本文内容结构组织如下:
1 为什么需要引入 Attention 机制?
2 深度学习中的 Encoder-Decoder 框架
3 Soft Attention 模型
4 Attention 机制的本质
5 Self Attention 模型
6 总结
1 为什么要引入 Attention 机制?
当我们用深度 CNN 模型识别图像时,一般是通过卷积核去提取图像的局部信息,然而,每个局部信息对图像能否被正确识别的影响力是不同的,如何让模型知道图像中不同局部信息的重要性呢?答案就是注意力机制 。

Attention 详解深度学习中的注意力机制

文章插图
人类视觉注意力
视觉注意力机制是人类大脑的一种天生的能力 。当我们看到一幅图片时,先是快速扫过图片,然后锁定需要重点关注的目标区域 。比如当我们观察上述图片时,注意力很容易就集中在了人脸、文章标题和文章首句等位置 。
试想,如果每个局部信息都不放过,那么必然耗费很多精力,不利于人类的生存进化 。同样地,在深度学习网络中引入类似的机制,可以简化模型,加速计算 。
另外,利用循环神经网络去处理 NLP 任务时,长距离“记忆”能力一直是个大难题,而引入“注意力机制”也能有效缓解这一问题 。
2 Encoder-Decoder 框架
常见的深度学习模型有 CNN、RNN、LSTM、AE 等,其实都可以归为一种通用框架 - Encoder-Decoder.
Attention 详解深度学习中的注意力机制

文章插图
Encoder-Decoder 框架
在文本处理领域,有一类常见的任务就是从一个句子(Source)生成另一个句子(Target),比如翻译,其中 xi 是输入单词的向量表示,yi 表示输出单词 。
Attention 详解深度学习中的注意力机制

文章插图
 
Source 经过 Encoder,生成中间的语义编码 C,
Attention 详解深度学习中的注意力机制

文章插图
 
C 经过 Decoder 之后,输出翻译后的句子 。在循环神经网络中,先根据 C 生成 y1,再基于(C,y1)生成 y2,依此类推 。
Attention 详解深度学习中的注意力机制

文章插图
 
3 Soft Attention 模型
Attention 详解深度学习中的注意力机制

文章插图
【Attention 详解深度学习中的注意力机制】RNN 模型
传统的循环神经网络中,y1、y2 和 y3 的计算都是基于同一个 C. 深入思考一下,发现这可能并不是最好的方案,因为 Source 中不同单词对 y1、y2 和 y3 的影响是不同的,所以,很自然地就有了如下思路:
Attention 详解深度学习中的注意力机制

文章插图
引入注意力机制的 Encoder-Decoder 框架
上述改良模型中的 C1、C2、C3 是怎么计算的呢?其实也非常简单,就是在计算 C1、C2 和 C3 时,分别使用不同的权重向量:
Attention 详解深度学习中的注意力机制

文章插图
 
上述公式中的权重向量 (a11, a12, a13)、(a21, a22, a23)、(a31, a32, a33) 又是如何计算的呢?请看下图 。
Attention 详解深度学习中的注意力机制

文章插图
注意力分配的概率计算
上述模型中: h1 = f(Tom)、h2 = f(h1, Chase)、h3 = f(h2, Jerry).
当计算出 Hi-1 之后,通过函数 F(hj,Hi-1) 获得输入语句中不同单词(Tom、Chase、Jerry)对目标单词 yi 的影响力,F 的输出再经过 Softmax 进行归一化就得到了符合概率分布取值区间的注意力分配概率 。其中,F 函数的实现方法有多种,比如余弦相似度、MLP 等 。
Attention 详解深度学习中的注意力机制

文章插图
google 神经网络机器翻译系统结构图
4 Attention 机制的本质
现在,请你把 Source 想象成是内存里的一块存储空间,它里面存储的数据按 <Key, Value> 存储 。给定 Query,然后取出对应的内容 。这里与一般的 hash 查询方式不同的是,每个地址都只取一部分内容,然后对所有的 Value 加权求和 。
Attention 详解深度学习中的注意力机制

文章插图
Attention 的实质:软寻址(soft addressing)
公式描述如下:
Attention 详解深度学习中的注意力机制


推荐阅读