陈硕--Transformer-Attention Is All You Need
Transformer-Attention Is All You Need
为什么提出Transformer,它到底是何方神圣?
它到底是如何表现高的性能,是否值得去研究?
- (1) Transformerself-attention
- (2) 位置编码
- (3) 网络编码模块
- (4) 网络解码模块
为什么引入Transformer?
Transformer模型使用了Self-Attention机制,不采用RNN顺序结构,使得模型可以并行化训练,
而且能够拥有全局信息。
说白了:并行加速计算+学习全局信息
CNN缺点:只能考虑有限的内容
CNN优点:并行化处理
如何既能并行又能学习到全局信息?→Self-Attention
为什么提出Transformer,它到底是何方神圣?
它到底是如何表现高的性能,是否值得去研究?
- (1)Transformerself-sttention
- (2)位置编码
- (3)网络编码模块
- (4)网络解码模块
具体如何实现Self-Attention?(q、k、v计算)
系统框架
具体如何实现Self-Attention?(q、k、v计算)
1 | q:q:query (to match others) 查询 |
q:查询
如何获得qkv
1 | d is the dim of g and k |
Self-attention
Considering the whole sequence
数学推导并行计算机制!
(ignore vd for simplicity)
步骤①、②、③
QKV如何计算
位置编码
p24:06
Positional Encoding !!!!!
位置编码嵌入与词嵌入相加?
$$W\cdot x_p^i=[W^I,W^P]\cdot\left[x^i\backslash\text{p}^i\right]=W^I\cdot x^i+W^P\cdot p^i=a^i+e^i$$
位置编码获取方式:可以通过训练得到,也可以使用公式得到;
$$\begin{matrix}\text{[Sin(x),cos(x)}&\text{Sin(2x),cos(2x)….]}\end{matrix}$$
$$PE\left(1\right)=\left[\sin\left(1/10000^{0/512}\right),\cos\left(1/10000^{0/512}\right),\sin\left(1/10000^{2/512}\right),\cos\left(1/10000^{2/512}\right),\ldots\right]$$
P27:35
为什么提出Transformer,它到底是何方神圣?
它到底是如何表现高的性能,是否值得去研究?
- (1)Transformerself-sttention
- (2)位置编码
- (3)网络编码模块
- (4)网络解码模块
Add表示残差连接
(Residual Connection)用于防止网络退化
Norm表示Layer Normalization,用于对每一层的激活值进行归一化
Encoder 30
接着是一个Feed Forward的前馈网络和一个Add&Norm Layer.
所以,这一个绿色的block的前2个Layer操作的表达式为:
O1 Layer Normalization(I+Multi-head Self-Attention(I))
这一个绿色的block的后2个Layer操作的表达式为:
2=Layer Normalization(1+Feed Forward Network(O))
Block(I)=02
所以Transformer的Encoder的整体操作为:
Encoder(I)=Block(…Block(Block)())
quadN times
Dencoder 31
新加的attention多加了一个mask,因为训练时的output都是Ground Truth,这样可以确保预测第i个位置时不会接触到未来的信息。