假设我们在语料库中有 A1、A2、...、Am 不同的文章,每个文章都有 W1、W2、......、Ww 词。我们正在训练他们的语言模型。我们要不要:
方案一
- 将第一批数据作为每篇文章的第一个 S(时间步数)(S1, S2, .., Ss)字(为简单起见,我们假设批大小 = m)
- 设置初始隐藏状态 H0 =
- 计算该批次的损失和梯度并更新参数
- 向前移动一个词并从每篇文章中获取下 S 个词(因此 S2、S3、...、Ss 与上一批中的词相同)
- 使用从上一步计算的 H1 并将其用作本次迭代中的 H0
- 这样做到最后
*在这个方案中,我们必须在最后一批使用零填充(在文章末尾)
方案 2 与方案 1 相同,但在第 5 步中,我们将 H0 重新初始化为一个零向量
方案 3 与方案 1 相同,但在第 4 步中,我们将每篇文章中的 s 词向前移动到下一个不重叠的 s 词,并将上次迭代的 H0 初始化为 Hs
方案 4, 5, 6 与方案 1, 2, 3 相同,但不是取 s 个连续的单词,而是取每篇文章的第一句并将它们补零到长度 S
将数据提供给 RNN 的正确方法是什么,请同时给出原因。我认为它应该是方案 1,但它可能真的很慢