【问题标题】:How can I make my model to overfit to my data?如何让我的模型过度拟合我的数据?
【发布时间】:2018-11-06 00:12:16
【问题描述】:

我使用 openai gym 的 Acrobot-v1 来制作我的模型 观察状态大小为 6,动作为 -1 或 1 或 0。 我想检查我的模型是否能够学习。

所以,我使用了交叉验证方法,我的集合分为 64000 个状态-动作对的训练集和 16000 个状态-动作对的验证集。

但是,每当我增加隐藏层中的神经元数量时,验证损失就会在训练过程中不断减少。 我已经了解到许多参数会导致过度拟合,并且可以通过观察验证损失的增加来检测过度拟合。 我不知道该怎么办。

self.DEncoder = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nfeature),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU()
])

self.DDecoder = tf.keras.models.Sequential([
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nInHidden),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.LeakyReLU(),
    tf.keras.layers.Dense(self.nState*self.npred),
    tf.keras.layers.Reshape((self.npred,self.nState,1))
])

这是我的模型。我使用了 l2 损失(mse,均方误差)。

【问题讨论】:

  • 我要冒昧地猜测你的验证集是你的训练集的一个子集。

标签: python machine-learning keras


【解决方案1】:

不太清楚你在问什么,主要是因为你从不希望你的模型过拟合。

验证损失增加而训练损失不断减少时,就会发生过拟合,这意味着您的模型只能处理训练集数据,而不能处理其余数据如预期。如果您的验证损失不断减少,您的模型可能只需要更多的训练 epoch 来达到最佳性能。

还将训练集的一部分分离为验证集称为Hold-out Validation,而不是Cross-Validation。

【讨论】:

  • 对不起,我的解释很糟糕,感谢您的帮助。
  • 我的问题是,即使考虑到状态的大小,参数的数量很大,为什么验证集的损失没有增加。
  • 哦,好吧,增加参数的数量并不总是意味着过度拟合,例如,由于缺少参数,您的模型可能欠拟合,在这种情况下,添加更多神经元会有所帮助您的模型以更好地拟合数据。除了可能影响欠拟合/过拟合的神经元数量之外,还有其他几个超参数。
猜你喜欢
  • 1970-01-01
  • 2020-06-19
  • 2023-04-04
  • 2017-07-15
  • 2020-01-11
  • 2018-03-21
  • 2020-05-11
  • 2020-10-13
  • 2019-09-14
相关资源
最近更新 更多