1 模型结构
- 编码器(左)
- 解码器(右)
编码器和解码器都可以N层堆叠,原论文是6层
核心:多头注意力机制
1.1 嵌入层
- 词嵌入
- 位置编码
- 词嵌入和位置嵌入矩阵元素相加
1.1.1 词嵌入
- 编码器:把输入句子中每个单词转化为单词的嵌入,构成单词数×词嵌入维度的矩阵。词嵌入维度是512
- 解码器:输入是目标句子添加句子起始符号<sos>。预测时位移(<sos>-->Je,Je-->vais,vais-->bien,bien--><eos>)
1.1.2 位置编码
,(512维位置编码)
1.2 编码器
- 多头注意力层
- 前馈网络层
- 叠加和归一组件
1.2.1 多头注意力层
- 词嵌入矩阵(单词数×词嵌入维度(512))通过前馈神经网络转化为3个矩阵:查询矩阵Q(单词数×注意力维度(64))、键矩阵K、值矩阵V
- 计算分数并缩放,是注意力维度(64)
- 归一化得到分数矩阵:
- 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z
- 使用N个这样的注意力矩阵拼接,N为头的个数(=8),每个头表示不同注意力的空间
1.2.2 前馈神经网络
两个ReLU激活函数构成的全连接层
1.2.3 叠加和归一组件
残差连接和归一化
1.3 解码器
- 带掩码的多头注意力层
- 多头注意力层
- 前馈网络层
- 叠加和归一组件
- 线性层和softmax层
1.3.1 带掩码的多头注意力层
- 词嵌入矩阵(单词数×词嵌入维度(512))通过前馈神经网络转化为3个矩阵:查询矩阵Q(单词数×注意力维度(64))、键矩阵K、值矩阵V
- 计算分数并缩放,是注意力维度(64)
- 对掩码位置使用极小的数替换,使得softmax时对该位置注意力为0
- 归一化得到分数矩阵:
- 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z
原因:生成时每个单词只能观察到自身以及自身之前的单词
掩码
1.3.2 多头注意力层
- 编码器的输出矩阵通过前馈神经网络转化为查询矩阵Q,带掩码的多头注意力层的输出转化为键矩阵K和值矩阵V
- 计算分数并缩放,是注意力维度(64)
- 归一化得到分数矩阵:
- 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z
1.3.3 前馈网络层以及叠加和归一组件
和编码器中相同
1.3.4 线性层和softmax层
- 编码器输出通过线性层转换到词汇表维度
- 通过softmax层获得词汇表中每个单词的概率
2 训练Transformer
- 模型预测输出和真实输出使用交叉熵计算损失
- 使用Adam优化器训练
- dropout应用在各个子层和嵌入层最后的输出
参考资料
[1]. BERT基础教程Transformer大模型实战
[2]. Attention Is All You Need
网友评论