pytorch注意事项seq2seq教程中的错误?

pytorch注意事项seq2seq教程中的错误?,pytorch,seq2seq,Pytorch,Seq2seq,我正在用Pytorch编写一个序列到序列的神经网络。在中,有一个注意力解码器的代码,我无法理解/认为可能包含错误 它通过连接此时的输出和隐藏状态,然后乘以矩阵,得到大小等于输出序列长度的向量,从而计算每个时间步的注意权重。注意,这些注意权重不依赖于编码器序列(在代码中命名为编码器输出),我认为应该如此 此外,还列出了可用于计算注意力权重的三种不同得分函数(本文第3.1节)。这些函数中没有一个只是通过矩阵进行连接和相乘 因此,在我看来,教程中的代码在其应用的函数和传递给该函数的参数方面都是错误的。

我正在用Pytorch编写一个序列到序列的神经网络。在中,有一个注意力解码器的代码,我无法理解/认为可能包含错误

它通过连接此时的输出和隐藏状态,然后乘以矩阵,得到大小等于输出序列长度的向量,从而计算每个时间步的注意权重。注意,这些注意权重不依赖于编码器序列(在代码中命名为编码器输出),我认为应该如此

此外,还列出了可用于计算注意力权重的三种不同得分函数(本文第3.1节)。这些函数中没有一个只是通过矩阵进行连接和相乘


因此,在我看来,教程中的代码在其应用的函数和传递给该函数的参数方面都是错误的。我遗漏了什么吗?

本教程在您提到的Luong论文中提供了这些注意事项的简化版本

它仅使用一个线性层来结合输入嵌入和解码器RNN隐藏状态。这有时被称为“基于位置的”注意,因为它不依赖于编码器输出。然后它应用softmax并计算注意力权重,该过程将正常进行

这并不总是不好的,因为从编码器输出,注意机制可能会注意到以前的标记,然后注意将不会是单调的,因此您的模型将失败


为了实现Luong论文中的注意事项,我建议在对解码器隐藏状态和编码器输出应用线性层之后使用“concat”注意事项。然后矩阵
W_a
将这些连接的结果转换为您选择的任意维度,最后
v_a
是一个将转换为所需上下文向量维度的向量。

本教程在您提到的Luong论文中提供了这些注意事项的简化版本

它仅使用一个线性层来结合输入嵌入和解码器RNN隐藏状态。这有时被称为“基于位置的”注意,因为它不依赖于编码器输出。然后它应用softmax并计算注意力权重,该过程将正常进行

这并不总是不好的,因为从编码器输出,注意机制可能会注意到以前的标记,然后注意将不会是单调的,因此您的模型将失败


为了实现Luong论文中的注意事项,我建议在对解码器隐藏状态和编码器输出应用线性层之后使用“concat”注意事项。然后矩阵
W_a
将把这些连接的结果转换为您选择的任意维度,最后
v_a
是一个将转换为所需上下文向量维度的向量。

在算法中,attn_权重取决于解码参数。 然后我们得到一个线性层的输出(这里是10)。这是注意力向量。 然后我们将其与编码器输出相乘。因此,在每个历元,我们通过反向传播更新attn_权重。口头上,在每次迭代中,它都是朝着相反的方向学习。 让我举一个例子:

我们的任务是把英语翻译成德语

我想唱首歌。->我喜欢唱歌

在解码器处,单动词在末尾。因此,我们的解码器attn_权重看到解码器输出,并学习应用输入编码的哪些部分。当您将该值与编码器_输出相乘时,您将得到一个矩阵,该矩阵在必要的点上具有较高的值。 所以事实上,当解码器看到德语中的句型时,它就是在学习,
它必须注意输入的哪些部分。因此,我认为学习的方向是正确的。

在算法中,attn_权重取决于解码参数。 然后我们得到一个线性层的输出(这里是10)。这是注意力向量。 然后我们将其与编码器输出相乘。因此,在每个历元,我们通过反向传播更新attn_权重。口头上,在每次迭代中,它都是朝着相反的方向学习。 让我举一个例子:

我们的任务是把英语翻译成德语

我想唱首歌。->我喜欢唱歌

在解码器处,单动词在末尾。因此,我们的解码器attn_权重看到解码器输出,并学习应用输入编码的哪些部分。当您将该值与编码器_输出相乘时,您将得到一个矩阵,该矩阵在必要的点上具有较高的值。 所以事实上,当解码器看到德语中的句型时,它就是在学习,
它必须注意输入的哪些部分。因此,我认为学习的方向是正确的。

阅读第3节等式5,据我所知,该等式说明了如何处理注意力表征,他们称之为上下文向量,表示为c_t,一旦我们得到它。参见,例如图2下的描述。阅读第3节等式5据我所知,该等式说明了如何处理注意力表征,他们称之为上下文向量,表示为c_t,一旦我们得到它。参见图2下的描述。嘿,谢谢你的回复。这一简化的注意力技巧在任何地方的论文中都有描述吗?似乎很奇怪Pytork会构建他们自己的新注意机制,却没有提到他们已经这样做了。我不记得我是否看过这样的论文(如果有,肯定是NLP论文),但这是早期的实践,也是为了自我注意。他们没有按照“注意力就是你所需要的一切”这篇论文中的公式来做,而是在编码器上放了一个线性层来学习注意力权重!嗯,对我来说,权重不依赖于编码器的输出似乎仍然很奇怪。它对注意力机制成功的典型直觉提出了挑战。如果你在这方面有任何资源,例如,你还看到了其他地方