一个简单的例子:给定输入序列,我希望神经网络输出序列的中值。问题是,如果神经网络学会计算n个输入的中位数,它如何计算更多输入的中位数?我知道循环神经网络可以学习序列上的最大值和奇偶校验等函数,但计算这些函数只需要恒定的内存。如果内存需求随着输入大小的增加而增加,例如计算中位数,那该怎么办?
这是关于How are neural networks used when the number of inputs could be variable?的后续问题。
答案 0 :(得分:1)
如果神经网络学会计算n个输入的中位数,它如何计算更多输入的中位数?
首先,您应该了解神经网络的使用。我们通常在无法获得数学解的问题中使用神经网络。在这个问题中,使用NN并不重要/不可取。
还存在其他类似性质的问题,例如预测,其中连续数据会随着时间的推移而到达。
这种问题的一种解决方案可以是隐马尔可夫模型(HMM)。但同样,这些模型取决于一段时间内输入之间的相关性。因此,对于输入完全随机的问题,此模型效率不高。
因此,如果输入完全随机且内存需求增长
你无能为力,一种可能的解决办法就是增加你的记忆力。
记住一件事,NN和类似的机器学习模型旨在从数据中提取有意义的信息。如果数据只是一些随机值,那么所有模型都会产生一些随机输出。
答案 1 :(得分:1)
我有一个想法如下:将每个权重视为输入数量而不是固定值的函数。因此权重可能有许多定义函数的参数,我们训练这些参数。例如,如果我们希望神经网络计算n个输入的平均值,我们希望每个权重函数的行为类似于1 / n。同样,平均本身可以使用递归神经网络或隐马尔可夫模型来计算,但我希望这种方法可以推广到解决内存需求增长的某些问题。
答案 2 :(得分: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)个,然后放入V(N + n + 1:2 * N)个零。这只是一个想法,我没有检查过。如果您对神经网络的应用感兴趣,请查看我们如何选择适当的机器学习算法classify EEG signals for BCI的示例。