神经网络权重和成本变化,但不是它的准确性

时间:2012-05-08 18:27:26

标签: machine-learning neural-network

我正在训练神经网络,并从随机权重开始。训练后,权重发生了变化,但神经网络的准确性与起始权重相同。并不重要我如何改变网络的架构。隐藏层中的节点数,迭代次数和要素数(使用PCA进行降维)它与开始时的精度相同。这是因为关于功能数量的例子数量少吗? (我有675个示例和9000个功能)。或者这是因为别的什么?我也尝试了使用逻辑回归的相同数据集,它的准确度高达64%,并不比我在神经网络训练之前和之后得到的50%好得多。

3 个答案:

答案 0 :(得分:3)

通常,您的训练示例应超出您的功能数量级,而不是相反。除非你的PCA让事情变得非常糟糕,否则这会伤害到你。

你确实记得规范化你的功能,对吧?这通常在PCA中处理,但有时您必须先进行标准化,具体取决于您使用的软件。

除此之外,你没有提到改变学习率,使用自适应学习率或使用动量词,所以我建议你研究那些。此外,还有更多的权重更新算法,而不仅仅是普通的旧backprop。 Levenberg-Marquardt Algorithm可能值得一试。假设你自己没有写它,你的实现可能已经有了这个。

某种形式的早期停止也可能有用。

您没有提及您是否尝试进行分类或回归。如果您正在进行分类,请确保输出节点上的激活功能与您正在使用的类标签类型相匹配。 Logsig的范围是0到1,而Tansig是-1到1.如果您正在进行回归,请确保输出具有线性激活,或者至少可能的输出范围与您的训练示例匹配。

答案 1 :(得分:0)

如果您正在进行分类,问题可能出在您的标签上。

我在Octave训练神经网络时遇到了类似的问题。准确率约为50%。我有两个标签0和1.我的准确度很低,因为八度音程从1开始索引而不是0.你可能想查看你的标签。

答案 2 :(得分:0)

首先,分类准确性取决于数据集。所有人工智能方法都试图分离向量空间中的数据。但是,数据首先可能无法分离,在某些情况下,64%可能非常接近最佳结果。你使用什么样的数据集(它是众所周知的基准测试之一,还是你想要解决的一些特定问题?)

其次,权重变化这一事实并不一定意味着网络正在接受培训。训练后,您不应检查权重是否发生变化,但是如果总平方误差减小了。如果它没有显着减少,您的网络可能根本没有接受过培训。在你的情况下,如果训练后准确度仍然是50%(我想你是在谈论一个两类问题),那么很可能这种方法根本不起作用。您应该首先在更简单的数据集上尝试它,以检查它是否有效。

此外:

  • 9000功能太多,如果您正在尝试训练多层感知器。您可能需要SVM来解决这么复杂的问题。
  • 对于这样的问题,实例的数量很可能太小(但是,如果两个类之间的模式在问题空间中太远)