Sim*_*ful 18 machine-learning neural-network deep-learning
我目前正在为具有387个特征和3000个样本的数据集构建一个nn.输出是3类.我将网络结构配置如下:
输入 - > 200 - > {300-> 100} - > 50->输出
我选择了正确数量的节点和图层吗?如何确定每个层的节点数(输入,隐藏和输出)?有规则吗?
and*_*ndy 23
正如蒙特利尔学习算法研究所所长Yoshua Bengio 所言:
"非常简单.只需继续添加图层,直到测试错误不再改善为止."
Geoff Hinton推荐的方法是添加图层,直到你开始过度训练你的训练集.然后添加dropout或其他正则化方法.
为了你的任务:
dav*_*igh 15
规则是什么?尽可能多的你没有.以下是神经网络常见问题解答的摘录,这是一个很好的页面,可以咨询基本问题:
A:我应该使用多少隐藏单位?==========================================
无法根据输入和输出的数量确定良好的网络拓扑.这主要取决于培训示例的数量以及您尝试学习的分类的复杂程度.一个输入和一个输出存在问题,需要数百万个隐藏单元,并且有一百万个输入和一百万个输出的问题只需要一个隐藏单元,或者根本不需要.
一些书籍和文章为选择拓扑学提供了"经验法则" - Ninputs加上Noutputs由两个分开,也许在那里有一个平方根 - 但这样的规则是完全垃圾.其他规则与可用示例的数量有关:使用最多这样的隐藏单元,网络中的权重数量10小于示例数量.这些规则只涉及过度拟合,也不可靠.
但是,在您的情况下,可以肯定地说网络过于复杂(即使您应用了强大的正则化).为什么这么多隐藏层?从一个隐藏层开始 - 尽管有深刻的学习兴奋 - 并且具有最少的隐藏节点.增加隐藏的节点数,直到获得良好的性能.只有不是我会添加更多图层.此外,使用交叉验证和适当的正则化.
正如他们所说,没有“神奇”的规则来计算神经网络的隐藏层和节点的数量,但是有一些技巧或建议可以帮助您找到最好的规则。
隐藏节点的数量基于以下关系:
为了最小化错误并拥有一个具有良好泛化能力的经过训练的网络,您需要选择最佳数量的隐藏层以及每个隐藏层中的节点。
节点太少会导致系统出现较高的错误,因为预测因素可能过于复杂,以至于少量节点无法捕获
太多的节点会过度拟合您的训练数据并且不能很好地概括
您可以在此页面上找到一些一般建议:
如果您的数据是线性可分离的,那么您根本不需要任何隐藏层。否则,对于添加额外隐藏层的性能差异存在共识:通过第二个(或第三个等)隐藏层提高性能的情况非常小。因此,一个隐藏层足以解决绝大多数问题。
有一些经验得出的经验法则,其中最常依赖的是“隐藏层的最佳大小通常位于输入层的大小和输出层的大小之间”。
总而言之,对于大多数问题,只需使用两个规则设置隐藏层配置即可获得不错的性能: