在Beam Search 算法中,惩罚长序列的常见方法是引入长度惩罚(length penalty),以避免搜索过程中过度偏向生成较长的序列。通常,长序列的得分会随着序列长度的增加而变得更高,因此引入长度惩罚可以让搜索算法更加平衡地考虑序列的长度和内容。
Beam Search采用基于文本长度的惩罚项来解决这个问题,公式如下带有文本长度惩罚的路径得分该公式本质上将原始得分S,除以文本长度,由于原始S是负数,因此文本长度越长相当于在缩小S的绝对值,惩罚之后的得分S*会变大,该公式的目的是使得长文本的得分不要那么得负。 length_penalty是一个自定义参数,默认是1等同于直接除以...
Beam Search集束搜索是Greedy Search的改进版,它拓展了Greedy Search在每一步的搜索空间,每一步保留当前最优的K个候选,一定程度上缓解了Greedy Search的问题,令K为Beam Size代表束宽,Beam Size是一个超参数,它决定搜索空间的大小,越大搜索结果越接近最优,但是搜索的复杂度也越高,当Beam Size等于1的时候,Beam Sea...
NLG任务需要对Beam Search进行定制,以适应单词长度、翻译覆盖率等需求。以下结合Meta AI研究院(原Facebook Fair)开源的fairseq框架,介绍Beam Search的控制算法及其实现。本文将详细探讨长度惩罚、范围约束、多样性搜索以及覆盖度惩罚等控制策略。长度惩罚是为了纠正神经网络语言模型对短句子的偏好。实际搜索中...
生成的句子序列越长,概率值相乘(或者对数概率相加)的结果就越小,所以倾向于生成短序列。对序列长度进行惩罚,降低生成短序列的倾向。 3.3 单一性问题 解释: beam search 有一个大问题是输出的B个句子的差异性很小,无法体现语言的多样性(比如文本摘要、机器翻译的生成文本,往往有不止一种表述方式)。
这个值将从beam的分数中减去。请注意,多样性惩罚只有在group-beam-search被启用时才有效。
可以通过控制 (unkown words) 数量来对 beam search 生成的 hypotheses 进行 filtering. 当一个 hypothese 包含太多 时可以将其 drop 掉。需要注意的是,drop hypotheses 会暂时降低 beam size。2.2 Normalization主要是对beam search的得分函数进行改进,包括对输出句子的长度和coverage添加惩罚。
想象一下:假设不用beam search,我们预测时,在每个timestep,只保留概率最大的那个词作为这个位置上我们预测会出现的词,每一个timestep都这么做,直到遇到EOS(也就是预测到这是句尾)或者到达我们提前设置好的最大句子长度。 这么做有点像DFS,从树顶上开始,每一层找到最大的P往下走,走到最底下就返回结果 那么beam...
想象一下:假设不用beam search,我们预测时,在每个timestep,只保留概率最大的那个词作为这个位置上我们预测会出现的词,每一个timestep都这么做,直到遇到EOS(也就是预测到这是句尾)或者到达我们提前设置好的最大句子长度。 这么做有点像DFS,从树顶上开始,每一层找到最大的P往下走,走到最底下就返回结果 ...
4 改进集束搜索(Refinements to Beam Search) 上个视频中, 你已经学到了基本的束搜索算法(the basic beam search algorithm),这个视频里,我们会学到一些技巧, 能够使算法运行的更好。长度归一化(Length normalization)就是对束搜索算法稍作调整的一种方式,帮助你得到更好的结果,下面介绍一下它。 前面讲到束搜索就...