从今天开始,我会再看一遍Transformer(这是第3遍了吧……)。
这次是依据Transformer 模型的 PyTorch 实现进行学习,再梳理一下Transformer模型的重点,最后用Pytorch实现。
本来想用AllenNLP一步到位,但是前天敲了一天发现不行,我对Pytorch不懂,同时还是不了AllenNLP,干脆从头再来。
1. Transformer模型结构
这个模型是一个完全基于Attention的模型,抛弃了以前的RNN和CNN,其架构主要有以下特点(说错了留言告诉我,我改)
先上图,这张图我会反复贴上来。
(1) encoder和decoder
Transformer模型使用经典的encoer-decoder架构,由encoder和decoder两部分组成。
可以看到两侧的表示encoer和decoder各有多少层
(2) 使用多种attention机制(multi-head context-attention、multi-head self-attention)
在图中,每块就是一个block,可以看到里面所使用的机制。似乎都有一个***-attention
attention对于某个时刻的输出y,它在输入x上各个部分的注意力。这个注意力实际上可以理解为权重。
在下面会详细解释。
(3) 使用Layer-Normalization机制
Normalization的一种,把输入转化成均值为0方差为1的数据。是在每一个样本上计算均值和方差。
(4) 使用Mask机制
用于对输入序列进行对齐。这里使用的是padding mask和sequence mask。
(5) 使用残差residual connection
避免梯度消失。
(6) 使用Positional-encoding
对序列中的词语出现的位置进行编码。这样模型就可以捕捉顺序信息!
网友评论