Transformer 中-英运行和简单理解(二)

目录

回顾

seq2seq:

RNN

架构

运行

References


回顾

seq2seq:

Transformer 中-英运行和简单理解(二)_第1张图片

 要输入额外的tokens

然后循环做点积

Transformer 中-英运行和简单理解(二)_第2张图片

 Transformer 中-英运行和简单理解(二)_第3张图片

然后依次对每个tokens做attention

 Transformer 中-英运行和简单理解(二)_第4张图片

 Transformer 中-英运行和简单理解(二)_第5张图片

 最后完成翻译

Transformer 中-英运行和简单理解(二)_第6张图片

 

RNN

Transformer 中-英运行和简单理解(二)_第7张图片

RNN是依次输入每个tokens自带位置信息

transforemer是通过poisition encoding来捕获位置信息 

Transformer 中-英运行和简单理解(二)_第8张图片

Transformer 中-英运行和简单理解(二)_第9张图片

self-attention

可以看到下面句子中的 it 的意思并不相同 

Transformer 中-英运行和简单理解(二)_第10张图片

要用self-attention来获得

Transformer 中-英运行和简单理解(二)_第11张图片

 蓝色代表softmax的结果越深代表着权重更大

第一个animal的权重更大

第二个street的权重更大

架构

每个encoder都是相对独立并不共享权重

Transformer 中-英运行和简单理解(二)_第12张图片

每个输入单词被映射到512维的向量上

Transformer 中-英运行和简单理解(二)_第13张图片

 句子中的每个单词都独立地进入self-attention

Transformer 中-英运行和简单理解(二)_第14张图片

 

Transformer 中-英运行和简单理解(二)_第15张图片

 Transformer 中-英运行和简单理解(二)_第16张图片

Transformer 中-英运行和简单理解(二)_第17张图片 

Transformer 中-英运行和简单理解(二)_第18张图片 多头注意力就是用多组QKV来分组捕捉特征

比如说多头的超参是8

就是把512维度的embeding分成8*64个来做attention

这样可以捕捉到每个单词对应整句话中跟其他八个单词的关系

Transformer 中-英运行和简单理解(二)_第19张图片 

 Transformer 中-英运行和简单理解(二)_第20张图片

 Transformer 中-英运行和简单理解(二)_第21张图片

 Transformer 中-英运行和简单理解(二)_第22张图片

 

整个过程就是:

1.输入的句子拆成单词,比如输入 i love u分成 i love u三个单词

2.三个单词依次embeding x1 x2 x3

3.然后对这三个embeding 做多头self-attention

4.然后就可以输出每个单词对应其他语种里改率最高的词

5. 上述输出就应该是z1中 我的概率最高

6. 然后输入我到transformer中

7.第二个单词输出 爱的概率最高,然后将爱作为输入输入到transformer中

8.第三个输出你的概率最高

运行

地址:

Transformer中-英: NLP项目,主要包括atten-seq2seq和transformer模型,实现机器翻译以及对话系统。目前transformer只做了机器翻译。

git clone后

修改

Transformer 中-英运行和简单理解(二)_第23张图片

和device即可

Transformer 中-英运行和简单理解(二)_第24张图片 具体见仓库的readme

运行后结果是

Transformer 中-英运行和简单理解(二)_第25张图片

References

transform代码pytorch实现机器翻译_哔哩哔哩_bilibili

你可能感兴趣的:(#,Transformer,transformer,深度学习,人工智能)