53

我所看到的神经网络的所有例子都是针对一组固定的输入,对于图像和固定长度的数据来说效果很好。你如何处理可变长度的数据,如句子,查询或源代码?有没有办法将可变长度数据编码成固定长度的输入,并仍然可以获得神经网络的泛化特性?输入数量可变时神经网络如何使用?

回答

27

你通常会从数据中提取功能,并将它们提供给网络,不建议只取得一些数据并将其喂入网。在实践中,预处理和选择正确的特征将决定你的成功和神经网络的性能。不幸的是,恕我直言,它需要经验来发展,并没有人能从书中学到什么。

总结:“在垃圾进,垃圾出”

+22

如果您希望神经网络提取特征并将其提供给另一个网络进行分类/解释,那么情况如何?或者你想让网络从一系列例子中学习语法。在这两种情况下,网络都需要处理可变长度的数据集。 – 2009-11-19 21:55:08

+0

有时候你想要一个双向联想记忆和项目的大小关联是不同的。 (人的名字,人物的图片) – 2009-11-19 21:57:59

0

我不完全确定,但我会说,使用最大数量的输入(例如,对于单词,可以说任何单词将超过45个字符(根据维基百科在字典中找到的最长单词),如果遇到较短的单词,则将其他输入设置为空格字符

或者用二进制数据将其设置为0.此方法的唯一问题是如果输入中填充了空白字符/零/任何碰撞与有效的全长输入(没有太大的问题与单词,因为它是与数字)

18

有些问题可以通过经常性的神经网络来解决。例如,它对计算一系列输入的奇偶性很有用。

recurrent neural network for calculating parity只有一个输入功能。 随着时间的推移,这些比特可能会被输入。它的输出也被反馈给隐藏层。 这允许学习只有两个隐藏单位的奇偶性。

正常的前馈双层神经网络需要2 **个sequence_length隐藏单元来表示奇偶校验。对于只有2层的任何体系结构(例如,SVM),此limitation holds

+1

这与仅使用神经网络的隐马尔可夫模型相似吗? – 2010-04-22 17:07:47

+2

它更类似于一些输出馈送到下一个输入的神经网络。不重要的历史将随着时间被遗忘。 – 2010-04-22 18:23:24

2

我想一个办法是将一个时间成分添加到输入(循环神经网络)中,并将输入流一次输入到一个网络块(基本上创建一个词法分析器和解析器的神经网络等价物)这将允许输入相当大,但会有一个缺点,即不一定有停止符号来分隔彼此不同的输入序列(相当于一段时间的助推器)

25

我一直在那里,我面临这个问题。 人工神经网络是针对固定特征向量长度做出的,其他许多分类器也是如此,例如KNN,SVM,贝叶斯等。即输入层应该被很好地定义并且不会变化,这是一个设计问题。然而,一些研究人员选择添加零填补缺失的差距,我个人认为这不是一个好的解决方案,因为这些零(不真实的值)将影响网络将收敛的权重。另外可能有一个以零结尾的实际信号。

人工神经网络不是唯一的分类器,还有更多甚至更好的随机森林。这个分类器被认为是研究人员中最好的,它使用少量的随机特征,使用引导装袋创建数百个决策树,这可能效果很好,所选特征的数量通常是特征向量大小的sqrt。这些功能是随机的。每个决策树收敛到一个解决方案,使用最有可能的类将选择的多数规则。

另一种解决方案是使用动态时间规整DTW,或者甚至更好地使用隐马尔可夫模型HMM。插值方法包括但不限于求平均,B样条,立方.....

另一种解决方案是使用特征提取方法,使用最好的功能(最显着的),这个时候让他们固定的大小,这些方法包括PCA,LDA等

另一种解决方案是使用特征选择(通常在特征提取之后)一种简单的方法来选择提供最佳准确性的最佳特征。

这就是现在,如果不是那些为你工作,请与我联系。

1

要在不同尺寸的图像上使用神经网络,图像本身通常会被裁剪并向上或向下缩放以更好地适应网络输入。我知道这并不能真正回答你的问题,但是对于其他类型的输入,使用输入上的某种变换函数可能会有类似的结果吗?