在训练角色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预测其他时间序列数据,这让我很困惑如何为模型选择标签/目标 .
我们分割这样的数据是因为我们想要训练我们的模型来预测序列中的下一个字符,给定前面的字符和模型状态 . 换句话说,给定由 T 输入组成的序列 x ,我们正在训练RNN语言模型 h 以估计以下分布:p(xt | x <t,h) .
T
x
h
如果我们考虑字符序列 stack ,定义为:
stack
s,t,a,c,k
我们还想要两个特殊的"characters"来表示单词的开头和结尾 . 我们用 $ 表示开头, ^ 表示单词的结尾 . 因此,整个序列现在是 $, s, t, a, c, k, ^ .
$
^
$, s, t, a, c, k, ^
输入序列xtrain是:
$,s,t,a,c,k
该序列包含对RNN的t = 6个时间步输入:x1,x2,x3,x4,x5,x6
目标序列ytrain简单地是向右移一步的输入序列,即yt = xt-1 .
s,t,a,c,k,^
1 回答
我们分割这样的数据是因为我们想要训练我们的模型来预测序列中的下一个字符,给定前面的字符和模型状态 . 换句话说,给定由
T
输入组成的序列x
,我们正在训练RNN语言模型h
以估计以下分布:p(xt | x <t,h) .如果我们考虑字符序列
stack
,定义为:我们还想要两个特殊的"characters"来表示单词的开头和结尾 . 我们用
$
表示开头,^
表示单词的结尾 . 因此,整个序列现在是$, s, t, a, c, k, ^
.输入序列xtrain是:
该序列包含对RNN的t = 6个时间步输入:x1,x2,x3,x4,x5,x6
目标序列ytrain简单地是向右移一步的输入序列,即yt = xt-1 .