Recurrent Neural Networks/zh

    From Marovi AI
    This page is a translated version of the page Recurrent Neural Networks and the translation is 100% complete.
    Other languages:
    Article
    Topic area Deep Learning
    Difficulty Intermediate
    Prerequisites Neural Networks, Backpropagation

    循環神經網絡RNN)是一類神經網絡,旨在處理序列數據——元素順序具有重要意義的數據。與前饋網絡不同,RNN 包含循環連接,使信息能夠跨時間步持續存在,從而賦予它們一種記憶形式。

    序列建模

    現實世界中的許多問題涉及序列:文本是單詞的序列,語音是音頻幀的序列,股票價格構成時間序列,DNA 是核苷酸的序列。標準前饋網絡需要固定大小的輸入,並獨立處理每個輸入,這使得它們不適用於上下文重要且長度可變的序列。

    RNN 通過一次處理一個元素的輸入來解決這個問題,同時維護一個隱藏狀態,用於總結迄今為止所看到的信息。

    基礎 RNN

    在每個時間步 $ t $,基礎 RNN 計算:

    $ \mathbf{h}_t = \tanh(\mathbf{W}_{hh}\,\mathbf{h}_{t-1} + \mathbf{W}_{xh}\,\mathbf{x}_t + \mathbf{b}_h) $
    $ \mathbf{y}_t = \mathbf{W}_{hy}\,\mathbf{h}_t + \mathbf{b}_y $

    其中 $ \mathbf{x}_t $ 是時間 $ t $ 處的輸入,$ \mathbf{h}_t $ 是隱藏狀態,$ \mathbf{y}_t $ 是輸出,$ \mathbf{W}_{hh}, \mathbf{W}_{xh}, \mathbf{W}_{hy} $ 是在所有時間步之間共享的權重矩陣。初始隱藏狀態 $ \mathbf{h}_0 $ 通常設置為零向量。

    關鍵的思想是在每個時間步都應用相同的參數——時間上的權重共享——這使得網絡能夠在序列中的不同位置之間進行泛化。

    時間反向傳播(BPTT)

    訓練 RNN 需要計算損失相對於共享權重的梯度。時間反向傳播(BPTT)將 RNN 在時間步上"展開",生成一個具有共享權重的深度前饋網絡,然後應用標準的反向傳播

    對於長度為 $ T $ 的序列,損失相對於 $ \mathbf{W}_{hh} $ 的梯度涉及雅可比矩陣的乘積:

    $ \frac{\partial L}{\partial \mathbf{W}_{hh}} = \sum_{t=1}^{T}\frac{\partial L_t}{\partial \mathbf{W}_{hh}} = \sum_{t=1}^{T}\sum_{k=1}^{t}\frac{\partial L_t}{\partial \mathbf{h}_t}\left(\prod_{j=k+1}^{t}\frac{\partial \mathbf{h}_j}{\partial \mathbf{h}_{j-1}}\right)\frac{\partial \mathbf{h}_k}{\partial \mathbf{W}_{hh}} $

    雅可比矩陣的乘積 $ \prod \partial \mathbf{h}_j / \partial \mathbf{h}_{j-1} $ 是梯度消失和梯度爆炸問題的根源。

    梯度消失問題

    當循環雅可比矩陣的譜半徑小於 1 時,梯度信號會隨時間呈指數衰減——這就是梯度消失問題。這使得基礎 RNN 極難學習跨越 10–20 個以上時間步的依賴關係。

    相反,當譜半徑超過 1 時,梯度可能呈指數增長——這就是梯度爆炸問題。梯度爆炸通常通過梯度裁剪(將梯度範數限制在某個閾值內)來處理,但梯度消失則需要架構層面的解決方案。

    長短期記憶(LSTM)

    LSTM(Hochreiter 和 Schmidhuber,1997)引入了一個細胞狀態 $ \mathbf{c}_t $,它以最小的干擾隨時間流動,以及三個控制信息流動的

    $ \mathbf{f}_t = \sigma(\mathbf{W}_f[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_f) $遺忘門
    $ \mathbf{i}_t = \sigma(\mathbf{W}_i[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_i) $輸入門
    $ \tilde{\mathbf{c}}_t = \tanh(\mathbf{W}_c[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_c) $候選細胞狀態
    $ \mathbf{c}_t = \mathbf{f}_t \odot \mathbf{c}_{t-1} + \mathbf{i}_t \odot \tilde{\mathbf{c}}_t $細胞狀態更新
    $ \mathbf{o}_t = \sigma(\mathbf{W}_o[\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf{b}_o) $輸出門
    $ \mathbf{h}_t = \mathbf{o}_t \odot \tanh(\mathbf{c}_t) $

    細胞狀態就像一條傳送帶:遺忘門決定丟棄哪些舊信息,輸入門決定存儲哪些新信息,輸出門控制暴露給下一層的內容。由於細胞狀態是通過加法(而不是乘法)進行更新的,梯度可以更容易地在長序列中流動。

    門控循環單元(GRU)

    GRU(Cho 等,2014)通過合併細胞狀態和隱藏狀態,並僅使用兩個門來簡化 LSTM:

    $ \mathbf{z}_t = \sigma(\mathbf{W}_z[\mathbf{h}_{t-1}, \mathbf{x}_t]) $更新門
    $ \mathbf{r}_t = \sigma(\mathbf{W}_r[\mathbf{h}_{t-1}, \mathbf{x}_t]) $重置門
    $ \tilde{\mathbf{h}}_t = \tanh(\mathbf{W}[\mathbf{r}_t \odot \mathbf{h}_{t-1}, \mathbf{x}_t]) $
    $ \mathbf{h}_t = (1 - \mathbf{z}_t) \odot \mathbf{h}_{t-1} + \mathbf{z}_t \odot \tilde{\mathbf{h}}_t $

    GRU 的參數比 LSTM 少,通常能夠達到相當的性能。在實踐中,LSTM 和 GRU 之間的選擇通常是憑經驗做出的。

    雙向 RNN

    雙向 RNN 在兩個方向上處理序列——前向(從左到右)和後向(從右到左)——並將隱藏狀態拼接起來:

    $ \mathbf{h}_t = [\overrightarrow{\mathbf{h}}_t;\; \overleftarrow{\mathbf{h}}_t] $

    這使得模型在每個時間步都能利用過去和未來的上下文,這對於命名實體識別和機器翻譯等任務非常有益,因為在這些任務中,單詞的含義取決於其周圍的上下文。

    應用

    RNN 及其門控變體已被應用於各種序列任務:

    • 語言建模 —— 預測序列中的下一個單詞。
    • 機器翻譯 —— 用於序列到序列翻譯的編碼器-解碼器架構(Sutskever 等,2014)。
    • 語音識別 —— 將音頻轉錄為文本(通常與 CTC 損失結合使用)。
    • 情感分析 —— 對文本的情感進行分類。
    • 時間序列預測 —— 預測金融或傳感器數據的未來值。
    • 音樂生成 —— 生成音符序列。

    需要注意的是,對於許多 NLP 任務,Transformers(Vaswani 等,2017)由於能夠並行處理序列,並通過 self-attention 更有效地捕捉長距離依賴關係,已在很大程度上取代了 RNN。

    參見

    參考文獻

    • Elman, J. L. (1990). "Finding Structure in Time". Cognitive Science, 14(2), 179–211.
    • Hochreiter, S. 與 Schmidhuber, J. (1997). "Long Short-Term Memory". Neural Computation, 9(8), 1735–1780.
    • Cho, K. et al. (2014). "Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation". EMNLP.
    • Sutskever, I., Vinyals, O. 與 Le, Q. V. (2014). "Sequence to Sequence Learning with Neural Networks". NeurIPS.
    • Goodfellow, I., Bengio, Y. 與 Courville, A. (2016). Deep Learning, 第 10 章. MIT Press.