目录
回顾
seq2seq:
要输入额外的tokens
<start>和<end>
然后循环做点积
然后依次对每个tokens做attention
最后完成翻译
RNN
RNN是依次输入每个tokens自带位置信息
transforemer是通过poisition encoding来捕获位置信息
self-attention
可以看到下面句子中的 it 的意思并不相同
要用self-attention来获得
蓝色代表softmax的结果越深代表着权重更大
第一个animal的权重更大
第二个street的权重更大
架构
每个encoder都是相对独立并不共享权重
每个输入单词被映射到512维的向量上
句子中的每个单词都独立地进入self-attention
多头注意力就是用多组QKV来分组捕捉特征
比如说多头的超参是8
就是把512维度的embeding分成8*64个来做attention
这样可以捕捉到每个单词对应整句话中跟其他八个单词的关系
整个过程就是:
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后
修改
和device即可
具体见仓库的readme
运行后结果是