如何减少神经网络的过度拟合?

时间:2020-04-15 13:49:13

标签: machine-learning neural-network classification

我正在做一个声音识别项目。

我有1500个带有标签的5类声音样本。 (每个类别300个声音样本,持续2秒)。

我正在使用在线工具来计算MFCC系数(Egde脉冲)(因此我无法提供代码),然后 我正在训练神经网络。

数据集已拆分:

  • 80%->分为80/20的训练集-训练/验证

  • 20%->测试集

经过200个训练周期,我的网络的第一个发行版本具有以下(非常糟糕)的表现:

训练精度= 100%/验证精度= 30%

通过在网上和这个论坛上搜索,我找到了减少过度拟合的方法:

我最后一次发布的神经网络的最终性能如下:

训练准确度= 80%/验证准确度= 60%(200个训练周期后)

如您所见,训练准确性和验证准确性之间仍然存在显着差异。

我的问题是如何继续提高验证准确性?

我的神经网络的代码:

 public static IWebElement CheckTextOnPage(IWebDriver driver, string _text)
    {
        var buildXpath = "//*[contains(translate(text()[normalize-space()],'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), '" + _text.ToLower() + "' )]";
        return driver.FindElement(By.XPath(buildXpath));
    }

谢谢

此致

Lionel

2 个答案:

答案 0 :(得分:0)

  1. 尝试分层K折验证this
  2. 选择不同的批次大小{16,32,64}
  3. 尝试使用sigmoid
  4. BatchNormalization()

答案 1 :(得分:0)

通常为减少过度拟合,可以执行以下操作:

  1. 添加更多正则化功能(例如,辍学率更高的多层辍学)
  2. 减少功能数量
  3. 减少网络容量(例如,减少层数或隐藏单元数)
  4. 减小批次大小