Beam Search vs. Greedy Decoding vs. Breadth First Search
在文本生成問題的解碼階段,定義句子長度爲T,詞匯總個數爲n, 每步需要計算的概率排名的詞匯的數量爲k(top k).可以將解碼方式分爲三種(計算當前步的詞匯的概率值需要考
慮到之前一步的詞匯的概率):
-
greedy decoding:每步只選擇概率最高的詞匯作爲下一步的輸入,並且不考慮上一步之前的概率值,O(nT)
-
beam search: (剪枝版viterbi decoding)每步選擇top k個詞匯作爲下一步的輸入(1<k<n),O(knT)
-
Breadth First Search: (暴力搜索) 每步選擇所有的詞匯作爲下一步的輸入(k =
n),並且在每一步都要將之前每一步的概率值計算在內,O(n^T)
所以greedy decoding 和beam search 是多項式時間算法,而viterbi decoding是非多項式時間算法。