Beam Search如何在The Transformer的输出上运行?

时间:2019-06-19 20:51:23

标签: machine-learning nlp beam-search

根据我的理解(如果我错了,请更正我),Beam Search是BFS,它仅在 b 个最可能的选项(其中 b 是光束大小。

要计算/计分每个选项,尤其是对于我正在从事的NLP领域的工作,我们基本上通过计算令牌的概率(给出所有可能的令牌)来计算可能性的分数。

这在循环体系结构中很有意义,在该体系结构中,您只需通过最佳的 b 第一个令牌运行与解码器建立的模型,以获取第二个令牌的概率(对于每个第一个令牌)令牌。最终,您将获得具有概率的序列,而只是选择概率最高的序列。

但是,在没有模型重复性的Transformer架构中,输出是词汇表中每个单词,序列中每个位置(批处理大小,最大序列长度,vocab大小)的全部概率。如何解释此输出以进行Beam Search?我可以获取输入序列的编码,但是由于没有将以前的输出用作下一个令牌解码的输入的重复出现,我该如何计算源自最佳< strong> b 令牌?

1 个答案:

答案 0 :(得分:1)

射束搜索的工作原理与递归模型完全相同。解码器不是递归的(它是自我专注的),但是它仍然是自动回归的,即,生成令牌的前提是先前生成的令牌。

在训练时,自我注意力被掩盖,从而仅关注当前生成的单词左侧的单词。当您确实只有左侧上下文(因为尚未生成右侧上下文)时,它会模拟您在推理时所具有的设置。

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