大牛之作< Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks>
NIPS 2015
引言
RNN可以被用於序列標註問題(比如說機器翻譯),目前訓練RNN網路的主要方式是給定網路當前狀態以及previous token來最大化序列里每個token的概率,在訓練過程中每個真實的token都是已知的,但在inference的過程中,previous token是未知的,這時就會用模型生成的token來作為previous token,這就會導致生成序列的過程中產生的錯誤會一直累加(生成的錯誤token會作為生成下一個token的previous token)。
既然inference無法像訓練過程一樣有true token,那麼就讓訓練過程向inference過程靠攏,每個previous token都有一定幾率是模型生成的token,讓模型自己處理產生的錯誤,
Model
對於一個輸入輸出對 ,其中X是一個輸入序列,Y是一個輸出token序列 ,輸出Y的概率為
對於一個RNN網路來說,當前輸出的 由當前網路狀態 決定
而 則由 和之前輸出的 計算得出
其中 是softmax分類器的輸出,而 則是一個非線性函數。
Training
RNN網路的訓練過程就是尋找一個參數集 ,在給定的輸入X下最大化生成正確目標序列的概率值,即
Method
在序列預測的過程中,訓練和inference的主要區別就是在預測token 時,用的是真實的previous token 還是模型自己輸出的 。於是作者提出了一種取樣機制,就是在訓練過程中隨機決定是用 還是 ,其中 表示選 的概率,並且,在訓練初期, 應該大一些,後期應該小一些,因此 應該隨著訓練次數的增長而減小
不同的decay方式如上圖:
- Linear decay:
- Exponential decay:
- Inverse sigmoid decay:
當 取到 時,我們也可以在 時使用後向傳播,不過這個是future work。
Experiment
作者在圖像標註(Image Captioning),成分句法分析(constituency parsing)和語音識別(speech recognition)三個方面測試了這個機制。
Image Captioning
圖像標註就是把一張圖片映射到一個句子序列,來描述這個圖像的內容,因為圖像的描述有很多中,因此圖像標註的評價標準還不統一。
這裡用的數據集是MSCOCO數據集,訓練集有75k而測試集為5k,每張圖像有5個不同的描述,圖像由一個訓練好的CNN網路預處理好了,用的是Inverse sigmoid decay。
constituency parsing
一個成分解析樹將一段文本轉化為短語,樹中的非葉子結點是短語的類型,而葉子結點是句子中的word,邊是沒有標記的, 一個簡單的句子"John sees Bill"解析到的結果如圖
結果如下
speech recognition
這個太長了。。。懶得看了,結果貼一下吧
總結
這算是一個RNN網路的優化策略吧,沒有改變RNN的結構。
推薦閱讀:
※再薅谷歌羊毛:用谷歌GPU免費訓練你的機器學習模型
※Hulu機器學習問題與解答系列 | 十六:經典優化演算法
※條件隨機場CRF
※多版本中文停用詞詞表 + 多版本英文停用詞詞表 + python詞表合併程序
※機器學習-高斯判別分析與樸素貝葉斯
TAG:深度學習DeepLearning | 機器學習 | 自然語言處理 |