对循环神经网络(RNN)中time step的理解

版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址。 https://blog.csdn.net/program_developer/article/details/84794556
微信公众号

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的概率更大。

猜你喜欢

转载自blog.csdn.net/program_developer/article/details/84794556
今日推荐