如何找到每层的最佳神经元数量?

人工智能 神经网络 超参数优化 人工神经元 超参数 层数
2021-10-25 19:42:01

当您编写算法时,您如何知道每层需要多少个神经元?是否有任何方法可以找到最佳数量,还是经验法则?

4个回答

没有直接的方法来找到它们的最佳数量:人们凭经验尝试并查看(例如,使用交叉验证)。最常见的搜索技术是随机搜索、手动搜索和网格搜索。

存在更先进的技术,例如高斯过程,例如Optimizing Neural Network Hyperparameters with Gaussian Processes for Dialog Act Classification,IEEE SLT 2016

对于比随机或详尽搜索更智能的方法,您可以尝试遗传算法,例如 NEAT http://nn.cs.utexas.edu/?neat但是,这并不能保证找到全局最优值,它只是一种基于性能的优化算法,因此很容易陷入局部最优值。

论文Szegedy C、Vanhoucke V、Ioffe S 等。重新思考计算机视觉的初始架构[J]. arXiv preprint arXiv:1512.00567, 2015.给出了一些通用的设计原则:

  1. 避免代表性瓶颈,尤其是在网络的早期;

  2. 平衡网络的宽度和深度。通过平衡每个阶段的过滤器数量和网络的深度可以达到网络的最佳性能。增加网络的宽度和深度有助于提高网络质量。但是,如果两者并行增加,则可以达到恒定计算量的最佳改进。因此,计算预算应该在网络的深度和宽度之间以平衡的方式分配。

但是,这些建议无法为您带来网络中的最佳神经元数量。

然而,仍然有一些模型压缩研究,例如深度神经网络的结构化稀疏学习 (SSL)SqueezeNet剪枝网络,它们可能会为如何优化每层神经元提供一些启示。

特别是在深度神经网络的结构化稀疏学习中,它Group Lasso在损失函数中添加了一个正则化项来对 DNN 的结构(即滤波器、通道、滤波器形状和层深度)进行正则化,即将某些组件归零(即网络结构的过滤器、通道、过滤器形状和层深度),并实现了网络的显着紧凑和加速,同时保持较小的分类精度损失。

你知道当你有太多神经元时,你就会过度拟合。这意味着它不能很好地工作,因为 NN 试图在不可能的最完美匹配上激活。就像两只不同的猫具有相同数量的原子,或者说,它是一个检测器 NN,它只在你的宠物猫的照片上激活,没有别的。您希望 nn 激活的范围更广。就像在任何猫的照片上一样。

过度拟合是一个没有真正快速解决方法的问题。您可以从太少开始,然后继续添加更多。或者从很多开始,然后删除它们,直到它正常工作。