2012-06-25 88 views
5

我一直在做一些研究与神经网络和概念和理论作为一个整体对我来说很有意义。虽然我未能找到答案的一个问题是,在神经网络中应该使用多少神经元。实现适当/有效的结果。包括隐藏图层,每个隐层神经元等做多神经元不一定更精确的结果(同时更加繁重的系统上)或将更少的神经元仍然是足够的?是否有某种管理规则来帮助确定这些数字?它取决于正在实施到神经网络中的训练/学习算法的类型。它取决于提供给网络的数据/输入类型吗?确定神经元的正常量的神经网络

如果它可以更容易回答的问题,我将最有可能使用过前馈和backpropogation作为训练和预测的主要方法。

在附注中,是否有预测算法/触发规则或学习算法,通常被归类为“最佳/最实用”,还是取决于要呈现给网络的数据类型?

由于与任何输入任何人,它总是赞赏!

编辑:关于C#的标签,这是在我将放在一起我的神经网络语言。如果这些信息有帮助的话。

+0

*如果你可以想象一整本书可以回答你的问题,那你问的太多了。* http://stackoverflow.com/faq#dontask另外,我不明白这是怎么回事与C#。 –

+2

参见http://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw –

+0

@ 0xA3,很棒链接。这个问题对于SO来说可能不够具体,但只是一些想法:神经网络的大小取决于它们所代表的函数或分类器的复杂程度。另外,是的,可能有太多的神经元:在分类时它可能导致过度拟合并丢失一个广义模型。 – nicholas

回答

2

我专门从事AI/NN大学的学习,并且有过为他们做游戏的丰富经验,下面是我发现入门指南。但是,要意识到每个NN都需要进行一些调整才能在您选择的环境中发挥最佳效果。 (一个可能的解决方案是将程序暴露给数千个不同的神经网络,设置一个可测试的性能标准,然后使用遗传算法来传播更多有用的神经网络并剔除不太有用的神经网络 - 但这是另一个非常大的帖子...)

我发现 - 一般

  • 输入层 - 一个AN对于每个输入矢量+ 1偏置(始终为1)
  • 里衬 - 双输入层
  • 输出层 - 一个AN对于每个动作或结果

实施例:文字识别

  • 如果您正在检查字符识别的10x10网格;
  • 开始与101的输入的(一个用于每个像素,加上一个偏置)
  • 202内AN
  • 和26输出(一个用于字母表中的每个字母)

示例:二十一点

  • 如果您正在构建一个NN来“赢得二十一点”;
  • 与16的输入的开始(13计数卡,1的每次出现供玩家手值,1代表经销商“向上卡”,和1个偏压)
  • 32内AN
  • 和6输出AN (一个用于“打”,“保持”,“分割”,“双”,“投降”和“Insurrance”)
+0

到目前为止,我对神经网络的接触非常有限,所以如果这个问题非常基础,请原谅我。但是你的意思是偏心内层?一个隐藏的层,存在一些偏见? Bias图层设置为什么“价值”?我也正确地假设内层=隐藏层? – RaiderNation

+1

对不起,由于“偏置”,我的意思是单个AN,在输入层总是设置为1.内部或输出层不需要偏置。 (所以我的帖子的格式与我所做的不同,所以当他们不应该有p时,这些线条一起运行)所以,偏置人工神经元总是向内层提供一个“1”,就好像它是一个正常的“卡住”上。” – EtherDragon

+0

因此,无论输入层的输入类型如何,将偏置输入神经元设置为'1'通常都是有利的?例如,不是字符识别和BlackJack的输入类型不同吗?再次感谢! – RaiderNation

0

一些一般规则有以下几种基于本文:“逼近隐层的神经元数目在多隐藏层BPNN架构'通过Saurabh Karsoliya。

  • 隐藏层神经元的数量是输入层大小的2/3(或70% 到90%)。如果这是 不足,那么稍后将添加输出层神经元的数量 。
  • 隐藏层神经元的数量应该少于输入层神经元数量的两倍。
  • 隐藏层神经元的大小介于 输入层大小和输出层大小之间。