循環神經網路
- 2020 年 12 月 16 日
- AI
循環神經網路RNN常用於處理序列數據, 但缺點是不適合長序列, 易梯度消失
- 因為MLP和CNN都是單獨處理每個輸入數據的, 無法捕捉輸入與輸入之間的關係, 尤其是輸入之間具有時間關係的數據. 若用MLP或CNN 處於序列數據, 需要將序列視為整體.
- 循環神經網路的歸納偏置在與捕捉時序過程中的長期依賴性.
# 這個是對根據當前狀態做出預測, 不是必須的
LSTM 被提出來處理梯度消失問題. 尤其適合長序列, 但缺點是計算量大
類似於RNN, LSTM 經過四個非線性函數, 其中作為原始輸入的映射和 三個門, 輸出多來一個細胞狀態:
# 映射到[-1, 1]
# 選擇記憶
#遺忘門
# 輸出門
# 通過選擇和遺忘門更新細胞狀態, 細胞狀態類似與傳送帶, 保存長期的資訊.
# 更新當前狀態. 作為短期記憶.
GRU 被提出來簡化LSTM的計算, 顯然 GRU 丟去了LSTM中的一個門, 顯然參數少了 自然計算就快了, 訓練集大的時候, 性能自然也不如LSTM.
# 重置門
# 更新門
# 重置狀態
# 更新狀態
# LSTM 和 GRU 都屬於門控RNN, 其思路是基於生成通過時間的路徑, 其導數既不消失, 也不爆炸. 即 我們希望RNN在當前時刻能記住很久以前的有用的事情, 但也希望他忘掉一些沒用的事情. 然後把提取的資訊/狀態/細胞 保留到下一個時刻.
# LSTM 中的門控機制和CV中的soft attention 機制是等價的, 不過背景起源不同. Transformer 也有類似的架構:
重要結論
- 雖然假設空間覆蓋面很廣, 但是由於深度學習模型非常複雜, 如果學習演算法沒有限制去學習簡單模型, 那麼他很可能找不到簡單解
- 深度學習是工程, 而且每個問題都具有特殊的性質, 沒有哪個理論能提前告訴你這個方法一定能最優的解決問題, 你必須不停迭代, 深入研究問題和數據性質, 改進方法.
- 一維卷積 有時候要比RNN 處理數據更方便, 這取決於你研究的問題.
啟發:
- 網路設計 要考慮學習參數的梯度和數據之間的融合.網路的結構最好也讓優化演算法決定. 易於優化的網路 和 符合數據task的歸納偏置網路 才是 正確的設計方式.
- 因為運算的實際效果是由權重決定的, 而權重是以端到端的方式學習的, 不可能有特定目的. 所以把網路設計過程理解使網路更容易優化比較合適. 運算的具體意義, 取決於你的數據, 以及訓練後模型 運算在數據上的計算結果.
- 模式識別, or 模式學習, 即要讓模型在具有這中模式的數據上優化. 不同模式的融合, 也可以提升模型的能力. 所以要做數據增強和多模態數據融合 模式也可以理解為數據分布. 使網路能學習到符合task的數據模式.
參考文獻:
花書, keras深度學習
題外話:
詞嵌入 指 用向量表示單詞, 一般的說, 用向量表示對象. .
循環神經網路對數據的順序有一定的歸納偏置作用. 圖神經網路被提出來解決數據順序問題, 即提取數據組合/排列 無關的模式.
因為不同的神經網路設計出來都是為了捕捉滿足task 數據的的特定模式的, 所以介紹幾種常見的 特殊的task.和數據模式
- 雙向RNN. 不同於RNN 捕捉當前時間和過去數據數據之間的關係, 雙向RNN 可以捕捉未來對當前時刻的關係.
- Seq2Seq. 不同於RNN講序列映射到向量, Seq2Seq可以蔣序列映射到序列. 即編碼-解碼架構. Transformer 首先在S2S任務上提出來, 主要優勢是可以並行訓練.
- 門控RNN. 不同於RNN 只適合短序列數據, 門控RNN(LSTM, GRU) 更適合長序列數據. 但不能並行訓練.
- 遞歸神經網路. 占坑
- 回聲狀態網路. 不是很明白, 有點像網路架構搜索, 先佔坑.
- GNN. 不同於RNN 要求數據具有特徵排列組合模式. GNN 可以學習數據之間任意的排列組合 非常適合關係的學習任務.
- 1D卷積網路. 不同於RNN可以捕捉序列任意時刻之間關係. 一維卷積可以捕捉局部時間段節點之間關係, 好處是計算量小.

