我想知道如何确定隐藏层中有多少个节点,以及在构建神经网络体系结构时要放置多少个隐藏层。
我了解输入和输出层取决于我们拥有的训练集,但是总体上我们如何确定隐藏层和整体体系结构?
我想知道如何确定隐藏层中有多少个节点,以及在构建神经网络体系结构时要放置多少个隐藏层。
我了解输入和输出层取决于我们拥有的训练集,但是总体上我们如何确定隐藏层和整体体系结构?
Answers:
可悲的是,仅给出问题描述,就没有一种通用的方法来确定先验神经网络的最佳数量和层数。确定良好的价值尝试作为起点,甚至没有太多指导。
最常见的方法似乎是基于对类似问题所用网络的先前经验进行粗略的猜测。这可以是您自己的经验,也可以是您从培训课程,博客或研究论文中获得的二手/二手经验。然后尝试一些变体,并在选择最佳变体之前仔细检查性能。
神经网络的大小和深度也与其他超参数相互作用,因此在其他地方更改一件事物会影响最佳值的位置。因此,不可能隔离网络的“最佳”大小和深度,然后继续隔离地调整其他参数。例如,如果您的网络非常深,则可以使用ReLU激活功能有效地工作,但是对于Sigmoid来说效果不佳-如果您找到了最佳的网络大小/形状,然后尝试了各种激活功能的实验,关于什么最有效的错误结论。
您有时可能会读到研究人员从头开始进行神经网络设计时使用的“经验法则”。这些事情可能对您的问题都有效,但至少它们具有从问题上开始的优势。我看到的变化是:
创建隐藏层大小与输入顺序相似且大小均相同的隐藏层的网络,理由是没有特定理由来更改大小(除非您可能正在创建自动编码器)。
从简单开始并建立复杂性,以了解改进简单网络的方法。
如果您希望输入数据能很好地解释输出,但关系复杂(与固有的噪音相对),则尝试改变网络的深度。
尝试添加一些滤除,这是神经网络与魔术般的尘埃最接近的东西,它可以使一切变得更好(注意:添加滤除可以提高泛化能力,但也可能增加所需的图层大小和训练时间)。
如果您在任何文本中阅读了这些内容或类似内容,则请捏一点盐。但是,最糟糕的是,它们可以帮助您克服空白页的影响,编写某种网络,并使您开始测试和优化过程。
顺便说一句,当其他方法可能更好并且节省大量时间时,请尽量不要在调整神经网络时迷失方向。请考虑并使用其他机器学习和数据科学方法。探索数据,也许作一些图。首先尝试一些简单的线性方法,以根据您的问题获取基准以击败,线性回归,逻辑回归或softmax回归。考虑对神经网络使用不同的ML算法-基于决策树的方法(例如XGBoost)比深度学习在许多问题上更快,更有效。