决定在ANN中设置多少层和神经元

问题描述 投票:-3回答:1

我已经开始从在线课程学习ML,并发现它非常令人兴奋。

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

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

python machine-learning neural-network artificial-intelligence
1个回答
1
投票

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

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

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

一旦成功,我逐渐减少神经元计数,直到找到准确性与训练时间的“最佳位置”。


有些问题无法通过简单的NN轻松解决。根据应用程序的不同,您可能需要深度学习世界中的某些内容,例如简单的CNN(卷积NN)。

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

© www.soinside.com 2019 - 2024. All rights reserved.