【问题标题】:How can neural networks learn functions with a variable number of inputs? [closed]神经网络如何学习具有可变数量输入的函数? [关闭]
【发布时间】:2015-09-16 08:43:39
【问题描述】:

一个简单的例子:给定一个输入序列,我希望神经网络输出序列的中值。问题是,如果神经网络学会计算 n 个输入的中位数,它如何计算更多输入的中位数?我知道循环神经网络可以学习序列上的最大值和奇偶校验等函数,但计算这些函数只需要恒定的记忆。如果内存需求随着输入大小(例如计算中位数)而增长怎么办?

这是How are neural networks used when the number of inputs could be variable? 的后续问题。

【问题讨论】:

  • 在您的问题中听起来好像很明显可以构建这样一个学习中位数的网络。直觉上,我会说这是不可能的。
  • 也许一个更好的问题是固定程序大小的图灵机是否可以计算任意数量输入的中值。如果不能,那么神经网络肯定不能。
  • @cel 如果你像 CNN 那样使用最大和最小池化层,我认为中值问题是可以训练的。
  • @user3320467 给我看任何固定大小的图灵机,我可以设计一个足够大的输入,超过你的程序处理所有这些的能力。我的观点很简单:可变输入需要可变空间。
  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 stackoverflow.com/tags/machine-learning/info 中的介绍和注释跨度>

标签: machine-learning neural-network


【解决方案1】:

如果神经网络学会计算 n 个输入的中位数,它如何计算更多输入的中位数?

首先,您应该了解神经网络的使用。我们通常在无法用数学解决方案的问题中使用神经网络。在这个问题中,使用 NN 并不重要/不可取。

还有其他类似的问题,比如预测,随着时间的推移,连续的数据会出现。

解决此类问题的一种方法是隐马尔可夫模型 (HMM)。但同样,此类模型取决于一段时间内输入之间的相关性。所以这个模型对于输入完全随机的问题效率不高。

所以,如果输入是完全随机的并且内存需求增加了

对此您无能为力,一种可能的解决方案是增加内存大小。

记住一件事,NN 和类似的机器学习模型旨在从数据中提取有意义的信息。如果数据只是一些随机值,那么所有模型都会生成一些随机输出。

【讨论】:

  • “我们通常在无法用数学解决的问题中使用神经网络”——真的是这样吗?神经网络的数学描述不是也使它成为数学解决方案吗?
【解决方案2】:

还有一个想法:一些数据转换。让 N 足够大,总是大于 n。我们制作了一个具有 2*N 输入的网络。前 N 个输入用于数据。如果 n 小于 N,则其余输入设置为 0。最后 N 个输入用于指定哪些数字是有用的。因此 1 是数据,0 不是数据。 Matlab 表示法如下:如果 v 是一个输入,并且它是一个长度为 2*N 的向量,那么我们将原始数据放入 v(1:n) 中。之后,我们将 v(n+1:N) 置零。然后放入 v(N+1:N+n) 个 1,然后放入 V(N+n+1:2*N) 个 0。这只是一个想法,我没有检查过。如果你对神经网络的应用感兴趣,可以看一下我们如何选择合适的机器学习算法到classify EEG signals for BCI的例子。

【讨论】:

    【解决方案3】:

    我的一个想法是:将每个权重视为输入数量的函数,而不是固定值。所以一个权重可能有很多定义函数的参数,我们训练这些参数。例如,如果我们希望神经网络计算 n 个输入的平均值,我们希望每个权重函数的行为类似于 1/n。同样,平均值本身可以使用递归神经网络或隐马尔可夫模型来计算,但我希望这种方法可以推广到解决内存需求增长的某些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-18
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 2014-10-21
      • 2010-12-18
      相关资源
      最近更新 更多