我有一些數據以非常高的速率(每秒幾百次)進行採樣。這導致任何給定實例的平均序列長度是平均值(約90,000個樣本)。整個序列有一個標籤。我正嘗試使用LSTM神經網絡將新序列分類爲這些標籤之一(多類分類)。如何處理極長的LSTM序列長度?
但是,使用具有如此大的序列長度的LSTM會導致相當大的網絡。
什麼是有效的方法來「塊」這些序列,以便我可以減少神經網絡的序列長度,但仍然保持在整個實例中捕獲的信息?
我有一些數據以非常高的速率(每秒幾百次)進行採樣。這導致任何給定實例的平均序列長度是平均值(約90,000個樣本)。整個序列有一個標籤。我正嘗試使用LSTM神經網絡將新序列分類爲這些標籤之一(多類分類)。如何處理極長的LSTM序列長度?
但是,使用具有如此大的序列長度的LSTM會導致相當大的網絡。
什麼是有效的方法來「塊」這些序列,以便我可以減少神經網絡的序列長度,但仍然保持在整個實例中捕獲的信息?
當您的序列非常長時,RNN可能面臨消失梯度和爆炸梯度的問題。
有方法。你需要了解的第一件事是爲什麼我們需要嘗試以上方法?這是因爲通過時間反向傳播可以得到真正的努力,由於上述問題。
是的,LSTM的介紹已經將這個降低了很多,但是如果這麼長時間,您仍然可以面對這樣的問題。
所以一種方法是削減梯度。這意味着你設置了漸變的上限。請參閱本stackoverflow question
那麼這個問題你問
什麼是一些方法,有效地「塊」這些序列?
一種方法是通過時間截斷反向傳播。有很多方法可以實現這個截斷的BPTT。簡單的想法是
2.採取完整的序列,只有選擇時間塊的某些給定的時間步後退梯度傳播。這是一個連續的方式
這是我發現的最好的文章,它解釋了這些trunacated BPTT方法。好簡單。參考Styles of Truncated Backpropagation
謝謝!有了這些方法,我仍然可以建立約90,000個LSTM層的網絡嗎?這就是我現在的問題所在,因爲我不認爲這可以在合理的時間內進行培訓。 – Parad0xD9
理論上來說是的!您可以。但實際上這並不容易。有一件事是訓練時間。另一個問題是,當你有很多長時間的連接時,他們往往會隨着時間步驟而鬆散記憶。 –
我認爲你的答案對於處理一般的RNN問題是有效的。然而,我在這個問題上的問題只是關於一個網絡,當展開時,這個網絡會非常大,需要很長時間來訓練。相反,我已經將我的序列分解爲具有單獨標籤的較小子序列。 – Parad0xD9