当输入的数量可变时,如何使用神经网络?
Posted
技术标签:
【中文标题】当输入的数量可变时,如何使用神经网络?【英文标题】:How are neural networks used when the number of inputs could be variable? 【发布时间】:2010-12-18 11:55:59 【问题描述】:我看到的所有神经网络示例都是针对一组固定的输入,这些输入非常适用于图像和固定长度的数据。您如何处理可变长度数据,例如句子、查询或源代码?有没有办法将可变长度的数据编码为固定长度的输入,并且仍然获得神经网络的泛化特性?
【问题讨论】:
【参考方案1】:要对不同大小的图像使用神经网络,通常会裁剪图像本身并放大或缩小比例以更好地适应网络的输入。我知道这并不能真正回答您的问题,但对于其他类型的输入,在输入上使用某种转换函数,可能会出现类似的情况?
【讨论】:
【参考方案2】:我去过那里,我遇到了这个问题。 ANN 是为固定特征向量长度而设计的,许多其他分类器如 KNN、SVM、贝叶斯等也是如此。 即输入层应该定义明确而不是变化,这是一个设计问题。 然而,一些研究人员选择添加零来填补缺失的空白,我个人认为这不是一个好的解决方案,因为那些零(虚值)会影响网络收敛到的权重。此外,可能还有一个以零结尾的真实信号。
ANN 不是唯一的分类器,还有更多甚至更好的分类器,例如随机森林。这个分类器被认为是研究人员中最好的,它使用少量随机特征,使用 bootstrapping 和 bagging 创建数百个决策树,这可能效果很好,所选特征的数量通常是特征向量大小的 sqrt。这些特征是随机的。每个决策树都收敛到一个解决方案,使用多数规则,然后最有可能选择的类。
另一种解决方案是使用动态时间规整 DTW,甚至更好地使用隐马尔可夫模型 HMM。
另一种解决方案是插值,插值(补偿沿小信号的缺失值)所有小信号与最大信号大小相同,插值方法包括但不限于平均,B样条,三次。 ....
另一种解决方案是使用特征提取的方法来使用最好的特征(最有特色的),这次将它们固定大小,这些方法包括PCA,LDA等。
另一种解决方案是使用特征选择(通常在特征提取之后)一种简单的方法来选择提供最佳准确度的最佳特征。
暂时就这些了,如果没有适合你的,请联系我。
【讨论】:
【参考方案3】:一些问题可以通过循环神经网络来解决。 例如,它适用于计算输入序列的奇偶性。
recurrent neural network for calculating parity 将只有一个输入功能。 随着时间的推移,这些比特可能会被送入其中。它的输出也反馈到隐藏层。 这允许仅使用两个隐藏单元来学习奇偶校验。
正常的前馈两层神经网络需要 2**sequence_length 隐藏单元来表示奇偶性。这个limitation holds 适用于任何只有 2 层的架构(例如 SVM)。
【讨论】:
这类似于只使用神经网络的隐马尔可夫模型吗? 它更类似于神经网络,将一些输出馈送到下一个输入。不重要的历史会随着时间的推移而被遗忘。【参考方案4】:我想一种方法是在输入中添加一个时间分量(循环神经网络)并将输入一次流式传输到网络中(基本上创建相当于词法分析器和解析器的神经网络)将允许输入非常大,但缺点是不一定有停止符号来分隔不同的输入序列(相当于句子中的句号)
【讨论】:
【参考方案5】:您通常会从数据中提取特征并将其提供给网络。不建议只获取一些数据并将其提供给网络。在实践中,预处理和选择正确的特征将决定你的成功和神经网络的性能。不幸的是,恕我直言,这需要经验才能培养出一种感觉,而且这不是任何人可以从书本中学到的。
总结:“垃圾进,垃圾出”
【讨论】:
您希望神经网络提取特征并将其提供给另一个网络进行分类/解释的情况如何。或者您希望网络从一组示例中学习语法。在这两种情况下,网络都需要处理可变长度的数据集。 有时你想要一个双向关联内存,而要关联的项目的大小是不同的。 (人名,人像)【参考方案6】:我不完全确定,但我想说,使用最大输入数(例如,对于单词,假设没有单词会超过 45 个字符(根据***在字典中找到的最长单词),并且如果遇到较短的单词,请将其他输入设置为空白字符。
或者对于二进制数据,将其设置为 0。这种方法的唯一问题是,如果一个填充有空白字符/零/任何内容的输入与一个有效的全长输入相冲突(与其说是单词的问题,不如说是数)。
【讨论】:
以上是关于当输入的数量可变时,如何使用神经网络?的主要内容,如果未能解决你的问题,请参考以下文章