- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据我的理解(如果我错了,请纠正我),Beam Search 是 BFS,它只探索可能性的“图表”b 最可能的选项,其中 b 是光束尺寸。
为了计算/评分每个选项,特别是对于我正在做的 NLP 领域的工作,我们基本上通过计算一个标记的概率(考虑到它之前的所有内容)来计算可能性的分数。
这在循环架构中是有意义的,您只需通过最佳的 b 第一个标记运行解码器所拥有的模型,即可获得每个第一个标记的第二个标记的概率代币。最终,你会得到具有概率的序列,然后你只需选择概率最高的序列即可。
但是,在 Transformer 架构中,模型没有这种递归,输出是词汇表中每个单词、序列中每个位置的完整概率(批量大小、最大序列长度、词汇大小) 。如何解释 Beam Search 的输出?我可以获得输入序列的编码,但是由于不会重复使用先前的输出作为下一个标记解码的输入,因此我如何计算源自最佳 < 的所有可能序列的概率强>b token ?
最佳答案
集束搜索的工作原理与循环模型完全相同。解码器不是循环的(它是自注意力的),但它仍然是自回归的,即生成 token 是以先前生成的 token 为条件的。
在训练时, self 注意力被屏蔽,这样只关注当前生成的单词左侧的单词。它模拟您在推理时的设置,当您确实只有左侧上下文时(因为右侧上下文尚未生成)。
唯一的区别是,在 RNN 解码器中,您仅在每个波束搜索步骤中使用最后一个 RNN 状态。使用 Transformer,您始终需要保留整个假设并对整个左侧上下文进行自注意力。
关于machine-learning - Beam Search 如何对 The Transformer 的输出进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675662/
我是一名优秀的程序员,十分优秀!