神经网络是否可以在给定足够隐藏神经元的情

时间:2014-09-01 15:51:04

标签: machine-learning neural-network

我理解具有任意数量隐藏层的神经网络可以近似非线性函数,但是,它可以近似:

f(x) = x^2

我无法想到它是怎么回事。这似乎是神经网络的一个非常明显的限制,可能会限制它能做什么。例如,由于这种限制,神经网络可能无法正确逼近统计中使用的许多函数,如指数移动平均线,甚至方差。

说到移动平均线,反复神经网络可以恰当地接近吗?我理解前馈神经网络甚至单个线性神经元如何使用滑动窗口技术输出移动平均值,但是如果没有X个隐藏层(X是移动平均大小),递归神经网络如何做呢?

另外,让我们假设我们不知道原始函数 f ,这恰好得到最后500个输入的平均值,然后输出1如果它是高于3,如果不是,则为0。但有一秒,假装我们不知道,它是一个黑盒子。

递归神经网络如何接近?我们首先需要知道它应该具有多少次,我们不会这样做。也许LSTM网络可以,但即便如此,如果它不是一个简单的移动平均线,那么它是一个指数移动平均线?我甚至不认为LSTM可以做到这一点。

更糟糕的是,如果我们试图学习的 f(x,x1),那该怎么办

f(x,x1) = x * x1

这似乎非常简单明了。神经网络可以学习它吗?我不知道怎么做。

我在这里遗漏了一些巨大的东西,还是机器学习算法非常有限?除了可以实际执行此操作的神经网络之外,还有其他学习技术吗?

6 个答案:

答案 0 :(得分:42)

要理解的关键点是紧凑

神经网络(如任何其他近似结构,如多项式,样条曲线或径向基函数)只能在紧凑集中逼近任何连续函数。

换句话说,该理论指出:

  1. 连续函数 f(x)
  2. 输入的有限范围 x [a,b]
  3. 期望的近似精度ε> 0
  4. 然后存在一个近似 f(x)的神经网络,其近似误差小于ε [a,b]

    关于 f(x)= x 2 的例子,是的,您可以使用任何有限范围内的神经网络来近似它: [ - 1, 1] [0,1000] 等。为了想象这一点,假设您在 [ - 1,1]中近似 f(x) ] Step Function。你能用纸做吗?请注意,如果您使步骤足够窄,则可以达到任何所需的精度。神经网络近似 f(x)的方式与此没有太大区别。

    但同样,没有神经网络(或任何其他近似结构)具有有限数量的参数,可以近似 f(x)= x 2 [ - ∞,+∞] 中的 x

答案 1 :(得分:25)

这个问题非常合理,不幸的是,很多答案都显示出从业者似乎对神经网络理论的了解程度。关于神经网络逼近不同类型函数的能力存在的唯一严格定理是通用逼近定理。

UAT指出,紧凑域上的任何连续函数都可以通过神经网络近似,只有一个隐藏层,前提是所使用的激活函数是有界的,连续的和单调增加的。现在,有界函数的有限和受限于定义。

多项式不受限制,因此我们能做的最好的事情就是在R ^ n的紧致子集上提供该多项式的神经网络近似。在这个紧凑的子集之外,近似将失败,因为多项式将无限制地增长。换句话说,神经网络在训练集上运行良好,但不会一概而论!

这个问题既不是偏离主题也不代表OP的观点。

答案 2 :(得分:20)

我不确定为什么会有这样的内心反应,我认为这是一个很难找到的合法问题,即使我认为它被广泛赞赏并且反复出现。我认为在这种情况下,您正在寻找实际引用,表明神经网络可以逼近任何函数。在我看来,This recent paper很好地解释了这一点。他们还引用了巴伦从1993年开始的原始论文,证明这是一个不那么普遍的结果。结论:在某些(看似非限制性)条件下,双层神经网络可以表示任何有界度多项式。

