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

时间:2019-04-19 10:46:35

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

当我需要进行这种设计时,我会简单地对其进行攻击:从一个隐藏层开始,尽我所能猜测我所需神经元的数量。训练模型;如果无法收敛,请查看损失函数以查看失败的严重程度。在此基础上,增加神经元(两倍,十倍,...),然后重试。

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


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

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