赞
踩
基于RNN(LSTM)的序列模型来说,计算每个cell的输出无法进行并行化。而且单向的RNN无法很好的利用全局的信息。其中下面中的a和b均为向量。
self-attention的出现恰好解决了以上两大问题。
其中x->a这一步貌似在论文中并没有体现。在求每一个output的时候,对应的q会对所有的k求内积(除以
d
\sqrt d
d
,其中d为向量的维度),然后通过softmax进行归一化,得到对应每个v的权重
α
^
\hat \alpha
α^,最终加权v计算得到b。
矩阵表示是为了体现可使用GPU进行加速。其中这一部分涉及到了矩阵的几种乘法。除了常规的乘法以外,还有列操作和行操作。
列操作是指矩阵的
C
C
C的第j列是通过矩阵
A
A
A乘以矩阵
B
B
B第j列的列向量得到的。这表明矩阵
C
C
C 的列向量是矩阵
A
A
A列向量的线性组合,组合的“权”就是矩阵
B
B
B 第j列的各个分量。
行操作是指矩阵
C
C
C 的第 i 行是通过矩阵
A
A
A 的第 i 行乘以矩阵
B
B
B得到的。这表明矩阵
C
C
C的行向量是矩阵
B
B
B行向量的线性组合。
对于每个输出b来说,权重是一个列向量。
为什么要设置不同的head,不同的head关注的信息可能是不同的,有的head关注的是局部信息,有的关注的是较长距离的信息。
得到Multi-head的两个result
b
i
,
1
b^{i,1}
bi,1和
b
i
,
2
b^{i,2}
bi,2,可直接进行concat得到
b
i
b^i
bi,或者乘以
W
0
W^0
W0(降维)得到
b
i
b^i
bi。
在self-attention中并没有位置信息,所以需要添加上位置信息。在词嵌入后添加one-hot向量
p
i
p^i
pi(维度为
p
i
p^i
pi的维度)。
W
X
=
[
W
I
W
p
]
[
x
i
p
i
]
WX=[W^I \quad W^p] \left[ xipi
http://jalammar.github.io/illustrated-transformer/
seq2seq的复习视频为:https://www.youtube.com/watch?v=ZjfjPzXw6og&feature=youtu.be
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html ,在decoder阶段输出不仅是由encoder的输出有关,还和decoder之前的输出有关。如图中绿色的部分不仅要收到上一行的4个输入,还有接收同一行前面的3个输入,才能生成绿色部分。
Batch Norm: https://www.youtube.com/watch?v=BZh1ltr5Rkg, Layer Norm:https://arxiv.org/abs/1607.06450, 其中Add层指的是把输出和输入相加。其中Batch Norm是让在Batch Size中的样本同一个维度的均值为0,方差为1。Layer Norm是让同一样本的不同维度的均值为0,方差为1。
Masked:关注已经产生的部分。
每个词两两之间都有attention,https://arxiv.org/abs/1706.03762。
it在不同的句子中代表的不同的含义。
Multi-head Attention的例子,红色的更关注local信息,绿色的更关注长距离信息。
https://arxiv.org/abs/1801.10198,机器阅读了多篇文章,检索生成对应词汇的维基百科。
https://ai.googleblog.com/2018/08/moving-beyond-translation-with.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。