开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 32 天,点击查看活动详情
(本文是第41篇活动文章)
@[toc]
1. Transformer
基于Encoder-Decoder架构,最初用于翻译任务。
左边是encoder,右边是decoder。
1.1 Transformer整体工作流程
- 获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding 和单词位置的 Embedding 相加得到
- 将得到的单词表示向量矩阵 (如上图所示,每一行是一个单词的表示 x) 传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C,如下图
每一个block的输入和输出矩阵维度都相同:(论文中d=512)
- 将Encoder输出的编码信息矩阵 C传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 i 翻译下一个单词 i+1(这种按顺序解码的操作叫autoregressive (AR)),如下图所示。
decoder训练时的输入就是真实标签(ground truth (GT)),测试时的每次的输入是上一次的解码结果(第一次就以特殊token作为开头),用encoder得到的编码来做attention。测试时以出现
<EOS>或达到解码最大token数为结束标志。 翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词。上图 Decoder 接收了 Encoder 的编码矩阵 C,然后首先输入一个翻译开始符 "",预测第一个单词 "I";然后输入翻译开始符 "" 和单词 "I",预测单词 "have",以此类推。