1. 程式人生 > >對迴圈神經網路(RNN)中time step的理解

對迴圈神經網路(RNN)中time step的理解

微信公眾號

1. 傳統的迴圈神經網路

傳統的神經網路可以看作只有兩個time step。如果輸入是“Hello”(第一個time step),它會預測“World”(第二個time step),但是它無法預測更多的time step。

2. LSTM、GRU等

【知乎】如何理解LSTM中的time step? - 知乎 https://www.zhihu.com/question/271774530

比較好理解的回答:

文字處理中,一個單詞代表一個timestep,在inference的時候,只能一個單詞一個單詞地輸出;而在train的時候,我們有整個句子,因此可以一次feed若干個單詞,比如Google is better than Apple,timestep為5,同時訓練目標為is better than Apple [END]。
作者:尤洋
連結:https://www.zhihu.com/question/271774530/answer/364711129
來源:知乎

知乎中比較好的問題:

如何理解LSTM中的time step? - 尤洋的回答 - 知乎 https://www.zhihu.com/question/271774530/answer/364711129 評論中其他使用者比較好的提問如下:

【1】鳥與聲俱去(提問):假如train的時候time step是5,那weight的緯度不應該和time step的維度一致嗎?所以在test時,只輸入time step為1的資料,和weight的緯度不符啊?

HankGuo(回答):這個不是維度,既然是迴圈神經網路,迴圈的次數就是任意的,time step是迴圈次數。每次迴圈是一個單詞,維度是單詞的詞向量。另外train和test的時候應該time step不一致。seq2seq的編碼是大於1,解碼等於1。

尤洋(回答):訓練的時候會給如[batch_size, time_step, word_dim]維度的資料,最後一維是每個單詞的embedding向量,每迴圈一次就將[batch_size, word_dim]輸入一次,一共輸入time_step次。

【2】荀日新(提問):請教一下,time_step就是rnn單元的個數嗎?

尤洋(回答):兩者不是一個東西,rnn個數是hidden layer和cell state的維度,time step是迴圈次數。

【3】q娃娃(提問):您好,請教一下,在時間序列中,time_step該如何理解?期待您的回覆,非常感謝!

尤洋(回答):好比你有[batch, t, w]的資料,第一維是Batch,第二維是句子長度,第三維是每個單詞的embedding,那麼rnn就會迴圈t次,每次迴圈拿上一次的結果,以及這次的[batch, w]作為y輸入。

【4】以夢為馬(提問):您好,我還有個問題想問下,time step為1的時候,是不是可以理解為用前一個數據去預測後一個數據?但是這樣感覺很不靠譜?

尤洋(回答):因為有Hidden state,前一個數據實際上是[hidden state, x],是整合了之前的資訊的。

3. 我的理解

time steps 就是迴圈神經網路認為每個輸入資料與前多少個陸續輸入的資料有聯絡。例如具有這樣一段序列資料 “…ABCDBCEDF…”,當 time steps 為 3 時,在模型預測中如果輸入資料為 “D”,那麼之前接收的資料如果為 “B” 和 “C” 則此時的預測輸出為B的概率更大,之前接收的資料如果為 “C” 和 “E”,則此時的預測輸出為F的概率更大。