1 个 epoch 后,训练损失急剧下降

问题描述 投票:0回答:1

enter image description here

您好,我是一名学习深度学习股票预测的学生。

我有关于学习损失曲线的问题。

当我运行模型时,一个时期后,训练损失急剧下降,我不明白为什么。

这个模型不是我创建的;相反,我从 GitHub 上 AAAI(人工智能促进协会)接受的代码中获取了它。 (股票预测模型)

代码已经包含了dropout和标准化,但我不明白为什么会发生这种情况。

此外,此问题不仅出现在一个数据集上,也出现在其他数据集(SP、CSI、NDQ 和 NI)上。

*培训:8年,验证:1年,测试:2年

如果您对为什么会发生这种情况有任何建议,请分享,我会非常高兴。

非常感谢:)

我希望模型不会过拟合,因为这个模型已被顶级会议接受,除了按照说明进行操作外,我没有尝试过任何其他操作。

虽然这个模型没有提供具体数据,但我使用了一般股票数据作为模型的输入。

*代码型号 HGAT 类(torch.nn.Module): def init(自我,股票): 超级(HGAT,自我)。init() self.tickers = 代码 self.grup = gru(5,32) #或 lstm

    self.attention = Attention(32)
    self.hatt1 = nn.HypergraphConv(32, 32, use_attention=True, heads=4, concat=False, negative_slope=0.2, dropout=0.5, bias=True)
    self.hatt2 = nn.HypergraphConv(32, 32, use_attention=True, heads=1, concat=False, negative_slope=0.2, dropout=0.5, bias=True)
    self.liear = torch.nn.Linear(32,1)

def forward(self,price_input,e):
    context,query  = self.grup(price_input)
    query = query.reshape(1026,1,32)
    output, weights = self.attention(query, context)
    output = output.reshape((1026,32))
    x = F.leaky_relu(self.hatt1(output,e), 0.2)
    x = F.leaky_relu(self.hatt2(x,e), 0.2)
    return F.leaky_relu(self.liear(x))

-很抱歉没有上传代码

machine-learning deep-learning time-series artificial-intelligence
1个回答
0
投票
  1. 如果第一个时期的样本数量足够大,那么在第一个时期之后错误急剧下降并不奇怪。如果输出有足够的类别或范围以允许特别大的starting误差,这将尤其明显。这样想:1,000,000 个样本训练集的一个 epoch 所进行的参数更新与 100,000 个样本训练集的 10 个 epoch 所进行的参数更新一样多。

  2. 仅仅因为它是一个好的模型,并不意味着它不会过度拟合。过度拟合是在训练时间过长时发生的,而不是在使用糟糕的架构进行训练时发生的。 (尽管一些架构选择,比如你提到的 dropout,将有助于防止过度拟合。)

  3. 我在这些图中没有看到过度拟合的证据。只是初始训练误差太高,以至于与图的比例相混淆。如果您将训练 MSE 图缩放到与其他两个图相同的 [0, 0.5] 范围,您会在该图上看到与其他图类似的行为。但仅看测试 MSE,似乎训练得很好。您预计 MSE 会降低吗?论文报告了哪些测试 MSE(是否在同一数据集上)?

© www.soinside.com 2019 - 2024. All rights reserved.