【Transformer】Position-wise FFN
Position-wise FFN
Transformer的每个子层的注意力机制之间都包含一个前馈神经网络

对序列中的所有位置的表示进行变换时使用的是同一个多层感知机(MLP),因此该前馈网络是“Position-wise”
并且使用Relu作为激活函数 \[ FFN(x)=max(0,xW_1+b_1)W_2+b_2 \]
实现PositionWiseFFN类, 输入X通过三层的MLP计算得到输入(python默认对最后一个维度进行推理)
1 | class PositionWiseFFN(nn.Module): |
输入输出的形状分别为:
X: (batch_size, num_steps, num_hidden)
Output: (batch_size, num_steps, ffn_num_outputs)
1 | ffn = PositionWiseFFN(4, 4, 8) |
Transformer的一个优点就是在一次Attention计算中,注意力机制会同时考虑到所有位置
RNN在推理的过程中利用隐藏的状态存储信息,这样会导致最后一个token计算时想要参考第一个token时需要通过n次推理
因此Transformer相较于传统的RNN网络提取信息的能力更强!

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XcloveHsy's Blog!