论文阅读笔记AI篇 —— Transformer模型理论+实战(二)
资源地址 |
---|
Attention is all you need.pdf(0积分) - CSDN |
第二遍阅读(通读)

图1——Transformer结构图

图2——Attention结构图
2.1 Background
Background
中说,ByteNet和ConvS2S都使用了CNN结构作为基础模块去计算input和output之间的潜在联系,其中,关联来自两个任意输入或输出位置的信号所需的计算量,伴随着distance的增长而增长,ConvS2S呈线性增长,ByteNet呈对数增长,而在Transformer中,这个操作所需的计算量只是常数级别,尽管代价是平均了注意力的加权位置降低了有效分辨率(这里的有效分辨率是什么?),但作者用Multi-Head Attention机制去抵消了这个代价。(所以NLP的一个关键任务是,计算词语之间的相关度?)
Self-Attention 机制在 reading comprehension, abstractive summarization, textual entailment and learning task-independent sentence representations(阅读理解、抽象摘要、文本隐含和学习任务独立的句子表征)中都有成功的应用实践。
看起来End-to-end memory networks和Transformer都一样,都是使用了attention mechanism,但是Transformer是更彻底一些,连recurrent、sequence-aligned(序列对齐)、convolution模块都没有,是entirely on self-attention,self-attention不是Transformer这篇论文首先提出的,但是就如同标题说的Attention is all you need,纯粹基于self-attention他们是第一个。后面的章节,作者就在讨论如何motivate self-attention和相比于(Convolutional sequence to sequence learning、Neural GPUs learn algorithms、Neural machine translation in linear time)这三篇论文的优势了。
2.1 参考文章或视频链接 |
---|
[1] Textual Entailment(自然语言推理-文本蕴含) - AllenNLP |
[2] 文本蕴涵(Textual entailment) |
2.2 Model Architecture
Model Architecture
在原文中是第三章节,这个章节里分了下面的小节。
在正式对Model Architecture行文前,作者说Transformer也遵循了Encoder先生成中间表示然后Decoder对中间表示进行decode的这么一个架构,并且是用stacked self-attention and point-wise, fully connected layers去实现的,这里有个point-wise, fully connected layers的网络,中文译名是逐点全连接层,其表达公式是
F
F
N
(
x
)
=
m
a
x
(
0
,
x
W
1
+
b
1
)
W
2
+
b
2
FFN(x) = max(0, xW_1+b_1)W_2 + b_2
FFN(x)=max(0,xW1+b1)W2+b2
也就是说,两个Linear层中间夹着一个ReLU就是point-wise, fully connected layer,ReLU的表达式就是
m
a
x
(
0
,
x
)
max(0,x)
max(0,x)

图3 —— point-wise详细结构图(来自参考文章3)
也就对应于图1的这个Feed Forward的蓝色的这部分:

图4 —— point-wise全局结构图
2.2 参考文章或视频链接 |
---|
[1] Position-Wise Feed-Forward Layer |
[2] Position-wise Feed-Forward Network (FFN) - Github |
[3] Illustrated Guide to Transformers- Step by Step Explanation |
先看这篇 [4] The Annotated Transformer - Harvard NLP |
[5] 《Transformer论文逐段精读【论文精读】》- 李沐 |
[6] 《Transformer详解(李沐大神文字版,干货满满!)》- CSDN |
2.2.1 Encoder and Decoder Stacks

图5 —— Encoder-Decoder结构对比图
此外,应该对Add & Norm
的作用感到有点好奇,Add
就是将输出与残差连接相加,那Norm
呢?Norm
的作用是归一化,用来将消除梯度爆炸,比如权重已经训练到了一个瓶颈,即前后变化在指定范围内,那就该停止了,如果再训练那就容易导致overfitting过拟合,这就是正则化项的一个作用[4]。
2.2.1 参考文章或视频链接 |
---|
[1] 《论文笔记 | Layer Normalization》- 知乎 |
[2] 《Transformer论文逐段精读【论文精读】》- 李沐 |
[3] 《Transformer详解(李沐大神文字版,干货满满!)》- CSDN |
[4] Regularization in Neural Networks |
[5] About Train, Validation and Test Sets in Machine Learning |
2.2.2 Scaled Dot-Product Attention
关于这部分的内容,核心问题应该有两个。
现在来解释
Q
K
T
QK^T
QKT在干什么,先看到公式,
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
k
)
V
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V
Attention(Q,K,V)=softmax(dkQKT)V
我认为
Q
K
T
QK^T
QKT和计算词向量之间的
c
o
s
cos
cos相似度并没有本质区别,
Q
Q
Q矩阵第一行对应的词向量
q
q
q与
K
T
K^T
KT矩阵第一列对应的词向量
k
T
k^T
kT相乘,有
c
o
s
(
θ
)
=
q
k
T
∣
q
∣
∣
k
T
∣
cos(\theta) = \frac{qk^T}{|q||k^T|}
cos(θ)=∣q∣∣kT∣qkT
其余的行和列可以依次类推,看上去就和
c
o
s
cos
cos相似度差了一个系数而已。
2.2.2 参考文章或视频链接 |
---|
[1] 【注意力机制的本质|Self-Attention|Transformer|QKV矩阵】- bilibili |
[2] 【强烈推荐!台大李宏毅自注意力机制和Transformer详解!】- bilibili |
[3] ML Lecture 14: Unsupervised Learning - Word Embedding |
[4] 国家中心城市 - 百度百科 |
[5] 《科普:中心城市和重要的中心城市》- 百度贴吧 |
[6] 《超参数》- 百度贴吧 |
[7] Understanding Q,K,V In Transformer( Self Attention) |
Attention is all you need 将Self-Attention发扬光大
2.2.3 Multi-Head Attention
这里的多头,就是把矩阵进行拆分,然后运算,然后再合并,这个过程高度类似于Hadoop的MapReduce,但是作用有所不同,不同的头在训练过程中,注意力观察的地方会不一样。诚所谓:“话说天下大势,合久必分,分久必合”,分治的思想贯穿人类始终,无论是政治架构还是地理格局。
2.2.3 参考文章或视频链接 |
---|
[1] 《Einstein Summation (einsum) 的简单理解》- 知乎 |
[2] Multidimensional Matrix Mathematics:Multidimensional Matrix Equality, Addition,Subtraction, and Multiplication, Part 2 o |
[3] Is there a 3-dimensional “matrix” by “matrix” product? - stackoverflow |
[4] Understanding Numpy Matmul in 4D through Examples |
[5] tensorflow中高维数组乘法运算 - 知乎 |
[6] 【全面理解多维矩阵运算】多维(三维四维)矩阵向量运算-超强可视化 - 知乎 |
2.3 Why Self-Attention
Why Self-Attention
一章解释,为什么要自注意力呢?文章总结下来就是,计算词向量之间相关性的复杂度降低,提高并行度,对于解决long-range dependencies长序列依赖问题有奇效,
我记得19年软考有这么一道题目,计算两个矩阵相乘的时间复杂度,请看希赛网的解析。
2.3 参考文章或视频链接 |
---|
[1] 《2019年上半年软考第65题》- 希赛题库 |
2.4 Training
Training
,略,后续更新,请看原文,在学习率
l
r
a
t
e
lrate
lrate上的这个公式有点奇怪,学习率也是根据一些参数计算出来的,另外也用到了
D
r
o
p
O
u
t
DropOut
DropOut,这也是常规操作了。
2.5 Results
Results
重新强调了下结果,以及作者他们做的一些模型变种,就是调了参然后列了张表。
2.6 Conclusion
Conclusion
第一遍阅读的时候总结过了。