我正在阅读一篇关于机器翻译中编码器-解码器架构注意力机制的论文。文中提出了几种解码步骤的评分函数建议,例如编码器状态和解码器状态之间的余弦相似度、简单的点积等…其中一种是使用神经网络来训练以获得一个分数。但我不明白的是,我们要针对什么进行训练?我指的是输出“Y”的标签/值。网络的方程如下所示。
score(s,h)= v . tanh(W[s;h])
https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html
回答:
用于注意力的神经网络并不是单独训练的。用更简单的话来说,tanh(W[s;h])
(论文中提到的神经网络)是一个与编码器和解码器一起训练的前馈层。
任何注意力机制都会提出一个加权方案,以选择并组合适当的编码器状态用于特定的解码步骤。假设编码器的输出为a1, a2, .., an。对于解码器的每一步,输入为编码器状态的加权组合。一个注意力分数给出了每个解码步骤的适当权重α1, α2, .., αn。因此,例如要得到解码器输出d1,输入将是a1 * α1 + a2 * α2 + .. + an * αn。
权重α1, .. 是通过对注意力层/网的输出进行softmax处理得到的,在你的例子中是tanh
。在这种情况下,tanh的权重是学习得到的,即,tanh的反向传播和梯度更新是与整个编码器-解码器网络一起进行的。