0. 前言
1. 要解决什么问题
- 在处理序列数据时,当时常用的结构都是RNN/CNN+Attention。
- 虽然当时都取得了一些进展,sequential computation 的根本问题还存在。
- 所谓根本问题,猜测包含两方面内容:只能顺序执行(不能并行执行),长期依赖(依赖很久以前的信息,但很久以前的信息容易丢失)
2. 用了什么方法
- 提出了Transformer结构,主要特点是:
- 完全抛弃了CNN/RNN,只使用Attention和Feed-Forward结构。
- 论文给Transormer的定位是
Transformer is the first transduction model relying entirely on self-attention to compute representations of its input and output without using sequence-aligned RNNs or convolution.
-
Transformer结构如下图所示:
-
对于上图的一些说明:
- 与之前的工作相同,Transormer使用了Encoder-Decoder结构。
- 这不是完整的论文中网络的结构,只是一个Encoder、一个Decoder、两者间连接示意图。
- 左边的是Encoder结构,右边的是Decoder结构。
-
Encoder与Decoder的组成
- Encoder由两部分组成,multi-head self-attention mechanism 和 a simple, position-wise fully connected feed-forward network
- Decoder由三部分组成,包括Encoder的两部分,以及在两个模块间的加入了一个Multi-head attention,使用多路Encoder输出作为输入。
-
Multi-Head Attention结构如下图所示,注意,Multi-Head中有很多内容可以并行运行。
- 感觉Multi-Head Attention其实就是多个Scaled Dot-Product Attetion同时运行,然后把结果进行Concat?
-
Attention 结构
- 上面的图中,都有Q/K/V三个部分,其实就是query/keys/values三部分。
- 我自己感觉就是给这个结构取了几个名字,容易理解一点,但具体是不是这些意思,也不一定……
- 大概理解就是:Attention结构的输出是values的加权和,权重是由query/keys计算得到的。论文中内容如下所示。
The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.
3. 效果如何
- 毕竟我是搞CV的,只关注细节。
4. 还存在什么问题&可借鉴之处
- 听说这个结构很火,并且在CV中也有很好的应用。之后会学习一些相关论文。