[关闭]
@songying 2019-03-11T22:44:22.000000Z 字数 2522 阅读 1821

探讨一下Attention is All you need 的细节

博客文章

前言

本文假设你已经有了一定的 Attention 基础, 因此不会讨论Attention的基本思想之类的东西,而是探索Attention is all you need 这篇文章中的各个子模块的细节问题。 这点主要是最近的面试中都会问到Attention, Self-Attention以及Bert, 所以我索性将整个文章的细节理顺,免得面试问的一脸懵逼。

本文采用从细节到整体的过程来描述,与论文中思路相反,不过我觉得我这样更能理清文章。

1. Scaled Dot-product Attention

我们可以看到,这个依旧沿袭的是 Attention 的经典思想,不过在其中添加了一些操作如Scale, Mask,这意味着,对于Attention 而言, 其只要核心思想不变,适当的调整数据能够获得更好的结果。其公式如下:


这里解释一下 Scaled Dot-product Attention 在本文中的应用,也是称为 Self-Attenion 的原因所在,这里的Q,K, V 都是一样的,意思就是说,这里是句子对句子自己进行Attention来查找句子中词之间的关系,这是一件很厉害的事情,回想LSTM是怎么做的,再比较 Self-Attention, 直观的感觉,Self-Attention更能把握住词与词的语义特征,而LSTM对长依赖的句子,往往毫无办法,表征极差,这一点会单独讨论。

2. Muti-head Attention

这里多头的含义其实就是采用多个Attention来从多个维度来把握词的信息,我们从图中看到,这里有 h=8 个Attention,每个Attention输出一种Self-Attention的结果,然后 Concat 起来。

3. 残差网络,Normalization与feed-forward network

4. Transformer 中如何使用 Multi-head Attention

Transformer 中使用 Multi-head Attention要注意以下几点:

5. Positional encoding

由于 Self-Attention 自己是把握不到句子的顺序信息的,因此,Transformer 需要采用 Positional encoding 来获取序列的顺序信息,论文中采用了三角函数的方式,还有其余方式可选。 个人对这方面了解不深,不过我认为 Transformer 对序列信息的把握还有提升的空间和必要。

6. 最后的 Linear 与 Softmax

这个其实没什么好说的,一般都会在最后一层加一个前馈神经网络来增加泛化能力,最后用一个 softmax 来进行预测。

回归到整体

前面已经将所有的细节都讲的很清楚了,这里回到整体的情况下来简要谈一下论文中的Encoder与Decoder。

最后

这篇文章的细节大致就讲完了,如果有疏漏的话,请批评指教。 近几个月,Bert 的发布以及 Self-Attention 的各种应用,使我有了一种 LSTM 要被取代的感觉,但目前还没有详细的 Paper 产出,但就看到的阅读理解中的复杂模型, 用到Self-Attention 的简直不要太多,且效果一般都很好,这点会在后续关于阅读理解的模型中讨论,over。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注