我对机器学习概念特别陌生,尤其是机器翻译。我已经读过Luong的注意力和Bahdanau的注意力。据说Luong是“乘法”,而Bahdanau是“加法”。但是我仍然不知道哪个更好,什么时候应该使用Luong或Bahdanau
答案 0 :(得分:1)
tl; dr :Luong的注意力计算起来更快,但是对编码器和解码器状态做出了强有力的假设。它们的性能相似,并且可能取决于任务。但是,主流工具包(Marian,OpenNMT,Nematus,Neural Monkey)使用的是Bahdanau版本。
更多详细信息:注意力得分的计算可以看作是解码器状态 h t 与所有编码器状态< strong> h s 。如果假设向量来自相同的向量空间,则可以使用点积简单地测量它们的相似性。如果假设编码器和解码器状态之间存在线性对应关系,则可以将 general 变体与单矩阵相乘。
这些假设可能不成立,或者至少没有充分的理由应该概括地说。但是,它们使注意力的计算比标准Bahdanau的注意力在这里更简单,这里称为 concat 。实际上,Bahdanau的注意力是单个隐藏层网络,因此能够处理编码器和解码器状态之间的非线性关系。