Transformer结构

2023-04-07  本文已影响0人  又双叒叕苟了一天

1 模型结构

  1. 编码器(左)
  2. 解码器(右)

编码器和解码器都可以N层堆叠,原论文是6层
核心:多头注意力机制

transformer

1.1 嵌入层

  1. 词嵌入
  2. 位置编码
  3. 词嵌入和位置嵌入矩阵元素相加

1.1.1 词嵌入

1.1.2 位置编码

P(pos,2i)=\sin(\frac{pos}{10000^{2i/d_{model}}})\\ P(pos,2i)=\cos(\frac{pos}{10000^{2i/d_{model}}})

pos=0,1,2,\cdotsi=0,1,2,\cdots,255(512维位置编码)

1.2 编码器

  1. 多头注意力层
  2. 前馈网络层
  3. 叠加和归一组件

1.2.1 多头注意力层

  1. 词嵌入矩阵(单词数×词嵌入维度(512))通过前馈神经网络转化为3个矩阵:查询矩阵Q(单词数×注意力维度(64))、键矩阵K、值矩阵V
  2. 计算分数并缩放Q\cdot K^T/\sqrt{d_k}d_k是注意力维度(64)
  3. 归一化得到分数矩阵:softmax(Q\cdot K^T/\sqrt{d_k})
  4. 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z
  5. 使用N个这样的注意力矩阵拼接,N为头的个数(=8),每个头表示不同注意力的空间

1.2.2 前馈神经网络

两个ReLU激活函数构成的全连接层

1.2.3 叠加和归一组件

残差连接和归一化

1.3 解码器

  1. 带掩码的多头注意力层
  2. 多头注意力层
  3. 前馈网络层
  4. 叠加和归一组件
  5. 线性层和softmax层

1.3.1 带掩码的多头注意力层

  1. 词嵌入矩阵(单词数×词嵌入维度(512))通过前馈神经网络转化为3个矩阵:查询矩阵Q(单词数×注意力维度(64))、键矩阵K、值矩阵V
  2. 计算分数并缩放Q\cdot K^T/\sqrt{d_k}d_k是注意力维度(64)
  3. 对掩码位置使用极小的数替换,使得softmax时对该位置注意力为0
  4. 归一化得到分数矩阵:softmax(Q\cdot K^T/\sqrt{d_k})
  5. 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z

原因:生成时每个单词只能观察到自身以及自身之前的单词


掩码

1.3.2 多头注意力层

  1. 编码器的输出矩阵通过前馈神经网络转化为查询矩阵Q,带掩码的多头注意力层的输出转化为键矩阵K和值矩阵V
  2. 计算分数并缩放Q\cdot K^T/\sqrt{d_k}d_k是注意力维度(64)
  3. 归一化得到分数矩阵:softmax(Q\cdot K^T/\sqrt{d_k})
  4. 使用分数矩阵对值矩阵V加权求和得到注意力矩阵Z

1.3.3 前馈网络层以及叠加和归一组件

和编码器中相同

1.3.4 线性层和softmax层

  1. 编码器输出通过线性层转换到词汇表维度
  2. 通过softmax层获得词汇表中每个单词的概率

2 训练Transformer

  1. 模型预测输出和真实输出使用交叉熵计算损失
  2. 使用Adam优化器训练
  3. dropout应用在各个子层和嵌入层最后的输出

参考资料

[1]. BERT基础教程Transformer大模型实战
[2]. Attention Is All You Need

上一篇 下一篇

猜你喜欢

热点阅读