beam search:在test的過程中生成幾段序列的方式,通常用於機器翻譯或看圖說話中。
beam search 中有一個重要的參數:beam size = k,表示最後生成的得分最高的前k個序列
在看圖說話或機器翻譯中,最後生成的句子中的每個單詞肯定是訓練集所產生語料庫中的單詞,採用全局搜索,空間太大,效果提升並不明顯。
beam search的原理(下面用一個例子簡單描述)
在test的時候,假設詞表大小爲n,beam size = k.
對圖片或語句先進行encoder,decoder 解碼的時候
1:生成第一個詞的時候,選擇詞表中經過RNN計算出的概率(P1)最大的k個詞,就是k個序列中的第一個詞
2:生成第二個詞的時候,在已知第一個詞的基礎上,分別與詞表中的所有詞進行組合,得到新的序列,選擇k個概率(P2)最高的,作爲k個序列的前兩個詞
3:重複上述過程,直到遇到結束符爲止。最終輸出k個得分最高的序列,爲機器翻譯或看圖說話的k個可能結果。