首页 > 解决方案 > Beam Search 如何对 The Transformer 的输出进行操作?

问题描述

根据我的理解(如果我错了,请纠正我),Beam Search 是 BFS,它只探索最可能的选项b下的可能性“图”,其中b是光束大小。

为了计算/评分每个选项,特别是对于我正在做的 NLP 领域的工作,我们基本上通过计算令牌的概率来计算可能性的分数,给定它之前的所有内容。

这在循环架构中是有意义的,在这种架构中,您只需通过最佳b个第一个令牌运行您的解码器模型,以获得每个第一个令牌的第二个令牌的概率。最终,您会得到具有概率的序列,然后您只需选择概率最高的序列。

然而,在 Transformer 架构中,模型没有这种重复性,输出是词汇表中每个单词、序列中每个位置的整个概率(批量大小、最大序列长度、词汇大小)。我如何解释 Beam Search 的这个输出?我可以得到输入序列的编码,但是由于没有重复使用前一个输出作为下一个令牌解码的输入,我该如何计算源自最佳b的所有可能序列的概率代币?

标签: machine-learningnlpbeam-search

解决方案


束搜索的工作方式与循环模型完全相同。解码器不是循环的(它是自注意力的),但它仍然是自回归的,即生成一个标记取决于先前生成的标记。

在训练时,self-attention 被屏蔽,因此只关注当前生成的单词左侧的单词。当您确实只有左侧上下文时(因为尚未生成右侧上下文),它会模拟您在推理时的设置。

唯一的区别是,在 RNN 解码器中,您只在每个波束搜索步骤中使用最后一个 RNN 状态。使用 Transformer,您始终需要保留整个假设并对整个左侧上下文进行自我注意。


推荐阅读