当输入数量可变时,如何使用神经网络?

时间:2009-11-19 20:55:26

标签: artificial-intelligence machine-learning neural-network pattern-recognition

我所见过的神经网络的所有例子都是针对一组固定的输入,这些输入适用于图像和固定长度数据。你如何处理可变长度数据,如句子,查询或源代码?有没有办法将可变长度数据编码为固定长度输入,仍然可以获得神经网络的泛化属性?

6 个答案:

答案 0 :(得分:29)

我去过那里,我遇到了这个问题。 人工神经网络是针对固定特征向量长度而制作的,许多其他分类器也是如此,例如KNN,SVM,贝叶斯等。  即输入层应该很好地定义而不是变化,这是一个设计问题。 然而,一些研究人员选择添加零来填补缺失的空白,我个人认为这不是一个好的解决方案,因为那些零(虚幻值)将影响网络将收敛的权重。此外,可能存在以零结尾的真实信号。

ANN不是唯一的分类器,有更多甚至更好的随机森林。这个分类器被认为是研究人员中最好的,它使用少量随机特征,使用自举包装创建数百个决策树,这可能效果很好,所选特征的数量通常是特征向量大小的sqrt。这些功能是随机的。每个决策树都会收敛到一个解决方案,然后使用多数规则选择最可能的类。

另一个解决方案是使用动态时间扭曲DTW,甚至更好地使用隐马尔可夫模型HMM。

另一种解决方案是插值,插值(沿小信号补偿缺失值)所有小信号与最大信号具有相同的大小,插值方法包括但不限于平均,B样条,立方。 ....

另一个解决方案是使用特征提取方法来使用最好的特征(最有特色),这次使它们固定大小,那些方法包括PCA,LDA等。

另一种解决方案是使用特征选择(通常在特征提取之后),选择最佳特征的简便方法。

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

答案 1 :(得分:28)

您通常会从数据中提取要素并将其提供给网络。不建议只取一些数据并将其提供给网络。在实践中,预处理和选择正确的功能将决定您的成功和神经网络的性能。不幸的是,恕我直言,它需要经验才能培养出一种感觉,而且从书中学到的东西都没有。

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

答案 2 :(得分:18)

一些问题可以通过递归神经网络来解决。 例如,它有利于计算输入序列的奇偶校验。

recurrent neural network for calculating parity只有一个输入功能。 随着时间的推移,可以将这些位送入其中。它的输出也反馈到隐藏层。 这样就可以用两个隐藏的单位来学习奇偶校验。

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

答案 3 :(得分:2)

我想有一种方法是在输入中添加一个时间组件(递归神经网络),并一次将输入流传输到网络中(基本上创建与词法分析器和解析器相当的神经网络)将允许输入相当大,但缺点是不一定有一个停止符号来分隔彼此不同的输入序列(相当于一个句子中的句号)

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

或者使用二进制数据,将其设置为0.这种方法的唯一问题是,如果输入填充了空白字符/零/任何与有效全长输入相冲突(不是因为它与号)。