首先說明在sequence2sequence模型中,beam search的方法只用在測試的情況,因為在訓練過程中,每乙個decoder的輸出是有正確答案的,也就不需要beam search去加大輸出的準確率。
假設現在我們用機器翻譯作為例子來說明。
我們的任務是翻譯中文「我是中國人」--->英文「i am chinese」
假設我們的詞表大小只有三個單詞就是i am chinese。
那麼如果我們的beam size為2的話,我們現在來解釋,
如下圖所示,我們在decoder的過程中,有了beam search方法後,在第一次的輸出,我們選取概率最大的"i"和"am"兩個單詞,而不是只挑選概率最大的單詞。
然後接下來我們要做的就是,把「i」單詞作為下乙個decoder的輸入算一遍得到y2的輸出概率分布,把「am」單詞作為下乙個decoder的輸入算一遍也得到y2的輸出概率分布。
那麼此時我們由於我們的beam size為2,也就是我們只能保留概率最大的兩個序列,此時我們可以計算所有的序列概率:
「i i」 = 0.4*0.3 "i am" = 0.4*0.6
"i chinese" = 0.4*0.1 "am i" = 0.5*0.3
"am am" = 0.5*0.3 "am chinese" = 0.5*0.4
我們很容易得出倆個最大概率的序列為 「i am」和「am chinese」,然後後面會不斷重複這個過程,直到遇到結束符為止。
最終輸出2個得分最高的序列。
以此類推,得到最後兩個分數最高的序列
理解二:來自知乎:
test的時候,假設詞表大小為3,內容為a,b,c,beam size是2
decoder的時候:
1:生成第乙個詞的時候,選擇概率最大的兩個詞,假設為a,c,那麼當前序列就是a,c
2:生成第二個詞的時候,我們將當前序列a和c,分別作為輸入,得到詞表中所有的詞的概率,新的6個序列,aa,ab,ac,ca,cb,cc,然後從其中選擇得分最高的2個,作為當前序列,假如為aa,cb
3:後面會不斷的重複這個過程,直到遇到結束符為止,最終輸出2個得分最高的序列。
可能有些同學有乙個疑問,就是但i-1時刻選擇的單詞不同的時候,下一時刻的輸出概率分布為什麼會改變?
這是由於解碼的過程中,第i時刻的模型的輸入,包括了第i-1時刻模型的輸出,那麼很自然在第i-1時刻模型的輸出不同的時候,就會導致下一時刻模型的輸出概率分布會不同。
因為第i-1時刻的輸出作為引數影響了後一時刻模型的學習。
如下圖用了乙個slides的法語翻譯為英文的例子,可以更容易理解上面的解釋。
seq2seq中的beam search演算法過程
在sequence2sequence模型中,beam search的方法只用在測試的情況,因為在訓練過程中,每乙個decoder的輸出是有正確答案的,也就不需要beam search去加大輸出的準確率。假設現在我們用機器翻譯作為例子來說明,我們需要翻譯中文 我是中國人 英文 i am chinese...
seq2seq模型詳解
在李紀為博士的畢業 中提到,基於生成的閒聊機械人中,seq2seq是一種很常見的技術。例如,在法語 英語翻譯中,的當前英語單詞不僅取決於所有前面的已翻譯的英語單詞,還取決於原始的法語輸入 另乙個例子,對話中當前的response不僅取決於以往的response,還取決於訊息的輸入。其實,seq2se...
Seq2Seq模型結構
seq2seq sequence to sequence 是乙個處理序列問題的模型,傳統的 rnn 或 lstm 只能處理 輸入及輸出是定長即 一對一或多對多的問題,而 seq2seq 則能處理一對多的問題,它也是 rnn 最重要的乙個變種 n vs m 輸入與輸出序列長度不同 編碼 解碼模型,主要...