我正在尝试调整 LSTM 的超参数,我必须进行时间序列预测。我注意到我的验证准确度总是非常接近我的训练准确度。我不确定这是好是坏,或者它一般意味着什么?
目前,我将所有超参数保持不变,仅将 LSTM 层中的单元数量从 [1, 5, 26] 改变。
我希望 26 个单元能给我带来好结果,并且后来添加了单元 1 和 5 来帮助我进行调查。我还期望看到我的验证准确度比我的训练准确度差,但事实似乎并非如此。我的验证准确度很好地跟踪了训练准确度。这有什么需要担心的吗?
从图中可以看出,每个单元的训练和验证准确度都非常接近。为什么是这样?这是否意味着总的来说我的模型应该很好地概括看不见的数据,因为没有太大的差异?
显然,模型的准确度总体上还不是很好,它需要一些调整,但为了进行调整过程,我更希望看到训练数据和验证数据之间的一些差异,而不是它们会在很大程度上保持相似。
编辑:
根据要求提供更多信息。用于每个模型的超参数可以在图表的图例中看到。这是一个更新的图,它显示了随着神经元数量和批量大小的变化而产生的更大的准确度变化:
从图中可以看出,模型精度似乎在批量大小为 1 和 39 个神经元时收敛最快。然而,训练和验证准确度相互密切跟踪是一个特点。我没想到独立改变两个超参数会导致这样的一致结果。
在我正在处理的这个问题中,模型是为一个时间序列提供预测。我将它用作“玩具”问题,以尝试了解哪种模型适合我的特定问题。
我总共有 315 个时间序列数据点。我将最后 52 个作为暂存测试集排除在外,到目前为止我还没有看过。52 分,因为我正在做每周预测。然后我留下最后 52 个点作为验证集。由于时间依赖性,我无法使用 KFold 交叉验证等验证方法。因此,我使用了一种称为滚动原点分析的方法,这里对此进行了很好的解释(请参阅预测性能)。这很好地模拟了模型在实践中的使用方式,我的准确度是使用修改后的 sMAPE 公式进行多步预测的测量值。
本质上,这意味着我训练(在这种情况下)27 个单独的模型。我的预测范围是 26,所以我要做的是获取我的训练数据并获取验证集的前 26 个点。
我在训练数据(即 131 个样本)上训练了我的第一个模型,并针对 1 个样本进行了验证。
我训练下一个模型,它使用相同的训练数据,只是它被移动了一个,所以训练集的第一个点被删除,验证集的第一个点被附加到训练集的末尾。然后验证集也被移动了一个。举个简单的例子(数字代表时间序列的索引):
Model1 train: [1, 2, 3, 4, 5], val: [6, 7, 8]
Model2 火车:[2, 3, 4, 5, 6],val:[7, 8, 9]
因此,图中显示的平均准确度是每个模型针对其自己的验证集计算的准确度的平均值。
因此,每个模型都在相同数量的数据上进行训练,并且每个模型都完全重新拟合,即 Model1 不与 Model2 共享任何信息。
以这种方式计算准确性是因为我没有太多数据,这是我发现的最好的方法,它允许我获得两个以上的验证集和两个以上的测试集。

