[论文阅读] Attention is all your need(从CV角度看Transformer)

动机

这篇文章做的任务是机器翻译。而前面使用广泛的RNN等网络只能对距离较近的词建模较高的关联性,而这篇文章提出一个名为Transformer的网络,具有self-attention机制,能对所有词进行关联性学习,无论远近。

方法

从CV的角度看,Transformer(后面称trans)和SENet有些像,其本质是在做特征的重标定,让特征中相关性更强的特征有更多的注意力。是一个很好的特征提取器。

例如I arrived at the bank after crossing the river.这句话的翻译,结合river可以知道bank的意思是河岸而不是银行,所以bank和river是相关的,和after等是不想关的。而在trans中,这一过程表现为:拿着这句话每一个单词(例如bank)去和自己匹配,找到after、crossing等,都不想关,而river是相关的,所以经过attention后的特征,就要建模这种相关性,也就是在bank-river上花的注意力更大,权重更大。

作者认为,attention实际上就是一个函数,从一个特征变到另一个更好的特征。作者设计这个函数时,提出了query,key,value三个概念。上面的例子中,bank就是query,after、crossing、river都是key,query和key相互作用计算出一个权重,加权到value上,形成新的特征,就是这篇文章做的核心事情。

具体而言,作者递进地提出了他做self-attention的方法:Scaled Dot-Product Attention和Multi-Head Attention。第一个过程就是一个重加权的过程:

[论文阅读] Attention is all your need(从CV角度看Transformer)_第1张图片

Q,K,V就是query,key,value,都是向量,由网络前面的特征提取器提取而来。最直观的想法,就是Q=K=V,因为是自监督,Q和K就是一样的东西。但后面说明了这种效果不一定好,所以作者做了进一步改进。dk是一个超参数。这就是作者对self-attention的基础实现。

进一步,作者认为把Q,K,V投影到不同的空间,会使得网络表达能力更强,所以作者设计了多个线性变换矩阵(可学的),即multi-head attention,如下图所示:

[论文阅读] Attention is all your need(从CV角度看Transformer)_第2张图片

W就是上面所说的多个线性变换矩阵。head1到headh就是作者将Q,K,V进行不同的映射后得到的最终特征,叠加后输出。最终的网络结构如下图所示:

[论文阅读] Attention is all your need(从CV角度看Transformer)_第3张图片

Input就是“I arrived at the bank after crossing the river.”,Output就是“我过河后到达了河岸”。Positional Encoding是因为作者在这篇文章中提出的这种self-attention是和位置无关的,任意两个单词互换,得到的特征还是一样,所以作者对单词顺序做了一次编码,随后一起输入到特征的self-attention中去。

思考

从CV的角度来看,trans有类似于捕捉图像中全局相关性的能力,和non-local的思路有些像,比如在去噪领域,利用别的地方的信息来补被噪声影响的地方的信息。

你可能感兴趣的:(Paper,Reading,Research,深度学习,自然语言处理)