人工神经网络问题

时间:2008-12-02 00:57:20

标签: algorithm neural-network

一般来说,如果通过向隐藏层或更多隐藏层添加更多节点来扩展人工神经网络,您会得到什么?

它是否允许更精确的映射,或者它是否允许它可以识别的关系中更微妙,或其他什么?

5 个答案:

答案 0 :(得分:21)

在机器学习中有一个非常着名的结果,即一个隐藏层足以逼近任何平滑的有界函数(该论文被称为"Multilayer feedforward networks are universal approximators",现在它已有近20年的历史)。但是,有几点需要注意。

  • 单个隐藏层可能需要任意宽。
  • 这没有说明可以找到近似的容易程度;一般来说,大型网络难以正确训练并且经常成为过度拟合的受害者(例外的是所谓的“卷积神经网络”,它实际上仅用于视力问题)。
  • 这也没有说明代表的效率。有些函数需要指数数量的隐藏单位,如果使用一个图层完成,但是对于更多图层可以更好地扩展(有关此读取的更多讨论Scaling Learning Algorithms Towards AI

深度神经网络的问题在于它们甚至更难训练。你最终将非常小的渐变反向传播到较早的隐藏层并且学习并不是真正去任何地方,特别是如果权重被初始化为小(如果你将它们初始化为更大的幅度,你经常陷入糟糕的局部最小值) 。有一些“预训练”的技术,就像Geoff Hinton在Google tech talk中所讨论的那样,试图解决这个问题。

答案 1 :(得分:8)

这是一个非常有趣的问题,但回答并不容易。这取决于您尝试解决的问题以及您尝试使用的神经网络。有几种神经网络类型。

我一般不太清楚,更多的节点等于更高的精度。研究表明,您大多只需要一个隐藏层。节点的数量应该是解决问题所需的最小节点数。如果你没有足够的 - 你将无法达成解决方案。

另一方面 - 如果你已经达到了很好的解决方案的节点数量 - 你可以添加越来越多的节点,你将不会在结果估计中看到任何进一步的进展。

这就是为什么有这么多类型的神经网络。他们试图解决不同类型的问题。所以你有NN来解决静态问题,解决时间相关的问题等等。节点的数量并不像它们的设计那么重要。

答案 2 :(得分:5)

当您有隐藏图层时,您正在创建输入的组合功能。那么,现有输入的更多功能,还是通过组合现有功能的高阶功能,可以更好地解决问题吗?这是标准前馈网络的权衡。

您有理论上的保证,任何函数都可以由具有两个隐藏层和非线性激活的神经网络表示。

此外,如果您不确定适当的拓扑,请考虑使用其他资源进行增强,而不是添加更多节点。

答案 3 :(得分:3)

非常粗略的经验法则

每层通常有更多元素用于更大的输入向量。

更多图层可以让您为更多的非线性系统建模。

如果您使用的网络类型在传播方面有延迟,则更多图层可能允许对时间序列进行建模。注意在延迟中有时间抖动,否则它不能很好地工作。如果这只是gobbledegook给你,请忽略它。

更多图层可让您插入循环功能。这对歧视任务非常有用。你实现ANN我不允许这样做。

HTH

答案 4 :(得分:1)

每个隐藏层的单位数量是ANN可能描述任意复杂函数的原因。一些(复杂的)函数可能需要许多隐藏节点,或者可能需要多个隐藏层。

当一个函数可以粗略地近似一定数量的隐藏单位时,任何额外的节点都会提供更高的准确性......但是只有在使用的训练样本足以证明这种加法的合理性时才会这样 - 否则将会发生的是“过会聚”。过度收敛意味着你的ANN已经失去了它的泛化能力,因为它过分强调了特定的样本。

一般情况下,如果生成的网络能够产生良好的效果,最好使用可能较少的隐藏单元。在大多数情况下,无法轻易找到证明更多隐藏节点所需的额外训练模式,准确性不是NN的优势所在。