- Transformer的背景:
- 2017年发表的的Transformer论文
- 2018年出现
- 优势:
-
- Transformer能够利用分布式GPU进行并行训练,提升模型训练效率.
- 在分析预测更长的文本时, 捕捉间隔较长的语义关联效果更好. attention机制的使用.
-
- Transformer结构解析
- 输入部分
- 源语言的文本嵌入层 + 位置编码器
- 目标语言的文本嵌入层 + 位置编码器
- 编码器部分
- 编码器是有N个编码器层组成
- 编码器层是由两个子层连接结构构成
- 第一个子层连接结构是由一个多头注意力和规范化层和残差连接
- 第二个子层连接结构是由一个前馈全连接层和规范化层和残差连接
- 解码器部分
- 解码器是有N个解码器层构成
- 一个解码器层是由三个子层连接结构构成
- 第一个子层连接结构是由一个多头的自注意力子层和规范化层和残差结构
- 第二个子层连接结构是由一个多个注意力子层和规范化层和残差连接
- 第三个子层连接结构是由一个前馈全连接层和规范化层和残差连接
- 输出部分
- Linear层
- softmax层
- 输入部分
输入部分
- 文本嵌入层:
- 作用: 为了在更高维度的语义空间中捕捉词汇之间的联系
- 代码实现:
- Embeddings: 在源文本嵌入和和目标文本嵌入层是共享
- 在实现的过程中embedding之后的结果*维度的开方, 目的是: 1.为了是嵌入层数值的量级和后面位置编码器的数值量级达到一个量级上, 2. 为了加快模型的训练过程
- 位置编码器
- 作用: Transformer在信息提取的过程中, 将位置信息缺失了, 为了添加位置信息, 所以在此处要添加位置编码器.
- 使用的函数: 正余弦函数, 在偶数为上进行正弦值的插入, 在奇数位置上进行余弦值的插入
- 注意点: 这里的位置编码器可以换成其他的函数形式, 或是在网络中进行动态学习.(了解即可)
编码器部分
- 掩码张量
- 作用: 为了防止模型在解码器部分解码的时候提前利用未来的信息, 所以我们要现将未来的信息提前遮掩住, 这个使用需要用到掩码张量.