为神经网络确定合适的神经元数量

Rai*_*ion 5 c# neural-network

我一直在用神经网络做一些研究,整个概念和理论对我来说很有意义。尽管我一直无法找到答案的一个问题是神经网络中应该使用多少个神经元。以达到适当/有效的结果。包括隐藏层、每个隐藏层的神经元等。更多的神经元一定会得到更准确的结果(同时对系统的负担更大)还是更少的神经元就足够了?是否有某种管理规则来帮助确定这些数字?它是否取决于正在实施到神经网络中的训练/学习算法的类型。它是否取决于呈现给网络的数据/输入的类型?

如果这样更容易回答问题,我很可能会使用前馈和反向传播作为训练和预测的主要方法。

附带说明一下,是否有预测算法/触发规则或学习算法通常被重新评级为“最佳/最实用”,或者是否也取决于呈现给网络的数据类型?

感谢任何有任何意见的人,总是很感激!

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

Eth*_*gon 3

我在大学里专门研究人工智能/神经网络,并且在游戏中拥有一些工作经验,以下是我发现的入门指南。但请注意,每个神经网络都需要进行一些调整才能在您选择的环境中发挥最佳作用。(一个潜在的解决方案是将你的程序暴露给 1000 个不同的神经网络,设置一个可测试的性能标准,然后使用遗传算法来传播更有用的神经网络并剔除不太有用的神经网络 - 但这是另一篇非常大的文章...... )

我发现——一般来说

  • 输入层 - 每个输入向量一个 AN + 1 个偏差(始终为 1)
  • 内层 - 输入层加倍
  • 输出层 - 每个操作或结果一个 AN

示例:字符识别

  • 如果您正在检查 10x10 网格以进行字符识别;
  • 从 101 个输入 AN 开始(每个像素一个,加上一个偏置)
  • 202 内AN
  • 和 26 个输出 AN(每个字母对应一个)

示例:二十一点

  • 如果您正在构建一个神经网络来“赢得二十一点”;
  • 从 16 个输入 AN 开始(13 个用于计算牌的每次出现,1 个用于玩家手牌值,1 个用于庄家“面牌”,1 个偏差)
  • 32 内AN
  • 和 6 个输出 AN(其中一个用于“击”“留”“分”“双”“投降”和“保险”)