循環神經網路

  • 2020 年 12 月 16 日
  • AI

循環神經網路RNN常用於處理序列數據, 但缺點是不適合長序列, 易梯度消失

  • 因為MLP和CNN都是單獨處理每個輸入數據的, 無法捕捉輸入與輸入之間的關係, 尤其是輸入之間具有時間關係的數據. 若用MLP或CNN 處於序列數據, 需要將序列視為整體.
  • 循環神經網路的歸納偏置在與捕捉時序過程中的長期依賴性.

h^t = f(h^{t-1}, x^t; \theta )

y^t = g(h^t; \theta) # 這個是對根據當前狀態做出預測, 不是必須的

LSTM 被提出來處理梯度消失問題. 尤其適合長序列, 但缺點是計算量大

類似於RNN, LSTM 經過四個非線性函數, 其中作為原始輸入的映射和 三個門, 輸出多來一個細胞狀態:

z = tanth(h^{t-1}, x^t; \theta ) # 映射到[-1, 1]

z^i = \sigma(h^{t-1}, x^t; \theta_i )  # 選擇記憶

z^f = \sigma(h^{t-1}, x^t; \theta_f )  #遺忘門

z^o = \sigma(h^{t-1}, x^t; \theta_o)  # 輸出門

c^t = z^f * c^{t-1} + z^i * z # 通過選擇和遺忘門更新細胞狀態, 細胞狀態類似與傳送帶, 保存長期的資訊.

h^t = z^o * tanth(c^t) # 更新當前狀態. 作為短期記憶.

GRU 被提出來簡化LSTM的計算, 顯然 GRU 丟去了LSTM中的一個門, 顯然參數少了 自然計算就快了, 訓練集大的時候, 性能自然也不如LSTM.

r = \sigma(h^{t-1}, x^t; \theta_r )  # 重置門

z= \sigma(h^{t-1}, x^t; \theta_z )  # 更新門

h^{t'}= tanth(h^{t-1}* r, x^t; \theta)  # 重置狀態

h^t = (1-z) * h^{t-1} + h^{t'} * z # 更新狀態

# LSTM 和 GRU 都屬於門控RNN, 其思路是基於生成通過時間的路徑, 其導數既不消失, 也不爆炸. 即 我們希望RNN在當前時刻能記住很久以前的有用的事情, 但也希望他忘掉一些沒用的事情. 然後把提取的資訊/狀態/細胞 保留到下一個時刻.

# LSTM 中的門控機制和CV中的soft attention 機制是等價的, 不過背景起源不同. Transformer 也有類似的架構:


重要結論

  • 雖然假設空間覆蓋面很廣, 但是由於深度學習模型非常複雜, 如果學習演算法沒有限制去學習簡單模型, 那麼他很可能找不到簡單解
  • 深度學習是工程, 而且每個問題都具有特殊的性質, 沒有哪個理論能提前告訴你這個方法一定能最優的解決問題, 你必須不停迭代, 深入研究問題和數據性質, 改進方法.
  • 一維卷積 有時候要比RNN 處理數據更方便, 這取決於你研究的問題.


啟發:

  • 網路設計 要考慮學習參數的梯度和數據之間的融合.網路的結構最好也讓優化演算法決定. 易於優化的網路 和 符合數據task的歸納偏置網路 才是 正確的設計方式.
  • 因為運算的實際效果是由權重決定的, 而權重是以端到端的方式學習的, 不可能有特定目的. 所以把網路設計過程理解使網路更容易優化比較合適. 運算的具體意義, 取決於你的數據, 以及訓練後模型 運算在數據上的計算結果.
  • 模式識別, or 模式學習, 即要讓模型在具有這中模式的數據上優化. 不同模式的融合, 也可以提升模型的能力. 所以要做數據增強和多模態數據融合 模式也可以理解為數據分布. 使網路能學習到符合task的數據模式.


參考文獻:

花書, keras深度學習

題外話:

詞嵌入 指 用向量表示單詞, 一般的說, 用向量表示對象. .

循環神經網路對數據的順序有一定的歸納偏置作用. 圖神經網路被提出來解決數據順序問題, 即提取數據組合/排列 無關的模式.


因為不同的神經網路設計出來都是為了捕捉滿足task 數據的的特定模式的, 所以介紹幾種常見的 特殊的task.和數據模式

  1. 雙向RNN. 不同於RNN 捕捉當前時間和過去數據數據之間的關係, 雙向RNN 可以捕捉未來對當前時刻的關係.
  2. Seq2Seq. 不同於RNN講序列映射到向量, Seq2Seq可以蔣序列映射到序列. 即編碼-解碼架構. Transformer 首先在S2S任務上提出來, 主要優勢是可以並行訓練.
  3. 門控RNN. 不同於RNN 只適合短序列數據, 門控RNN(LSTM, GRU) 更適合長序列數據. 但不能並行訓練.
  4. 遞歸神經網路. 占坑
  5. 回聲狀態網路. 不是很明白, 有點像網路架構搜索, 先佔坑.
  6. GNN. 不同於RNN 要求數據具有特徵排列組合模式. GNN 可以學習數據之間任意的排列組合 非常適合關係的學習任務.
  7. 1D卷積網路. 不同於RNN可以捕捉序列任意時刻之間關係. 一維卷積可以捕捉局部時間段節點之間關係, 好處是計算量小.
Tags: