【進階篇】Recurrent Group教程
導語
PaddlePaddle 高度支持靈活和高效的循環神經網路配置。接下來的進階篇推文將圍繞RNN模型展開,指導你如何在 PaddlePaddle 中配置和使用循環神經網路。本部分推文目錄如下:
2.11:【進階篇】RNN配置
2.12:【進階篇】Recurrent Group教程
2.13:【進階篇】支持雙層序列作為輸入的Layer
2.14:【進階篇】單雙層RNN API對比介紹
編寫|PaddlePaddle
排版|wangp
1
概述
序列數據是自然語言處理任務面對的一種主要輸入數據類型。
一句話是由詞語構成的序列,多句話進一步構成了段落。因此,段落可以看作是一個嵌套的雙層的序列,這個序列的每個元素又是一個序列。
雙層序列是PaddlePaddle支持的一種非常靈活的數據組織方式,幫助我們更好地描述段落、多輪對話等更為複雜的語言數據。基於雙層序列輸入,我們可以設計搭建一個靈活的、層次化的RNN,分別從詞語和句子級別編碼輸入數據,同時也能夠引入更加複雜的記憶機制,更好地完成一些複雜的語言理解任務。
在PaddlePaddle中,recurrent_group是一種任意複雜的RNN單元,用戶只需定義RNN在一個時間步內完成的計算,PaddlePaddle負責完成信息和誤差在時間序列上的傳播。
更進一步,recurrent_group同樣可以擴展到雙層序列的處理上。通過兩個嵌套的recurrent_group分別定義子句級別和詞語級別上需要完成的運算,最終實現一個層次化的複雜RNN。
目前,在PaddlePaddle中,能夠對雙向序列進行處理的有recurrent_group和部分Layer。
2
相關概念
(1)基本原理
recurrent_group是PaddlePaddle支持的一種任意複雜的RNN單元。使用者只需要關注於設計RNN在一個時間步之內完成的計算,PaddlePaddle負責完成信息和梯度在時間序列上的傳播。
PaddlePaddle中,recurrent_group的一個簡單調用如下:
recurrent_group(step,input, reverse)
使用recurrent_group的核心是設計step函數的計算邏輯。step函數內部可以自由組合PaddlePaddle支持的各種layer,完成任意的運算邏輯。recurrent_group的輸入(即input)會成為step函數的輸入,由於step 函數只關注於RNN一個時間步之內的計算,在這裡recurrent_group替我們完成了原始輸入數據的拆分。
(2)輸入
recurrent_group處理的輸入序列主要分為以下三種類型:
(3)輸入示例
序列生成任務大多遵循encoder-decoer架構,encoder和decoder可以是能夠處理序列的任意神經網路單元,而RNN是最流行的選擇。
給定encoder輸出和當前詞,decoder每次預測產生下一個最可能的詞語。在這種結構中,decoder接受兩個輸入:
在序列生成任務中,decoder RNN總是引用上一時刻預測出的詞的詞向量,作為當前時刻輸入。GeneratedInput自動完成這一過程。
(4)輸出
step函數必須返回一個或多個Layer的輸出,這個Layer的輸出會作為整個recurrent_group 最終的輸出結果。在輸出的過程中,recurrent_group會將每個時間步的輸出拼接,這個過程對用戶也是透明的。
(5)memory
memory只能在recurrent_group中定義和使用。memory不能獨立存在,必須指向一個PaddlePaddle定義的Layer。引用memory得到這layer上一時刻輸出,因此,可以將memory理解為一個時延操作。
可以顯示地指定一個layer的輸出用於初始化memory。不指定時,memory默認初始化為0。
3
雙層RNN介紹
recurrent_group幫助我們完成對輸入序列的拆分,對輸出的合併,以及計算邏輯在序列上的循環展開。利用這種特性,兩個嵌套的recurrent_group能夠處理雙層序列,實現詞語和句子兩個級別的雙層RNN結構。
為了描述方便,下文以NLP任務為例,將含有子句(subseq)的段落定義為一個雙層序列,將含有詞語的句子定義為一個單層序列,那麼0層序列即為一個詞語。
4
雙層RNN的使用
(1)訓練流程的使用方法
使用recurrent_group需要遵循以下約定:
A.單進單出:輸入和輸出都是單層序列。
B.雙進雙出:輸入和輸出都是雙層序列。
C.雙進單出:目前還未支持,會報錯」In hierachical RNN, all out links should be from sequences now」。
(2)生成流程的使用方法
使用beam_search需要遵循以下約定:
*原創貼,版權所有,未經許可,禁止轉載
*值班小Paddle:wangp
*歡迎在留言區分享您的觀點
TAG:PaddlePaddle |