關於遞迴神經網路(RNN)的入門指南

關於遞迴神經網路(RNN)的入門指南

神經網路正在為不同行業的廣泛的深度學習應用提供動力,其用例包括自然語言處理(NLP)、計算機視覺和藥物探索。有不同型別的神經網路用於不同的應用,如:

  • 前饋神經網路
  • 卷積神經網路(CNNs)
  • 遞迴神經網路(RNNs)

在這篇文章中,我們將探討RNNs及其使用案例。

什麼是遞迴神經網路(RNNs)?

遞迴神經網路(RNNs)是一類人工神經網路,它將以前的步驟的輸出作為當前步驟的輸入。在這個意義上,RNNs對之前的計算有一個 “記憶”。這使得這些演算法適合於順序問題,如自然語言處理(NLP)、語音識別或時間序列分析,其中當前的觀察結果取決於以前的觀察結果。

RNNs和其他神經網路演算法的區別是什麼?

RNNs與前饋和卷積神經網路(CNN)的區別在於其時間維度。在其他型別的神經網路演算法中,模型的輸入和輸出被認為是相互獨立的。在RNN中,輸出取決於之前的元素。

假設你有一個包含 “現在是什麼時候?”這句話的語音識別問題。這個問題中的部署演算法需要考慮到具體的單詞序列,以使輸出有意義。如下圖所示,RNN通過使用以前的單詞作為輸入來預測句子中的下一個單詞。

部署演算法

由於在其他型別的神經網路中,輸入和輸出是相互獨立的,所以它們更適合於不具有順序性的問題,如影象識別或表格資料分析。

RNNs是如何工作的?

下面的圖片展示了RNN的基本結構。右邊的圖是左邊的圖的完整(或展開)版本。

RNN的基本結構

  • 底層x是輸入層。模型的輸入用x(t)表示,其中t是時間步長。x(t)可以是一個單詞及其在句子中的位置,或者是某一天的股票價格。
  • h(t)表示網路在時間步驟t的隱藏狀態。隱藏狀態作為模型的 “儲存器”,它們是根據當前輸入x(t)和先前的狀態h(t-1)計算出來的。
  • 頂層o是輸出層。o(t)代表模型在時間步驟t的輸出。當前輸出由當前輸入x(t)和當前隱藏狀態h(t)決定,而當前隱藏狀態取決於以前的隱藏狀態。這是RNN的顯著特徵,因為當前輸出取決於當前輸入和先前輸入。
  • 引數(U,V,W)代表輸入、隱藏狀態和輸出之間的權重。它們控制這些之間的影響程度。

更多資訊,你可以檢視關於普通神經網路如何工作的文章。RNNs是這些常規神經網路的擴充套件。

什麼是RNN的用例和應用?

RNNs及其變體LSTMs和GRU被用於輸入資料具有順序性的問題中。有順序資料的應用包括:

RNNs的挑戰是什麼?

遞迴神經網路存在一個叫做梯度消失的問題,這也是其他神經網路演算法的普遍問題。梯度消失問題是一種叫做反向傳播的演算法的結果,該演算法允許神經網路優化學習過程。

簡而言之,神經網路模型比較其輸出和所需輸出之間的差異,並將這一資訊反饋給網路,使用一個稱為梯度的值來調整引數,如權重。梯度值越大,意味著對引數的調整越大,反之亦然。這個過程一直持續到達到令人滿意的精度水平。

RNNs利用通過時間的反向傳播(BPTT)演算法,其計算結果取決於以前的步驟。然而,如果在反向傳播過程中某一步的梯度值太小,那麼下一步的值就會更小。這導致梯度以指數形式減少,達到模型停止學習的程度。

這被稱為梯度消失問題,並導致RNN有一個短期記憶:早期的輸出對當前的輸出影響越來越小或沒有影響。這可以從上面的 “現在是什麼時候?”問題中看出,隨著模型在句子中的移動,早期單詞的顏色會縮小。

梯度消失的問題可以通過不同的RNN變體來補救。其中兩個被稱為長短時記憶(LSTM)和門控迴圈單元(GRU)。這些演算法使用被稱為 “門 “的機制來控制保留和遺忘多少資訊以及哪些資訊。

評論留言