【问题标题】:decide how many layers and neurons to set in an ANN决定在 ANN 中设置多少层和神经元
【发布时间】:2019-09-09 15:40:51
【问题描述】:

我已经开始从在线诅咒中学习机器学习,发现它非常令人兴奋。

这些例子很容易理解(用 python 编写)并且结果令人惊叹,但是所有例子都非常简单,并没有解释如何决定隐藏层中需要多少隐藏层和神经元,所以我用谷歌搜索。

大部分结果都说明了它的艺术和经验,我发现一篇文章展示了beginners-ask-how-many-hidden-layers-neurons-to-use-in-artificial-neural-networks 如何使用 beginners-ask-how-many-hidden-layers-neurons-to-use-in-artificial-neural-networks 但是对于具有很多参数的大型数据集我不能依赖绘制边界,有没有办法让它可编程或更好知道我需要多少隐藏层和神经元的方法?

【问题讨论】:

  • 简短的回答是否定的,这真的是艺术和体验。

标签: python machine-learning neural-network artificial-intelligence


【解决方案1】:

不,这是一个实验问题,以找到解决您问题的方法。正如您的参考资料所示,层复杂性是由数据的固有复杂性和您尝试执行的分类驱动的。

作为一般原则,请注意隐藏层是一种最小的便利:线性组合的线性组合不会产生任何额外的学习能力:它仍然是线性组合。因此,您只需要一个隐藏层——尽管对于某些问题,使用两个或三个隐藏层会稍微减少以相同速率训练所需的神经元数量。

当我需要做这样的设计时,我会简单地攻击它:从一个隐藏层开始,我最好猜测我需要的神经元数量。训练模型;如果它未能收敛,请查看损失函数以了解它失败的严重程度。在此基础上,增加神经元(双倍,10x,...),然后再试一次。

一旦成功,我会逐渐减少神经元数量,直到找到准确度与训练时间的“最佳点”。


有些问题不能通过简单的神经网络轻易解决。根据应用程序的不同,您可能需要来自深度学习领域的一些东西,例如简单的 CNN(卷积神经网络)。

如果您的数据集足够复杂,您可能还需要应用 PCA(主成分分析)来查找重要的输入参数。然后可以减少输入数据,大大减少 NN 的大小和收敛所需的训练时间。

【讨论】:

    猜你喜欢
    • 2020-09-23
    • 2019-02-15
    • 2017-06-02
    • 2020-03-25
    • 2016-09-02
    • 2017-05-21
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多