集束搜尋(Beam Search)

2022-06-23 15:27:12 字數 524 閱讀 2898

beam search的一般步驟為:

1、初始化beam_size個序列,序列均為空,這些序列稱之為beam paths;

2、取下一個frame的前n個候選值(n一般為beam size或者更大,frame內部侯選值已按照概率倒序排列),與已存在的beam paths組合形成n * beam_size條路徑,稱之為prob_paths;

3、對prob_paths進行打分,取前beam_size個prob_path作為新的beam paths;

4、若解碼結束則完成演算法,否則回到步驟2。

這個演算法常常被用於解碼可選狀態數量多的情形,比如生成對話、生成描述、機器翻譯等,每一步都有詞表大小的可選狀態集。

多適用於機器翻譯,語音識別,當系統的資料集比較大,計算資源受限,而且沒有唯一最優解時,該演算法能夠較快的找到接近最正確的解。

在sequence2sequence模型中,beam search的方法只用在測試的情況,因為在訓練過程中,每一個decoder的輸出是有正確答案的,也就不需要beam search去加大輸出的準確率。