1

我正在做一个元音识别项目,我需要实现一个神经网络。我是这个领域的新手,所以我不完全确定如何正确地做。我有一个包含 800 个单词和 8 种元音的训练集,我的第一步是检查我是否能够使用逻辑回归对多个类进行分类:

- 使用 Matlab,我对每个样本执行 wavread 并将结果向量存储在 800 x 48117 矩阵中,48117 是最大 wav 向量的大小。即在这一步,我有 800 个示例和 48117 个“特征”,它们是每个声音文件的频率值。当我运行逻辑回归时,它会迭代集合并将其分类为 8 个类,准确率约为 99.8%。然后我还为接收到的类生成频谱图,以便可视化每个类,并将它们与原始样本的频谱图进行比较。

- 为了区分元音的共振频率,我们有 3 个共振峰 - F1、F2、F3,可以在频谱图上看到。(例如 F1 为 500 Hz,我们可以看到频谱图在图上该区域的颜色最深)。

- 我正处于创建神经网络的阶段,我几乎不知道如何开始。我不确定有多少输入层单元和隐藏层单元。首先,我认为拥有 48117 个特征和输入单元的数量是不对的,所以我必须以某种方式最小化特征的数量。我认为正确的方法是以某种方式将它们分成对应于 3 个共振峰的 3 组。这是主要问题 -基于什么我可以概括长向量以便能够拥有 3 个输入单元?

- 另一个似乎更琐碎的问题是我应该有多少隐藏单位。我知道有多少没有特定的规则,但根据我的训练集,有经验的神经网络人员会推荐多少?

4

2 回答 2

2

我不确定我是否正确理解您的输入。根据我的收集,wavread 将 .wav 文件读取为“幅度向量”。

首先,有 4837 个输入、k 大小的隐藏层和 8 个类使这个网络有 4837*k + 8*k 的权重,这可能非常巨大。800 个训练输入太多了。人们经常同意隐藏层不应该比输入层小很多(但是,这更像是艺术而不是科学)。

如果逻辑回归表现良好,我也不确定为什么需要神经网络。

有这些疑问,我不确定我是否正在回答您的问题,但我会尝试。您需要减小输入大小。它可以通过多种方式完成,一种是小波/傅立叶分析(将一个空间投射到低维)。进行傅立叶分析后,您可以“存储”不同的频率。更简单的方法是进行降维(matlab 中的一个函数,类似于 PCA)。这是因为附近的值高度相关。在图像分析中称为“白化”。

隐藏层的大小很难估计。最好的方法是对不同大小的隐藏层大小进行实验并选择最好的一个(运行一个循环过夜并查看结果)。

于 2013-09-15T21:08:52.737 回答
0

隐藏单元的数量取决于您想要什么样的性能,为了获得更少的性能和良好的结果,您可以拥有更多的隐藏单元,但对于良好的性能和不太准确的结果。

所以我的建议是尝试不同数量的隐藏单元并选择适合您应用程序的隐藏单元。

于 2013-09-15T07:48:02.393 回答