具有单正非限制输出值的神经网络

时间:2014-02-05 12:40:29

标签: artificial-intelligence neural-network

有人可以帮助我在神经网络中选择正确的激活功能。 netwrork是用Python编写的,应根据其特征(输入)估算房地产价格(输出)。

现在我在输出和隐藏层都使用了sigmoid激活功能。在所有列车情况下,价格已经标准化(item.price / max_price_of_all_items)所以在输出中我有值<这里有一些我正在使用的特征:

  • 学习速度为0.01
  • 训练集约包含约600个条目(最多可达3500个)
  • 隐藏层2
  • 第5层中的神经元
  • 输入9
  • 输出1
  • epochs - 5000(还不够?)

训练有素的网络效果很差。有没有我错过的东西。 是否可以在输出上具有正常价格(而不是像现在这样的[0:1]的值)。 我应该改变输出神经元的激活功能吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

以下是一些建议:

  1. 确保在输出上使用均方误差,不需要激活函数:err(x,f(x))= (x-f(x))^2,其中x是真输出,f(x)是预测输出。

  2. 如果您自己实施反向传播,请跟踪每个纪元的网络平均错误的进度。如果错误在时期之间增加,则表明您的实现不正确。  您还可以通过比较使用有限差分计算的近似梯度来检查反向传播计算的梯度。

  3. 标准化您的输入和输出:减去均值并除以标准差或使用PCA白化您的数据

  4. 资源:

答案 1 :(得分:2)

你在一个非常广泛的话题上提出一个非常模糊的问题,但是与你的具体和个人问题有关。你可能不会以这种方式得到有用的答案,但无论如何我都会试一试。

根据您的描述,您似乎是神经网络领域的新手,并希望将其归结为您的分类问题。正如您可能从神经网络上的维基页面的长度和深度推断出的那样,有很多困难涉及使神经网络“正常工作”。在推荐有见地的结果之前,我建议稍微研究一下这个主题。您可以更好地了解在哪里查找您的方法有什么问题。

以下列出了使用神经网络进行分类时应注意的事项:

  1. 培训和验证数据集
  2. 输入编码和规范化
  3. 神经元类型(激活功能)
  4. 网络拓扑
  5. 输出编码和“非规范化”
  6. “健身”评估功能
  7. 训练算法
  8. 我最好的猜测是你已经获得了大量的权利,但拓扑结构不足。拓扑是学习或破坏学习能力的原因!您可能希望在隐藏层中添加更多神经元。此外,您可能希望使用多个输出神经元而不是一个。在你的情况下,你可能有房地产价值类别($ 0-10k,$ 10k-50k,$ 50k-100k等),所以你可以使用每个类别一个输出神经元。这些类别可能比精确的模拟估计更容易学习。

    我的第二个最佳猜测是输入数据中根本没有模式。如果您看到一个输入向量,您能够估计正确的房地产价值吗?你是怎么做到的?

    如果我的猜测都没有帮助,那么您的训练过程似乎无法正常工作。通过将您的实施应用于互联网上受欢迎且易于理解的培训问题进行调查,以获得更多洞察力。