我不明白变压器中的推理/预测过程是如何工作的。
为了简单起见,假设它是翻译的转换器。我的理解是,当训练时,整个输入和输出句子被放入模型。这是可能的,因为在解码器中的因果掩码,防止模型欺骗和展望未来。

然后,一旦训练了权重,推理/预测就可以通过放置或用填充开始语句标记来实现。然后将预测的单词连接起来,直到是预测的单词。我的困惑来自于预测的单词是如何获得的。
因果掩码确保第一个预测令牌(下面的X_1)只是第一个令牌的函数(即不受我们在其他令牌中使用的填充的影响)。因此,我们的第一个预测的字/标记应该从第一个,然后,一旦我们连接k字,它应该从k+1的输出位置。为了清晰起见,请看下面的图表。

但是,我一直在使用nlp.谋略.holard.edu/注释-转换器/作为参考(并且还检查了另一个tensorflow教程),他们似乎将预测的单词/令牌作为最后一个令牌(即X_N).For示例,在上面链接的推理部分中,我们有:
prob = test_model.generator(out[:, -1])
_, next_word = torch.max(prob, dim=1)
next_word = next_word.data[0]
ys = torch.cat([ys, torch.empty(1, 1).type_as(src.data).fill_(next_word)], dim=1)因此,我的问题是,我是否误解了误解代码的模型?
发布于 2022-09-19 12:12:02
我认为你的误解来自于:
然后,一旦训练了权重,推理/预测就可以通过在句子的开头加上填充来完成。
根本没有填充物。在第一次迭代中,输入的长度仅为一个令牌(即用于</s>)。一旦计算了第一个令牌的预测,就会将其附加到输入中,得到长度为2的张量,然后用作输入,以此类推。在每个步骤中,输入的长度增加了1。因此,对当前步骤的预测始终是最后预测的令牌。
https://datascience.stackexchange.com/questions/114511
复制相似问题