如果链接不起作用,它将被Andoni等人称为“使用神经网络学习多项式”,2014年。

答案 3 :(得分:11)

  

我理解具有任意数量隐藏层的神经网络可以近似非线性函数,但是,它可以近似:

     

f(x) = x^2

我能理解这个问题的唯一方法就是你在谈论外推。所以例如给定-1 < x < +1范围内的训练样本,神经网络能够为x > 100学习正确的值吗?你是这个意思吗?

如果您有先验知识,那么您尝试近似的函数可能是低阶多项式(或任何其他函数集),那么您肯定可以构建一个可以表示这些函数的神经网络,并且到处推断x^2

如果您没有先验知识,事情就会变得更加困难:在x^2范围内有无限多的平滑函数完全符合-1..+1,并且我们没有充分的理由期望x^2提供比任何其他功能更好的预测。换句话说:如果我们对我们正在尝试学习的功能没有先验知识,为什么我们想要来学习x -> x^2?在人工训练集领域,x^2可能是一种可能的功能,但在现实世界中,它可能不是。

举一个例子:假设星期一(t = 0)的温度是0°,星期二的温度是1°,星期三的温度是4°。我们没有理由相信温度的行为类似于低阶多项式,因此我们不希望从该数据推断下周一的温度可能约为49°。

  

另外,让我们假设我们不知道原始函数f,它恰好得到最后500个输入的平均值,然后如果它高于3则输出1,如果不是则输出0。但有一秒钟,假装我们不知道,这是一个黑盒子。

     

递归神经网络如何接近?

我认为这有两个问题:首先,神经网络能代表这个功能吗?即是否有一组权重可以准确地给出这种行为?它显然取决于网络架构,但我认为我们可以提出可以代表(或至少非常接近)这种功能的架构。

问题二:如果有足够的训练样本,它能学习这个功能吗?好吧,如果您的学习算法没有陷入局部最小值,请确保:如果您有足够的训练样本,任何不接近您的函数的权重集都会给出大于0的训练误差,而一组权重则为适合您尝试学习的功能有一个训练错误= 0。因此,如果您找到全局最优,网络必须符合该功能。

答案 4 :(得分:1)

如果网络中有一个计算x|->x * x的神经元,则可以学习x * x。或者更一般地,计算x**p并学习p的节点。这些并不常用,但“没有神经网络可以学习......”的说法太强了。

具有ReLU和线性输出层的网络可以学习x|->2*x,即使在无限范围的x值上也是如此。错误将是无限的,但比例误差将是有界的。由这种网络学习的任何函数都是分段线性的,特别是渐近线性的。

然而,ReLU存在风险:一旦ReLU因所有训练样例而关闭,它就会停止学习。对于一个大型域,它将为一些可能的测试示例打开,并给出错误的结果。因此,如果测试用例可能位于训练集的凸包内,则ReLU只是一个不错的选择。如果维度较低,则更容易保证。一个解决方法是选择LeakyReLU。

另一个问题:您需要多少个神经元来实现您想要的近似值?每个ReLU或LeakyReLU都实现了一次渐变。所以需要的数量取决于目标函数的第二个微分的最大绝对值除以要容忍的最大误差。

答案 5 :(得分:-1)

神经网络存在理论上的局限性。没有神经网络可以学习函数f(x)= x * x 它也不能学习无数其他函数,除非你认为不切实际:

1-无限数量的训练样例 2-无限数量的单位 3-无限的时间收敛

NN善于学习低级模式识别问题(这些信号最终会有一些统计模式,可以通过某些&#34;连续&#34;函数来表示!),但那就是它! 没有了!

这里有一个提示:
尝试构建一个NN,它接受n + 1个数据输入(x0,x1,x2,... xn),如果(2 * x0)位于序列的其余部分,它将返回true(或1)。还有祝你好运。 无限功能,特别是那些递归功能无法学习。他们就是!