如何从序列模型中的给定数据集创建训练 - 开发 - 测试集

how to create train - dev - test sets from a given dataset in sequence models

假设我们有以下数据集,其中 's' 代表 'step'。

f1  f2  f3  f4  target
1   2   3   4     5
2   3   4   5     6
3   4   5   6     7
4   5   6   7     8
5   6   7   8     9

该模型由 4 个(时间)步骤组成。它给出一个数字作为输出(目标)。 在第一个样本中,step1 输入为 1,step2 输入为 2,step3 输入为 3,step4 输入为 4。我们将训练一个序列模型(使用 RNN、LSTM 或其他),然后输出“5 “对于这个特定的序列。其他样本也是同理

我很关心如何将这样的数据集划分为训练集和开发集。 (暂时忽略测试集。)

选项 1: 假设前 3 个样本构成训练集,后 2 个样本构成开发集,如下图所示。

训练集:

f1  f2  f3  f4  target
1   2   3   4     5
2   3   4   5     6
3   4   5   6     7

开发集:

f1  f2  f3  f4  target
4   5   6   7     8
5   6   7   8     9

我担心的是:如果您查看最后一个训练集样本 ([3, 4, 5, 6], 7) 和第一个开发集样本 ([4, 5, 6, 7], 8) ,你会看到 3 个输入步骤是相同的​​。 (即使在其他开发集样本中也存在类似问题。)

Q1:是不是有些输入步骤相同的问题?或者我们是否可以说这无关紧要,因为 (1) 即使输入步骤相同,它们也用于序列的不同步骤,以及 (2) 每个序列示例的目标值仍然不同。

Q2:针对上述问题,testset应该如何创建?

是的,没关系,因为它们处于不同的时间步长,而且序列也不相同。他们也有不同的目标。所以如果你训练好你的模型,你的模型肯定应该学会预测下一个字符。