Transformer 是论文 [Attention Is All You Need](https://arxiv.org/abs/1706.03762) 中提出的用以完成机器翻译(Machine Translation, MT)等序列到序列(Sequence to Sequence, Seq2Seq)学习任务的一种全新网络结构。正如论文标题所示,Transformer 完全使用注意力机制(Attention Mechanisms)来获取序列中各位置的上下文信息,这种序列建模的方法摒弃了此前 Seq2Seq 模型中广泛使用的循环神经网络(Recurrent Neural Network, RNN),这使得计算并行度显著提高,训练时间大幅减少;同时在机器翻译任务上的实验结果也表明,这种网络结构能够取得现今最佳的翻译效果;而且作为一种通用的网络结构,它易于迁移到其他任务当中;因而 Transformer 正在被越来越多的使用。
Transformer 是论文 [Attention Is All You Need](https://arxiv.org/abs/1706.03762) 中提出的用以完成机器翻译(machine translation, MT)等序列到序列(sequence to sequence, Seq2Seq)学习任务的一种全新网络结构,其完全使用注意力(Attention)机制来实现序列到序列的建模。
- 特征维度为 d 、长度为 n 的序列,在 RNN 中计算复杂度为 `O(n * d * d)` (n 个时间步,每个时间步计算 d 维的矩阵向量乘法),在 Self-Attention 中计算复杂度为 `O(n * n * d)` (n 个时间步两两计算 d 维的向量点积或其他得分函数),n 通常要小于 d 。
更多模型训练相关的参数则在 `config.py` 中的 `ModelHyperParams` 和 `TrainTaskConfig` 内定义,其中默认使用了 Transformer 论文中 base model 的配置,如需调整可以在该脚本中进行修改。另外这些参数同样可在执行训练脚本的命令行中设置,传入的配置会合并并覆盖`config.py`中的配置,如可以通过以下命令来训练 Transformer 论文中的 big model :
更多模型训练相关的参数则在 `config.py` 中的 `ModelHyperParams` 和 `TrainTaskConfig` 内定义;`ModelHyperParams` 定义了 embedding 维度等模型超参数,`TrainTaskConfig` 定义了 warmup 步数等训练需要的参数。这些参数默认使用了 Transformer 论文中 base model 的配置,如需调整可以在该脚本中进行修改。另外这些参数同样可在执行训练脚本的命令行中设置,传入的配置会合并并覆盖 `config.py`中的配置,如可以通过以下命令来训练 Transformer 论文中的 big model :