Ton*_*ony 6 nlp machine-learning beam-search
根据我的理解(如果我错了,请纠正我),Beam Search 是 BFS,它只探索可能性的“图”向下b最可能的选项,其中b是光束大小。
为了计算/评分每个选项,特别是对于我正在做的 NLP 领域的工作,我们基本上通过计算一个标记的概率来计算可能性的分数,考虑到它之前的所有内容。
这在循环架构中是有意义的,在这种架构中,您只需通过最好的b 个第一个标记运行您使用解码器拥有的模型,以获得每个第一个标记的第二个标记的概率。最终,您会得到具有概率的序列,然后您只需选择概率最高的序列。
然而,在 Transformer 架构中,模型没有这种循环,输出是词汇表中每个单词的整个概率,序列中的每个位置(批量大小、最大序列长度、词汇大小)。我如何解释 Beam Search 的这个输出?我可以获得输入序列的编码,但由于没有重复使用前一个输出作为下一个标记解码的输入,我如何计算所有可能序列的概率,这些序列源自最佳b令牌?
集束搜索的工作原理与循环模型完全相同。解码器不是循环的(它是自注意力的),但它仍然是自回归的,即生成令牌以先前生成的令牌为条件。
在训练时,自注意力被屏蔽,这样只关注当前生成的单词左侧的单词。它模拟您在推理时的设置,当您确实只有左侧上下文时(因为右侧上下文尚未生成)。
唯一的区别是,在 RNN 解码器中,您仅在每个波束搜索步骤中使用最后一个 RNN 状态。使用 Transformer,您始终需要保留整个假设并对整个左侧上下文进行自我关注。
归档时间: |
|
查看次数: |
2066 次 |
最近记录: |