神经网络如何学习具有可变数量输入的函数?

7
一个简单的例子:给定一个输入序列,我希望神经网络输出该序列的中位数。问题是,如果神经网络学习了如何计算n个输入的中位数,它如何计算更多输入的中位数呢?我知道循环神经网络可以学习诸如最大值和奇偶性之类的函数,但是计算这些函数只需要恒定的内存。如果内存需求随着输入大小增加而增加,例如计算中位数,该怎么办呢?
这是神经网络在输入数量不确定的情况下如何使用?的跟进问题。

2
也许更好的问题是,一个固定程序大小的图灵机能否计算任意数量输入的中位数。如果不能,那么神经网络肯定也不能。 - dan
1
如果您使用类似CNN的最大池化层和最小池化层,我认为中位数问题是可以训练的。 - Hanhan Li
1
@user3320467 给我展示任何固定大小的图灵机,我可以设计一个足够大的输入来超出你的程序处理所有内容的能力。我的观点很简单:可变输入将需要可变空间。 - dan
@user3320467 我明白你的意思,但是如何在不需要超出输入大小的变量空间的情况下计算中位数呢? - dan
2
我投票关闭此问题,因为它与[帮助中]定义的编程无关,而是涉及ML理论和/或方法 - 请参见https://stackoverflow.com/tags/machine-learning/info中的介绍和注意事项。 - desertnaut
显示剩余3条评论
3个回答

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

0
另一个想法:一些数据转换。让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)放置为零。这只是一个想法,我还没有检查过。如果您对神经网络的应用感兴趣,请看看我们如何选择适当的机器学习算法来classify EEG signals for BCI

0
如果一个神经网络学会了计算n个输入的中位数,那么它如何计算更多输入的中位数呢?
首先,您应该了解神经网络的用途。通常,在无法使用数学解决方案的问题中使用神经网络。在这个问题中,使用NN不是很重要/不可取。
还有其他类似性质的问题,例如预测,在这些问题中,连续的数据随时间到来。
这种问题的一个解决方案可以是隐马尔可夫模型(HMM)。但是,这样的模型取决于一段时间内输入之间的相关性。因此,该模型对于输入完全随机的问题效率不高。
所以,如果输入完全随机且存储要求增加
你不能做太多事情,可能的解决方案之一是增加内存大小。
只要记住一件事,NN和类似的机器学习模型旨在从数据中提取有意义的信息。如果数据只是一些随机值,那么所有模型都将生成一些随机输出。

我们通常在数学无法解决的问题中使用神经网络,这是真的吗?难道神经网络的数学描述不也是一种数学解决方案吗? - jtlz2
我在这里不同意,神经网络的基础是模拟简单的数学函数,然后将它们堆叠起来解决复杂的问题。目前我正在处理一个问题,我希望我的网络能够找到不同长度的变量的平均值,并进一步进行处理。此外,神经网络也被称为函数逼近。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接