如何确定总隐藏层节点和输出节点?

时间:2016-09-18 02:30:27

标签: machine-learning neural-network

在这种情况下,我想要进行字母识别,这封信是从纸上扫描的。该过程的结果我有5 x 5二进制矩阵。所以,它会使用25个输入节点。但我不明白如何确定那些案例的总隐藏层节点和输出节点。我想为这种情况构建多层perecptron的架构。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

每个NN都有三种类型的层:输入隐藏输出


因此,创建NN架构意味着要为每种类型的层数和每个层中的节点数提供值。

输入图层

简单 - 每个NN都只有其中一个 - 没有我所知道的例外。

关于构成该层的神经元数量,一旦您知道训练数据的形状,就可以完全唯一地确定该参数。具体而言,构成该层的神经元数量等于数据中的要素(列)数量。一些NN配置为偏差项添加了一个额外的节点。


输出图层

与输入层一样,每个NN都有一个输出层。确定其大小(神经元的数量)很简单;它完全取决于所选的模型配置。

您的NN是否正在计算机模式或回归模式下运行(使用术语的ML约定,该术语也用于统计,但赋予它不同的含义是很混乱)。机器模式:返回类别标签(例如,"高级帐户" /"基本帐户")。回归模式返回一个值(例如,价格)。

如果NN是回归量,则输出层具有单个节点。

如果NN是分类器,那么它也只有一个节点,除非使用 softmax 在这种情况下,输出层在模型中每个类标签都有一个节点。

隐藏图层

因此,这几条规则为输入和输出层设置了层数和大小(神经元/层)。这留下了隐藏的层。

有多少隐藏层?好吧,如果你的数据是线性可分的(你开始编码NN时经常会知道),那么你根本就不需要任何隐藏层。当然,您也不需要NN来解析您的数据,但它仍然可以完成这项工作。

除此之外,正如您可能知道的那样,对于NN中隐藏层配置的问题有一大堆评论(请参阅该评论的NN FAQ的疯狂透彻和富有洞察力的excellent summary )。在该主题中存在共识的一个问题是与添加额外隐藏层的性能差异:在第二(或第三等)隐藏层中性能改善的情况非常小。 一个隐藏层足以解决大多数问题。

那么隐藏层的大小是多少 - 神经元有多少?有一些经验导出的经验法则,其中最常见的是隐藏层的最佳大小通常介于输入大小和输出层大小之间<。 / EM>&#39 ;. Introduction to Neural Networks in Java的作者Jeff Heaton提供了更多内容。

总而言之,对于大多数问题,通过仅使用两个规则设置隐藏层配置,可以获得不错的性能(即使没有第二个优化步骤):(i)隐藏层的数量等于1; (ii)该层中神经元的数量是输入和输出层中神经元的平均值。

<小时/>

优化网络配置

修剪 描述了一组修剪网络大小(通过节点而不是图层)以提高计算性能和有时提高分辨率性能的技术。这些技术的要点是在训练期间通过识别那些节点来从网络中移除节点,如果这些节点从网络中移除,则不会明显地影响网络性能(即,数据的分辨率)。 (即使不使用正式的修剪技术,您也可以通过在训练后查看权重矩阵来大致了解哪些节点不重要;看重量非常接近于零 - 它们两端的节点都是在修剪过程中经常删除的权重。)显然,如果你在训练期间使用修剪算法,那么开始的网络配置更可能有多余的(即,可修复的)节点 - 换句话说,在决定网络架构时,如果你添加一个修剪步骤,那就错误地站在更多神经元的一侧。

换句话说,通过在训练期间对您的网络应用修剪算法,您可以接近最佳网络配置;你是否可以在一个单一的&#34;前期&#34; (例如基于遗传算法的算法)我不知道,虽然我现在知道这个两步优化更常见。

<强>式

监督学习网络的另一个经验法则是,不会导致过度拟合的隐藏神经元数量的上限是:

enter image description here

Others recommend将alpha设置为5到10之间的值,但我发现值2通常可以在不过度拟合的情况下工作。如此excellent NN Design text所述,您希望将模型中的自由参数(其degree或非零权重数)限制为数据中自由度的一小部分。数据中的自由度是每个样本中的样本数*自由度(维度)或Ns∗(Ni+No)(假设它们都是独立的)。所以alpha是一种表示你希望你的模型有多普遍的方式,或者你想要防止过度拟合的程度。

对于自动程序,您的首字母为2(训练数据的自由度是模型的两倍),如果训练数据的误差明显小于10,则最多可以达到10。用于交叉验证数据集。

<强>参考

  1. Advameg(2016)Comp.Ai.Neural-nets FAQ,第1部分,共7部分:简介。可从以下位置获取:http://www.faqs.org/faqs/ai-faq/neural-nets/part1/preamble.html

  2. 如何选择前馈神经网络中隐藏层和节点的数量? (2016a)适用于:https://stats.stackexchange.com/a/136542

  3. 如何选择前馈神经网络中隐藏层和节点的数量? (2016b)可在:https://stats.stackexchange.com/a/1097

  4. 获取
  5. Legal,H.R。 - and Info,C。(2016)java神经网络简介,第2版。可从以下位置获取:http://www.heatonresearch.com/book/programming-neural-networks-java-2.html