1. 程式人生 > >深度學習基礎--不同網路種類--RNN

深度學習基礎--不同網路種類--RNN

RNN

  全連線的DNN存在著一個問題——無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。對了適應這種需求,出現了另一種神經網路結構——迴圈神經網路RNN。   神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出。   RNN可以看成一個在時間上傳遞的神經網路,它的深度是時間的長度!正如我們上面所說,“梯度消失”現象又要出現了,只不過這次發生在時間軸上。

Bidirectional RNNs(雙向網路)的改進之處

  假設當前的輸出(第t步的輸出)不僅僅與前面的序列有關,並且還與後面的序列有關。   為解決RNN的時間上的梯度消失,使用LSTM(長短時記憶模型),通過門的開關實現時間上記憶功能,並防止梯度消失。   對於t時刻來說,它產生的梯度在時間軸上向歷史傳播幾層之後就消失了,根本就無法影響太遙遠的過去。   因此,之前說“所有歷史”共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。

思考與總結

  RNN既然能繼承歷史資訊,是不是也能吸收點未來的資訊呢?因為在序列訊號分析中,如果我能預知未來,對識別一定也是有所幫助的。   因此就有了雙向RNN、雙向LSTM,同時利用歷史和未來的資訊。   事實上,不論是那種網路,他們在實際應用中常常都混合著使用,比如CNN和RNN在上層輸出之前往往會接上全連線層,很難說某個網路到底屬於哪個類別。