我所见过的神经网络的所有例子都是针对一组固定的输入,这些输入适用于图像和固定长度数据.你如何处理可变长度数据,如句子,查询或源代码?有没有办法将可变长度数据编码为固定长度输入,仍然可以获得神经网络的泛化属性?
我去过那里,我遇到了这个问题.ANN是针对固定特征向量长度而制作的,因此许多其他分类器如KNN,SVM,贝叶斯等也是如此.即输入层应该被很好地定义而不是变化,这是设计问题.然而,一些研究人员选择添加零来填补缺失的空白,我个人认为这不是一个好的解决方案,因为那些零(虚幻值)将影响网络将收敛的权重.此外,可能存在以零结尾的真实信号.
ANN不是唯一的分类器,有更多甚至更好的如随机森林.这个分类器被认为是研究人员中最好的,它使用少量随机特征,使用自举包装创建数百个决策树,这可能效果很好,所选特征的数量通常是特征向量大小的sqrt.这些功能是随机的.每个决策树都会收敛到一个解决方案,然后使用多数规则选择最可能的类.
另一种解决方案是使用动态时间扭曲DTW,甚至更好地使用隐马尔可夫模型HMM.
另一种解决方案是插值,插值(沿小信号补偿缺失值)所有小信号与最大信号具有相同的大小,插值方法包括但不限于平均,B样条,立方.... .
另一种解决方案是使用特征提取方法来使用最好的特征(最有特色),这次使它们固定大小,那些方法包括PCA,LDA等.
另一种解决方案是使用特征选择(通常在特征提取后),一种简单的方法来选择提供最佳精度的最佳特征.
这一切都是现在,如果没有那些为你工作,请与我联系.
您通常会从数据中提取功能并将其提供给网络.不建议只取一些数据并将其提供给网络.在实践中,预处理和选择正确的功能将决定您的成功和神经网络的性能.不幸的是,恕我直言,它需要经验来培养一种感觉,这是一本书都无法学到的东西.
总结:"垃圾进,垃圾出"
一些问题可以通过递归神经网络来解决.例如,它有利于计算输入序列上的奇偶校验.
用于计算奇偶校验的递归神经网络将只有一个输入特征.随着时间的推移,可以将这些位送入其中.它的输出也反馈到隐藏层.这允许仅用两个隐藏单元来学习奇偶校验.
正常的前馈双层神经网络将需要2**sequence_length隐藏单元来表示奇偶校验.这种限制适用于仅有2层的任何架构(例如,SVM).