【问题标题】:Neural Network gets stuck神经网络卡住了
【发布时间】:2018-03-21 13:03:30
【问题描述】:

我正在尝试使用神经网络进行分类(我正在使用 tensorflow)。 不幸的是,我的神经网络的训练被困在了 42% 的准确率上。 我有 4 个类,我尝试将数据分类。 不幸的是,我的数据集不是很平衡,这意味着:

  1. 43% 的数据属于 1 类(是的,我的网络只能预测这一点)
  2. 37% 达到 2 级
  3. 13% 达到 3 级
  4. 7% 到 4 级

我使用的优化器是 AdamOptimizer,成本函数是 tf.nn.softmax_cross_entropy_with_logits。

我想知道我的训练卡在 42% 的原因是否真的是因为我的数据集没有很好地平衡,或者因为数据的性质真的是随机的,并且真的找不到模式.

目前我的神经网络包括:

  1. 输入层
  2. 2个卷积层
  3. 7 个全连接层
  4. 输出层

我尝试改变网络的这种结构,但结果总是一样的。 我还尝试了支持向量分类,结果几乎相同,只是变化很小。

有没有其他人遇到过类似的问题? 谁能给我一些提示如何摆脱这个问题?

谢谢, 杰拉德

【问题讨论】:

  • 你能用学习率调度器检查一下吗?
  • 不,我没有。感谢您的提示。例如,当我检测到结果倾向于陷入局部最小值时,我正在考虑提高学习率....
  • 这篇文章为什么有 TensorFlow 标签?

标签: machine-learning tensorflow neural-network deep-learning conv-neural-network


【解决方案1】:

我假设您已经双重、三重和四重检查输入的数据是否符合您的预期。


这个问题非常开放,甚至是一个研究课题。但是有些事情可以提供帮助。

就更好的训练而言,人们使用不平衡数据集训练神经网络有两种常规方法。

  • 对频率较低的示例进行过采样,以使网络看到的每个类别的示例比例相等。例如在每批中,强制 1/4 的示例来自第 1 类,1/4 来自第 2 类,等等。
  • 按比例对错误分类每个类的错误进行加权。例如错误地分类第 1 类的例子价值 100/43,而错误地分类第 4 类的例子价值 100/7

话虽如此,如果你的学习率很好,神经网络通常最终会(在坐在那里几个小时之后)跳出只预测一个类,但它们仍然很少以严重倾斜的数据集结束。


如果您想知道您的数据中是否有 模式可以确定,有一种简单的方法可以做到这一点。

通过从所有类中随机选择元素来创建一个新数据集,这样您就拥有偶数个元素(即,如果有 700 个第 4 类的示例,则通过从每个类中随机选择 700 个示例来构建一个数据集)

然后你可以在这个新数据集上使用你所有的技术。

虽然,this paper 建议即使使用随机标签,它也应该能够找到一些它可以理解的模式。

【讨论】:

  • 谢谢。我一定会尝试你的建议。
【解决方案2】:

首先你应该检查你的模型是过拟合还是欠拟合,这两种情况都可能导致准确率低。检查训练集和开发集的准确率,如果训练集的准确率远高于开发/测试集,则模型可能过拟合,如果训练集的准确率与开发/测试集的准确率一样低,则可能欠拟合。

至于过拟合,更多数据或更简单的学习结构可能会起作用,而使你的结构更复杂,更长的训练时间可能会解决欠拟合问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 2013-02-01
    • 2017-06-26
    • 2016-03-07
    • 1970-01-01
    • 2021-09-07
    • 2019-04-11
    • 2012-06-03
    相关资源
    最近更新 更多