1

我正在研究一个 CNN 分类问题:
使用 CNN 将音频情绪分为 6 类(愤怒、厌恶、恐惧、快乐、悲伤、中性)。我正在使用 EMODB 数据集,输入特征是傅里叶变换 [256*36]。我的 CNN 网络有 3-4 个卷积层,每个卷积都有最大池化,外加一个全连接层。但是学习曲线显示训练和验证损失之间存在很大差距,表明严重的过度拟合。我能得到的最佳验证准确率始终在 75% 到 80% 之间。

学习曲线这是我得到的学习曲线之一。黑色和蓝色分别是训练准确率和损失。另外两个用于验证准确性和损失。即使训练损失为 0,验证结果也不会再改善。

我试图扩充我的数据集,将 50% 的 dropout 添加到 fc 层,将 l2 正则化添加到 fc 层,并使用学习率衰减策略(如 caffe 中的“inv”)。但差距仍然存在。

是因为我的数据集太小了吗?
我总共有大约 500 个音频,并将其扩展到大约 6,000 个样本。但是当我将数据增加到 15000 时,差距仍然很大。15,000 仍然是 CNN 的小数据集吗?

会不会是因为数据扩充过程引入了错误?
我的原始数据集包含大约 500 个不同长度的音频,从 1 秒到 6 秒不等。所以我只是随机抽取了1.2s的样本。持续时间越长,我得到的样本就越多。我现在可以有超过 15,000 个样本进行训练。我在想,对于长音频来说,1.2s的样本会丢失太多信息,可能无法代表对应情绪的特征。但这是我能想到的最好的方法,因为由于某种原因我不能使用 RNN 或 HMM 来处理数据。

我的特征计算有可能出错吗?(尽管我已经检查了好几次)我也尝试过 MFSC 特征 [120*40],但是这两个特征集有类似的过拟合问题。

还是因为我的网络不够好?我认为更复杂的网络会引入更多的过度拟合。但简单的网络并没有表现出良好的性能。

尽管我列出了许多过度拟合的原因,但我无法弄清楚哪些是影响性能的真正因素。有什么办法可以知道哪一部分出了问题?或者有什么减少过拟合的建议?

谢谢!

4

1 回答 1

0

您可以尝试在 CNN 中添加一些“dropout”层,看看它是否会减少过度拟合。——文卡特

于 2018-03-26T02:06:05.317 回答