在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個得分最高的序列。
這就是seq2seq中的beam search演算法過程,但是可能有些同學有乙個疑問,就是但i-1時刻選擇的單詞不同的時候,下一時刻的輸出概率分布為什麼會改變?
這是由於解碼的過程中,第i時刻的模型的輸入,包括了第i-1時刻模型的輸出,那麼很自然在第i-1時刻模型的輸出不同的時候,就會導致下一時刻模型的輸出概率分布會不同,因為第
i-1時刻的輸出作為引數影響了後一時刻模型的學習。
如下圖用了乙個slides的法語翻譯為英文的例子,可以更容易理解上面的解釋。
致謝:凌志、劉洋、皓宇、蕭瑟師兄
參考:誰能解釋下seq2seq中的beam search演算法過程?
seq2seq中的beam search演算法過程
首先說明在sequence2sequence模型中,beam search的方法只用在測試的情況,因為在訓練過程中,每乙個decoder的輸出是有正確答案的,也就不需要beam search去加大輸出的準確率。假設現在我們用機器翻譯作為例子來說明。我們的任務是翻譯中文 我是中國人 英文 i am c...
seq2seq模型詳解
在李紀為博士的畢業 中提到,基於生成的閒聊機械人中,seq2seq是一種很常見的技術。例如,在法語 英語翻譯中,的當前英語單詞不僅取決於所有前面的已翻譯的英語單詞,還取決於原始的法語輸入 另乙個例子,對話中當前的response不僅取決於以往的response,還取決於訊息的輸入。其實,seq2se...
Seq2Seq模型結構
seq2seq sequence to sequence 是乙個處理序列問題的模型,傳統的 rnn 或 lstm 只能處理 輸入及輸出是定長即 一對一或多對多的問題,而 seq2seq 則能處理一對多的問題,它也是 rnn 最重要的乙個變種 n vs m 輸入與輸出序列長度不同 編碼 解碼模型,主要...