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(YX)+cp(X,Y)=lp(Y)logP(yiX,y1,...,i1)+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=1Xlogminj=1Ypi,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)=γYX

其中, ∣ 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值