循環神經網絡(recurrent neural network,RNN)(1986),一類用於處理序列數據的NN。正如卷積網絡可很容易地擴展到具有很大寬度和高度的圖像,RNN可以很容易擴展到更長的序列、大多數RNN也可處理可變長度的序列。
在模型的不同部分共享參數。能夠使得模型擴展到不同形式的樣本並進行泛化。CNN中如何共享參數已經知道了,本節將看到如何在RNN上應用該思想。
1. 計算圖展開
考慮由外部信號x(t)驅動的動態系統:
基本上任何涉及循環的函數可以被認爲是一個循環神經網絡。
爲了表明狀態是網絡的隱藏單元,我們使用變量h代表狀態重寫上式:
黑色方塊表示單個時間步。左部是迴路原理圖,右部是展開的計算圖,展開圖的大小取決於序列長度。我們可以在每個時間步使用相同參數的相同轉移函數f,不需要在所有可能時間步學習獨立的模型。
2. 循環神經網絡
第一種經典常用架構是:
可以看到,參數在每個時間步共享的。該圖中,每個時間步都有輸出,並且隱藏單元之間有循環連接的循環網絡。這是一種設計模式。
第2種模式:每個時間步都產生一個輸出,只有當前時刻的輸出到下個時刻的隱藏單元之間有循環連接的循環網絡。如圖示:
o是允許傳播到未來的唯一信息。此處沒有從h 前向傳播的直接連接。之前的h 僅通過產生的預測間接地連接到當前。o 通常缺乏過去的重要信息,除非它非常高維且內容豐富。這使得該圖中的RNN不那麼強大,但是它更容易訓練,因爲每個時間步與其他時間步分離訓練,允許訓練期間更多的並行化。
第3中模式:隱藏單元之間存在循環連接,但讀取整個序列後產生單個輸出的循環網絡。如下圖示:
綜上,第一種模式最常用,以下討論主要基於此展開。
RNN的前向傳播公式:
損失函數爲:
計算這個損失函數對各個參數的梯度是昂貴的操作。梯度計算涉及執行一次前向傳播(如在展開圖中從左到右的傳播),接着是由右到左的反向傳播。運行時間是O(t),並且不能通過並行化來降低,因爲前向傳播圖是固有循序的。每個時間步只能一前一後地計算。前向傳播中的各個狀態必須保存,直到它們反向傳播中被再次使用,因此內存代價也是O(t)。應用於展開圖且代價爲O(t) 的反向傳播算法稱爲通過時間反向傳播(back-propagation through time,BPTT)
2.1 Teacher Focing
消除隱藏到隱藏循環(第2種模式)的優點在於,任何基於比較時刻t 的預測和時刻t 的訓練目標的損失函數中的所有時間步都解耦了。因此訓練可以並行化,即在各時刻t 分別計算梯度。因爲訓練集提供輸出的理想值,所以沒有必要先計算前一時刻的輸出。
從輸出導致循環連接的模型可用Teacher Forcing進行訓練。使用Teacher Forcing的最初動機:爲了在缺乏隱藏到隱藏連接的模型中避免通過時間反向傳播。
Teacher Forcing是一種訓練技術,適用於輸出與下一時間步的隱藏狀態存在連接的RNN。(左) 訓練時,我們將訓練集中正確的輸出y(t) 反饋到h(t+1)。(右) 當模型部署後,真正的輸出通常是未知的。在這種情況下,我們用模型的輸出o(t) 近似正確的輸出y(t),並反饋回模型。
2.2 計算梯度
無需特殊對待,仍是反向傳播思想。
部分章節不展開。僅知其名。
3. 雙向RNN
4. 編解碼的序列到序列
5. 深度RNN
6. 遞歸神經網絡
遞歸神經網絡代表循環網絡的另一個擴展,它被構造爲深的樹狀結構而不是RNN的鏈狀結構,因此是不同類型的計算圖。如下圖示:
(作者建議不要將遞歸神經網絡縮寫爲RNN,以免與循環神經網絡混淆)
7. 長期依賴
長期依賴:經過許多階段傳播後的梯度傾向於消失(大部分時間)或爆炸(很少,但對優化過程影響很大)。循環神經網絡所使用的函數組合有點像矩陣乘法,連乘後導致不與最大特徵向量對齊的部分最終丟棄。(此前已討論過)
8. 回聲狀態網絡
9. 滲漏單元和其他多時間尺度的策略
處理長期依賴的一種方法是設計工作在多個時間尺度的模型,使模型的某些部分在細粒度時間尺度上操作並能處理小細節,而其他部分在粗時間尺度上操作並能把遙遠過去的信息更有效地傳遞過來。
存在多種同時構建粗細時間尺度的策略。這些策略包括:在時間軸增加跳躍連接,滲漏單元使用不同時間常數整合信號,並去除一些用於建模細粒度時間尺度的連接。
10. LSTM、門控RNN
實際應用中比較有效的序列模型稱爲門控RNN (gated RNN)。包括基於長短期記憶(long short-term memory,LSTM)和基於門控循環單元(gated recurrent unit,GRU)的網絡。
像滲漏單元一樣,門控RNN想法也是基於生成通過時間的路徑,其中導數既不消失也不發生爆炸。滲漏單元通過手動選擇常量的連接權重或參數化的連接權重來達到這一目的。門控RNN將其推廣爲在每個時間步都 可變的連接權重。
滲漏單元允許網絡在較長持續時間內積累信息(諸如用於特定特徵或類的線索)。然而,一旦該信息被使用,讓神經網絡遺忘舊的狀態可能是有用的。例如,如果一個序列是由子序列組成,我們希望滲漏單元能在各子序列內積累線索,我們需要將狀態設置爲0以 忘記舊狀態 的機制。我們希望神經網絡學會決定何時清除狀態,而不是手動決定。這就是門控RNN要做的事。
10.1 LSTM
基本架構圖:
LSTM中的單個細胞的結構是:
下面的兩個輸入,均是
遺忘門:
內部狀態:
外部輸入門:
輸出:
LSTM網絡比簡單的循環架構更易於學習長期依賴。引入自循環的巧妙構思,以產生梯度長時間持續流動的路徑。一個關鍵擴展是使自循環的權重視上下文而定,而不是固定的。
10.2 其他門控RNN
LSTM架構中哪些部分是真正必須的?還可以設計哪些其他成功架構允許網絡動態地控制時間尺度和不同單元的遺忘行爲?2014-2015年出現的GRU,門控循環單元。其和LSTM有設計上的不同,但師出同門。
11. 優化長期依賴
- 截斷梯度
- 引導信息流的正則化
12. 外顯記憶
AI需要知識並且可以通過學習獲取知識,這已促使大型深度架構的發展。然而,存在不同種類的知識。有些知識是隱含的、潛意識的並且難以用語言表達。
神經網絡擅長存儲隱性知識,但是他們很難記住事實。2014年有人推測這是因爲神經網絡缺乏工作存儲(working memory) 系統,即類似人類爲實現一些目標而明確保存和操作相關信息片段的系統。
爲此,2014年引入了記憶網絡。2014年出現了神經網絡圖靈機,不需要明確的監督指示採取哪些行動而能學習從記憶單元讀寫任意內容,允許端到端的訓練。長期以來推理能力被認爲是重要的,而不是對輸入做出自動的、直觀的反應。
設計架構很像一個馮諾依曼架構的計算機。然而控制器由NN擔當。想法非常nice。
本章小結
RNN提供了將DL擴展到序列數據的一種方法,其是DL工具箱中最後一個主要的工具。後續關注:如何選擇和使用這些工具,如何在真實世界的任務中應用它們。