当训练角色RNN时,如果我们有一个输入X =(x_1,x_2,...,x_t),我们将它分为两部分:X_train =(x_1,x_2,...,x_(t-) 1)),y_train =(x_2,x_3,...,x_t)。
为什么我们这样做?为什么不设置y_train =(x_(t + 1)),即我们想要预测的下一个字符?
我正在尝试使用RNN预测其他时间序列数据,这让我对如何选择模型的标签/目标感到困惑。
答案 0 :(得分:0)
我们分割这样的数据是因为我们想要训练我们的模型来预测序列中的下一个字符,给定前面的字符和模型状态。换句话说,给定由x
输入组成的序列T
,我们正在训练RNN语言模型h
以估计以下分布:p(x t | x < t ,h)。
如果我们考虑字符序列stack
,定义为:
s,t,a,c,k
我们还想要两个特殊的“字符”来表示单词的开头和结尾。我们使用$
表示开头,^
表示单词的结尾。因此,整个序列现在是$, s, t, a, c, k, ^
。
输入序列x train 是:
$,s,t,a,c,k
此序列包含到RNN的t = 6个时间步输入:x 1 ,x 2 ,x 3 ,x 4 ,x 5 ,x 6
目标序列y train 简单地是向右移动一次的输入序列,即y t = x t-1 。
s,t,a,c,k,^