【问题标题】:Using neural networks (MLP) for estimation使用神经网络 (MLP) 进行估计
【发布时间】:2018-02-05 02:23:57
【问题描述】:

我是 NN 的新手,我遇到了这个问题:

我有一个包含 300 行和 33 列的数据集。每行还有 3 列的结果。

我正在尝试使用 MLP 来训练模型,以便当我有一个新行时,它会估计这 3 个结果列。

我可以轻松地将训练期间的误差降低到 0.001,但是当我使用交叉验证时,它的估计一直很差。

如果我使用它用于训练的相同条目,它会正确估计,但如果我使用其他未用于训练的值,则结果非常错误

我使用两个隐藏层,每个隐藏层有 20 个神经元,所以我的架构是 [33 20 20 3]

对于使用 biporlarsigmoid 函数的激活函数。

你们有什么建议我可以尝试改变以改善这一点吗?

【问题讨论】:

  • 这只是过拟合,请在您的问题中添加相关源代码。

标签: neural-network artificial-intelligence perceptron


【解决方案1】:

过拟合

正如 cmets 中提到的,这完美地描述了过度拟合。 我强烈建议阅读关于过度拟合的维基百科文章,因为它很好地描述了原因,但我将在这里总结一些关键点。

模型复杂度

当您对问题进行不必要的复杂建模时,通常会发生过度拟合。我对您的数据集一无所知,但我猜 [33 20 20 3] 的参数比预测所需的参数多。

尝试再次运行您的交叉验证方法,这一次使用更少的层,或者每层的节点更少。现在你正在使用 33*20 + 20*20 + 20*3 = 1120 个参数(权重)来进行预测,这有必要吗?

正则化

过拟合的一个常见解决方案是正则化。驱动原理是KISS(保持简单,愚蠢)。

通过将 L1 正则化器应用于您的权重,您可以优先使用最少数量的权重来解决您的问题。网络会将许多不需要的权重拉到 0。

通过将 L2 正则化器应用于您的权重,您可以优先选择较低等级的解决方案来解决您的问题。这意味着您的网络将更喜欢跨越较低维度的权重矩阵。实际上,这意味着您的权重将是较小的数字,并且不太可能“记住”数据。

什么是 L1 和 L2?这些是向量范数的类型。 L1 是权重绝对值的总和。 L2 是您的权重平方和的平方。 (L3 是权重的立方和的立方根,L4 ...)。

失真

另一种常用的技术是使用扭曲版本的训练样本来扩充训练数据。这仅对某些类型的数据有意义。例如,图像可以旋转、缩放、移动、添加高斯噪声等,而不会显着改变图像的内容。

通过添加失真,您的网络将不再记忆您的数据,但也会学习何时看起来与您的数据相似。旋转 2 度的数字 1 看起来仍然像 1,因此网络应该能够从这两者中学习。

只有您知道您的数据。如果这是可以用您的数据完成的事情(甚至只是为每个特征添加一点高斯噪声),​​那么也许这值得研究。但是不要盲目地使用它而不考虑它可能对您的数据集产生的影响。

仔细分析数据

我把它放在最后是因为它是对过度拟合问题的间接反应。在通过黑盒算法(如神经网络)抽取数据之前检查您的数据。如果您的网络无法正常工作,以下是一些值得回答的问题:

  1. 我的任何特征是否相互之间有很强的相关性?
  2. 基线算法如何执行? (线性回归、逻辑回归等)
  3. 我的训练样本是如何在班级之间分布的?我是否有一个类别的 298 个样本和其他两个类别的 1 个样本?
  4. 我的样本在一个类中的相似度如何?也许我有 100 个样本用于这个类,但它们都相同(或几乎相同)。

【讨论】:

    猜你喜欢
    • 2020-02-23
    • 2013-10-09
    • 2013-06-07
    • 1970-01-01
    • 2013-12-10
    • 2023-01-19
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多