一般情况下,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)