[ 综述阅读·机器视觉 ] Attention mechanisms and deep learning for machine vision:
A survey of the state of the art
推荐理由:一篇较新的综述,主在介绍Attention和配套的深度学习机制在机器视觉领域的最新成果,作者把来龙去脉讲得较为明白,一篇好文
1.摘要&简介
- 最近几年,NLP领域较火的用于上下文预测识别的Attention机制获得了学界很大的认可,这引起了很多其他领域学者的注意。其中博主认为最主要的原因是,我们生活当中很多数据都是需要经过推理得来的,这就意味着很多“未知情况”的预测是需要根据已有的上下文来推理的。
- 而上述这种需求,简单来说,恰好是Attention所擅长的事情,只要对已有的数据进行恰当的Embedding就能实现相应功能。
- 基于以上这种思想,越来越多的计算机视觉领域专家也开始采用Attention机制。
- 博主说:很多Sequence或Query基础的运算,也可以通过Attention机制来处理,你比如VRP问题,RCPSP问题,这种有先后时序和序列输出的问题,都能采用类似的方法来训练并求解。
1.1.自注意力机制
- 自注意力机制旨在为序列中的每个元素建立一个专门用于关系预测的网络(不觉得某种网络跟其思想很像么?)
- 令一个含有n个实体的序列为 ( x 1 , x 2 , … x n ) \left(\mathbf{x}_{1}, \mathbf{x}_{2}, \ldots \mathbf{x}_{n}\right) (x1,x2,…xn) by X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} X∈Rn×d,其中d为embedding之后的维度大小。自注意的目的是在对整个语境知识中的每一个元素进行编码后,捕捉所有n个元素之间的依赖关系。
- 但完成上面这个过程,首先需要将一个序列转换为3中可学习的矩阵(是不是有点像CNN里的卷积核?哈哈!):Queries ( W Q ∈ R n × d q ) \left(\mathbf{W}^{Q} \in \mathbb{R}^{n \times d_{q}}\right) (WQ∈Rn×dq),Keys ( W K ∈ R n × d k ) \left(\mathbf{W}^{K} \in \mathbb{R}^{n \times d_{k}}\right) (WK∈Rn×dk),Values ( W V ∈ R n × d v ) \left(\mathbf{W}^{V} \in \mathbb{R}^{n \times d_{v}}\right) (WV∈Rn×dv)。
- 有了上述三个卷积核,啊不对,三个特征提取权重矩阵后,对原始序列 X \mathbf{X} X进行如下运算,得到三个矩阵(注意,非常重要,Attention的基础思想):
Q = X W Q , K = X W K and V = X W V \mathbf{Q}=\mathbf{X} \mathbf{W}^{Q}, \mathbf{K}=\mathbf{X} \mathbf{W}^{K} \text { and } \mathbf{V}=\mathbf{X} \mathbf{W}^{V} Q=XWQ,K=XWK and V=XWV - 有了上述三种预处理,那自注意力层的输出就可以表达为:
Z = softmax ( Q K T d q ) V (1) Z=\operatorname{softmax}\left(\frac{\mathbf{Q} \mathbf{K}^{T}}{\sqrt{d_{q}}}\right) \mathbf{V}\tag{1} Z=softmax(dq