本文主要是介绍Beam Search score function,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一般情况下,beam search 通常用于翻译等句子生成任务中。 beam_size
用来在翻译所所需时长和翻译准确度之间进行权衡。当beam_size = 1
时,beam search 则退化为 greedy search。
另一方面,当 n_best
的取值大于1时,由 beam search 可以得到一个 approximate n-best list,而不是只输入一个最优值。
Hypotheses filtering
可以通过控制 (unkown words) 数量来对 beam search 生成的 hypotheses 进行 filtering. 当一个 hypothese 包含太多 时可以将其 drop 掉。需要注意的是,drop hypotheses 会暂时降低 beam size.
Normalization
令 X X X 表示 src sentence, Y Y Y 表示 current tgt sentence,score function 可以为:
s ( Y , X ) = log P ( Y ∣ X ) l p ( Y ) + c p ( X , Y ) = ∑ log P ( y i ∣ X , y 1 , . . . , i − 1 ) l p ( Y ) + c p ( X , Y ) s(Y, X) = \frac{\log P(Y|X)}{lp(Y)} + cp(X, Y) = \frac{\sum\log P(y_i|X, y_{1,...,i-1})}{lp(Y)} + cp(X, Y) s(Y,X)=lp(Y)logP(Y∣X)+cp(X,Y)=lp(Y)∑logP(yi∣X,y1,...,i−1)+cp(X,Y)
下面对上式中 l p ( ⋅ ) lp(\cdot) lp(⋅) 和 c p ( ⋅ ) cp(\cdot) cp(⋅) 分别为 length penalty 和 coverage penalty.
Length normalization
l p ( Y ) = ( 5 + ∣ Y ∣ ) α ( 5 + 1 ) α lp(Y) = \frac{(5 + |Y|)^{\alpha}}{(5 +1)^{\alpha}} lp(Y)=(5+1)α(5+∣Y∣)α
其中, ∣ Y ∣ |Y| ∣Y∣ 是当前 tgt sentence 的长度, α \alpha α 是 length normalization coefficient.
Coverage normalization
c p ( X , Y ) = β ∑ i = 1 ∣ X ∣ log ( min ( ∑ j = 1 ∣ Y ∣ p i , j , 1.0 ) ) cp(X, Y) = \beta \sum_{i=1}^{|X|} \log \left( \min\left(\sum_{j=1}^{|Y|} p_{i,j}, 1.0\right) \right) cp(X,Y)=βi=1∑∣X∣log⎝⎛min⎝⎛j=1∑∣Y∣pi,j,1.0⎠⎞⎠⎞
其中, p i , j p_{i,j} pi,j 是第 j j j 个 tgt word y j y_j yj 关于第 i i i 个 src word x i x_i xi 的 attention probability. ∣ Y ∣ |Y| ∣Y∣ 是当前 tgt sentence 的长度, β \beta β 是 coverage normalization coefficient.
End-of-sentence normalizaiton
e p ( X , Y ) = γ ∣ X ∣ ∣ Y ∣ ep(X, Y) = \gamma \frac{|X|}{|Y|} ep(X,Y)=γ∣Y∣∣X∣
其中, ∣ X ∣ |X| ∣X∣ 是 src sentence 的长度, ∣ Y ∣ |Y| ∣Y∣ 是当前 tgt sentence 的长度, γ \gamma γ 是 end-of-sentence normalization coefficient.
Decoding with auxiliary language model
Beam search 还可以利用一个辅助的 language model 来定义 score funcition. 例如 “Shallow Fusion”:
s ( Y , X ) = s T M ( Y , X ) + β ⋅ s L M ( Y ) s(Y, X) = s_{TM}(Y, X) + \beta \cdot s_{LM}(Y) s(Y,X)=sTM(Y,X)+β⋅sLM(Y)
参考:openNMT beam search
这篇关于Beam Search score function的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!