Beam search 演算法的通俗理解

2021-09-17 23:48:21 字數 2083 閱讀 2765

beam search 演算法在文字生成中用得比較多,用於選擇較優的結果(可能並不是最優的)。接下來將以seq2seq機器翻譯為例來說明這個beam search的演算法思想。

在機器翻譯中,beam search演算法在測試的時候用的,因為在訓練過程中,每乙個decoder的輸出是有與之對應的正確答案做參照,也就不需要beam search去加大輸出的準確率。

有如下從中文到英語的翻譯:

中文:

我 愛 學習,學習 使 我 快樂
英語:

xx)進行編碼,得到語義向量ccc。

得到語義向量c

cc後,進入解碼階段,依次翻譯成目標語言。在正式解碼之前,有乙個引數需要設定,那就是beam search中的beam size,這個引數就相當於top-k中的k,選擇前k個最有可能的結果。在本例中,我們選擇beam size=3。

來看解碼器的第乙個輸出y

1y_1

y1​,在給定語義向量c

cc的情況下,首先選擇英語詞彙表中最有可能k個單詞,也就是依次選擇條件概率p(y

1∣c)

p(y_1|c)

p(y1​∣

c)前3大對應的單詞,比如這裡概率最大的前三個單詞依次是i

ii,lea

rnin

glearning

learni

ng,h ap

pyhappy。

接著生成第二個輸出y

2y_2

y2​,在這個時候我們得到了那些東西呢,首先我們得到了編碼階段的語義向量c

cc,還有第乙個輸出y

1y_1

y1​。此時有個問題,y

1y_1

y1​有三個,怎麼作為這一時刻的輸入呢(解碼階段需要將前一時刻的輸出作為當前時刻的輸入),答案就是都試下,具體做法是:

這樣就得到了18個組合,每一種組合對應乙個概率值p(y

1∣c)

p(y2

∣c,y

1)p(y_1|c)p(y_2|c, y_1)

p(y1​∣

c)p(

y2​∣

c,y1

​),接著在這18個組合中選擇概率值top3的那三種組合,假設得到ilo

vei love

ilove,iha

ppyih

appy

,l ea

rnin

gmak

elearning make

learni

ngma

ke。接下來要做的重複這個過程,逐步生成單詞,直到遇到結束識別符號停止。最後得到概率最大的那個生成序列。其概率為:

p (y

∣c)=

p(y1

∣c)p

(y2∣

c,y1

),..

.,p(

y6∣c

,y1,

y2,y

3,y4

,y5)

p(y|c)=p(y_1|c)p(y_2|c,y_1),...,p(y_6|c,y_1,y_2,y_3,y_4,y_5)

p(y∣c)

=p(y

1​∣c

)p(y

2​∣c

,y1​

),..

.,p(

y6​∣

c,y1

​,y2

​,y3

​,y4

​,y5

​)以上就是beam search演算法的思想,當beam size=1時,就變成了貪心演算法。

beam search演算法也有許多改進的地方,根據最後的概率公式可知,該演算法傾向於選擇最短的句子,因為在這個連乘操作中,每個因子都是小於1的數,因子越多,最後的概率就越小。解決這個問題的方式,最後的概率值除以這個生成序列的單詞數(記生成序列的單詞數為n

nn),這樣比較的就是每個單詞的平均概率大小。

此外,連乘因子較多時,可能會超過浮點數的最小值,可以考慮取對數來緩解這個問題。

通俗tarjan演算法講解

全網最詳細tarjan演算法講解,我不敢說別的。反正其他tarjan演算法講解,我看了半天才看懂。我寫的這個,讀完一遍,發現原來tarjan這麼簡單!tarjan演算法,乙個關於 圖的聯通性的神奇演算法。基於dfs 迪法師 演算法,深度優先搜尋一張有向圖。注意!是有向圖。根據樹,堆疊,打標記等種種神...

通俗理解EM演算法

如果使用基於最大似然估計的模型,模型中存在隱變數,就要用em演算法做引數估計。個人認為,理解em演算法背後的idea,遠比看懂它的數學推導重要。idea會讓你有乙個直觀的感受,從而明白演算法的合理性,數學推導只是將這種合理性用更加嚴謹的語言表達出來而已。打個比方,乙個梨很甜,用數學的語言可以表述為糖...

Apriori演算法通俗講解

apriori演算法用於解決大規模資料集的關聯分析問題。關聯分析 association analysis 或關聯規則學習 association rule learning 是從大規模資料集中尋找物品間的隱含關係。但是,尋找物品的不同組合是一項十分耗時的任務,計算代價高,蠻力搜尋並不能解決問題,所...