Machine Learning & Recommendation & NLP & DL

自然语言处理N天-再次学习Transformer01

2019-03-16  本文已影响2人  我的昵称违规了
新建 Microsoft PowerPoint 演示文稿 (2).jpg

从今天开始,我会再看一遍Transformer(这是第3遍了吧……)。
这次是依据Transformer 模型的 PyTorch 实现进行学习,再梳理一下Transformer模型的重点,最后用Pytorch实现。
本来想用AllenNLP一步到位,但是前天敲了一天发现不行,我对Pytorch不懂,同时还是不了AllenNLP,干脆从头再来。

1. Transformer模型结构

这个模型是一个完全基于Attention的模型,抛弃了以前的RNN和CNN,其架构主要有以下特点(说错了留言告诉我,我改)
先上图,这张图我会反复贴上来。

Transformer结构图

(1) encoder和decoder
Transformer模型使用经典的encoer-decoder架构,由encoder和decoder两部分组成。
可以看到两侧的N_x表示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
对序列中的词语出现的位置进行编码。这样模型就可以捕捉顺序信息!

上一篇下一篇

猜你喜欢

热点阅读