【问题标题】:How are neural networks used when the number of inputs could be variable?当输入的数量可变时,如何使用神经网络?
【发布时间】:2010-12-18 11:55:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案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。这种方法的唯一问题是,如果一个填充有空白字符/零/任何内容的输入与一个有效的全长输入相冲突(与其说是单词的问题,不如说是数)。

          【讨论】:

            猜你喜欢
            • 2015-03-02
            • 2020-06-25
            • 2017-01-02
            • 2018-10-20
            • 2022-01-18
            • 2015-09-16
            • 2014-04-11
            • 2012-10-05
            相关资源
            最近更新 更多