1. 程式人生 > 實用技巧 >Synchronous Bidirectional Inference for Neural Sequence Generation

Synchronous Bidirectional Inference for Neural Sequence Generation

abstract:

  1. 目前seq2seq任務大多是從左到右一個詞一個詞生成的
  2. 神經網路的方法,比如LSTM或者self-attention,可以充分利用歷史資訊,但是不能利用未來資訊(future information),從而導致結果的不平衡(左邊由於右邊)
  3. 本文提出一種同步雙向推理模型:
  1. 提出平衡搜尋策略,利用同步雙向解碼
  2. 同時互動使用left2right和right2left的雙向解碼,以便同時使用歷史資訊和未來資訊
  3. 提出兩種引數優化的策略
  1. 在機器翻譯和摘要生成的實驗上,比baseline實現了顯著的提升

Introduction

  1. 目前許多自然語言處理的忍辱,例如機器翻譯,摘要生成和機器人都是一個seq2seq的生成問題,也就是講一個序列作為輸入,生成另一個序列的問題。目前主流的seq2seq框架都是從左向右,依賴之前的輸出生成當前的輸出。目前的方法主要還是在探索如何的利用好歷史資訊
  2. 無論是L2R模型還是R2L模型,都會造成結果的不平衡
  1. L2R模型:左邊效果優於右邊
  2. R2L模型:右邊效果優於左邊

  1. 目前充分利用L2R模型和R2L模型的方法如下:
  1. 【6,7】加強訓練過程中L2R和R2L的一致性來提高L2R的推理
  2. 【8.9】用R2L模型重排L2R模型的top-n結果
  3. 【10】首先得到R2L的輸出,利用輸入和R2L的輸出,共同生成L2R的輸出

上述方法雖然都用到了L2R模型和R2L模型,但是存在以下缺點:

  1. 訓練過程中分別訓練L2R模型和R2L模型
  2. 在推理的過程中,L2R模型和R2L模型沒有進行互動
  1. 本文提出一種同時利用L2R和R2L進行解碼並進行互動的同步雙向推理模型,模型如下圖:
  1. 提出一種同時適用於L2R和R2L模型的平衡搜尋演算法
  2. 在推理的每一步,每辦個分支分別保留來自L2RR2L推理的假設,每個假設都是利用兩個方向的已預測輸出生成的
  3. L2R模型和R2L模型之間的推理互動是通過一個同步attention實現的,這樣可以同時利用歷史資訊和未來資訊

箭頭的方向代表資訊的傳遞方向

  1. 實箭頭代表歷史資訊
  2. 虛箭頭代表未來資訊
  1. 為了檢驗本文模型的生成能力,我們分別用LSTM和self-attention表示上述模型,在機器翻譯和摘要生成兩個任務上進行驗證。此外提出兩種引數的優化策略。

Synchronous Bidirectional Inference:

  1. Seq2seq模型的目標就是在已知輸入序列的前提下,尋找輸出序列是的下面的條件概率最大

  1. 單向模型(Unidirectional Inference
  1. 將上述公式分解為L2R模型:

  1. 將上述模型分解為R2L模型:

無論是L2R模型還是R2L模型都缺少資訊,L2R模型缺少未來資訊,R2L模型缺少歷史資訊

  1. 同步雙向模型(Synchronous Bidirectional Beam Search
  1. 希望同時利用歷史資訊和未來資訊,但是這不切實際。因為預測yi+1需要用到yi的資訊,預測yi有需要用到yi+1的資訊,因此每一步的預測都需要用到所有的context資訊。所以我們後退一步,不在利用所有的context資訊,而是利用盡可能多的context資訊

  1. 演算法1

  1. 演算法2

  1. 演算法3:

Synchronous Bidirectional Inference for LSTM-based Seq2Seq Framework

  1. 無論哪種型別的seq2seq模型,都有一個編碼器和一個解碼器。給定輸入序列x將其轉化為contex表示C,再將C解碼成輸出序列y
  2. 基於LSTM的seq2seq框架:
  1. 編碼器:學習context向量C

利用上述公式,分別計算L2R和R2L的輸出,將其輸出通過全連線層得到最終輸出

  1. 解碼器:根據C選擇最合適的輸出:

其中zi是attention的輸出

Context向量的計算是通過attention,其中係數越大貢獻越大

  1. 基於LSTM的同步雙向推理:

  1. L2R模型

利用到雙向資訊

其中z_i是第i個位置的L2R輸出,ci是input根據attention計算的input context,cz_i是根據R2L模型的輸出通過attention計算的output context(右)

  1. R2L模型

其中z_i是第i個位置R2L的輸出,ci是input根據attention計算的input context,cz_i是根據L2R模型的輸出通過attention計算的output context(左)

  1. Synchronous Bidirectional Inference for Self-attention based Framework

在decoder步驟使用雙向資訊

對於L2R模型,利用了兩個attention,分別計算z_past(query為第i個位置的輸出,key和value都是歷史資訊)和z_future (query為第i個位置的輸出,key和value都是未來資訊)

對於R2L模型,利用了兩個attention,分別計算z_past(query為第i個位置的輸出,key和value都是未來資訊)和z_future (query為第i個位置的輸出,key和value都是歷史資訊資訊)

Z = z_parst + λ*tanh(z_future)

  1. 以上所說的未來資訊是右邊的資訊,歷史資訊是左邊的資訊

  1. Tranning

目標函式:

無論是L2R模型還是R2L模型,都同時用到了歷史資訊和未來資訊。這樣做存在的問題是,會自己預測自己,這樣是not reasonable。所以本文提出兩種引數優化方案:

  1. Two-pass Training

Step1.利用資料,分別訓練L2R模型和R2L模型

Step2.第二步訓練時,L2R模型用未來資訊採用step1中訓練的R2L模型的輸出,類似的R2L模型利用歷史資訊則用step1中的L2R模型的輸出

  1. Fine-tuning Strategy

Step1.並行訓練L2R模型和R2L模型利用三元組和下面的公式

Step2.訓練收斂後,在對資料集中10%資料進行解碼,得到(x,yL和yR),在進行Two-pass Trainingstep2

  1. Fine-tuning StrategyTwo-pass Training好的一點是不需要分別訓練兩個模型(同時訓練兩個模型,在我看來沒什麼差別),不需要對整個資料集進行decode,效率會好一點