【问题标题】:Determining the proper amount of Neurons for a Neural Network确定神经网络的适当数量的神经元
【发布时间】:2021-03-18 04:21:34
【问题描述】:

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

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

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

感谢任何有任何意见的人,我们始终不胜感激!

编辑:关于 C# 标记,我将用它来组合我的神经网络。如果这些信息有帮助的话。

【问题讨论】:

  • 如果你能想象一本书能回答你的问题,那你就问得太多了。 stackoverflow.com/faq#dontask 另外,我不明白这有什么关系使用 C#。
  • @0xA3,很好的链接。这个问题对于 SO 来说可能不够具体,但只是一些想法:神经网络的大小取决于它们所代表的函数或分类器的复杂性。此外,是的,神经元可能太多:在分类中,它可能导致过度拟合和泛化模型的丢失。
  • 您是否尝试过关注 Andrew Ng 的有关该主题的课程?他提供了一些关于如何做到这一点的非常好的直觉。外行的版本在 www.ml-class.org 上提供,更核心的版本可以在 youtube 上找到:youtube.com/playlist?list=PLA89DCFA6ADACE599&feature=plcp
  • 我还没有真正听说过他的课程,但我一定会去看看。谢谢。

标签: c# neural-network


【解决方案1】:

我在大学时专攻 AI / NN,并且在游戏方面有一些业余经验,这是我发现的入门指南。然而,要意识到每个 NN 都需要进行一些调整才能在您选择的环境中发挥最佳效果。 (一个潜在的解决方案是将您的程序暴露于 1000 多个不同的 NN,设置可测试的性能标准,然后使用遗传算法传播更有用的 NN 并剔除不太有用的 NN - 但这是另一个非常大的帖子...... )

我发现 - 一般而言

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

示例:字符识别

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

示例:二十一点

  • 如果您正在构建 NN 以“赢得二十一点”;
  • 从 16 输入 AN 开始(13 用于计算牌的每次出现次数,1 用于玩家手牌价值,1 用于庄家“上牌”,以及 1 偏差)
  • 32 内安
  • 和 6 个输出 AN(一个用于“命中”“留守”“拆分”“加倍”“投降”和“保险”)

【讨论】:

  • 到目前为止,我对 NN 的了解非常有限,如果这个问题非常基础,请见谅;但是你所说的偏置内层是什么意思?有一些偏差的隐藏层?偏置层设置为什么“值”?我假设内层=隐藏层是否正确?
  • 抱歉混淆,“偏差”是指单个 AN,在输入层中始终设置为 1。内部或输出层不需要偏差。 (所以我的帖子的格式与我所做的不同,所以当它们不应该有 =p 时,这些行一起运行)所以,偏差人工神经元总是向内层提供一个“1”,就好像它是一个“卡住”的普通 AN开。”
  • 输入类型并没有太大的不同,真的。对于字符识别,输入将为 1 或 0(该位置是否有像素?),您添加 +1 Bias AN(本质上是“卡在”的第 101 个像素)。在二十一点的情况下,输入将是一个整数范围,但您仍然可以将一个始终设置为“开”的二进制 AN 粘贴在那里。您不能在输入层中混合和匹配输入类型并没有什么特别的原因。想真正让你大吃一惊吗?没有什么特别的理由必须让每个 AN 使用相同的激活函数 - 但这是另一个巨大的帖子!
  • 是的,即使其他 AN 的输入范围为 0 到 100,也可以将偏差 AN 设置为 1,因为每个 AN 都会有一个内部激活函数,该函数会考虑之前的输入和权重确定他们的输出。如果您的所有输入都是 0-100,您可以将您的 Bias 设置为 100,尽管从数学上讲,当针对激活函数的权重向量计算时,它最终会相同。例如,100(偏差)X 0.01(权重)=1.0,1(偏差)X 1.0(权重)=1.0。
  • 对于学习规则 - 尝试感知器学习规则...sydney.edu.au/engineering/it/~irena/ai01/nn/6.html
【解决方案2】:

一些一般规则是基于这篇论文的:'Approximating Number of Hidden layer neural in Multiple Hidden Layer BPNN Architecture' by Saurabh Karsoliya。来源here

  • 隐藏层神经元个数为2/3(或70% 到输入层大小的 90%)。如果这是 不足则输出层神经元的数量可以 稍后添加。
  • 隐藏层神经元的数量应该更少 是输入层神经元数量的两倍。
  • 隐藏层神经元的大小介于 输入层大小和输出层大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2018-10-20
    • 2017-09-11
    • 1970-01-01
    • 2013-03-16
    • 2016-09-08
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多