如何避免过度拟合递归神经网络

时间:2017-03-31 10:04:45

标签: tensorflow speech-recognition recurrent-neural-network

我一直在训练基于双向LSTM的语音识别RNN,一旦新的上下文到达,网络就会忘记旧的上下文。我不确定如何解释它的行为;似乎网络过度紧张,以至于它一次只能记住一个特定的案例。

代码链接为https://github.com/rajkumarcm15/Speech-Recognition/blob/master/MFCC_SWN_BN_Affine/train.py,其输出位于https://github.com/rajkumarcm15/Speech-Recognition/blob/master/MFCC_SWN_BN_Affine/Results.pdf

在理解其输出模式方面需要一些帮助。

3 个答案:

答案 0 :(得分:0)

我没有对你的输出进行过那么多的研究,但你是否考虑了辍学以减少过度拟合? e.g。

cell = GRUCell(num_neurons)  # Or LSTMCell(num_neurons)
cell = DropoutWrapper(cell, output_keep_prob=dropout)
cell = MultiRNNCell([cell] * num_layers)

About dropout

答案 1 :(得分:0)

其他建议(除了建议的dv3之外)你可以尝试通常帮助我:

  • 增加您的hidden_​​size(尝试乘以4)
  • 增加batch_size(再次尝试乘以4)

此外,看起来您的损失仍在下降。也许更多的训练会有所帮助(同样,你只用这个时期量调整了你的学习率)。

希望这有帮助!如果其中一条建议有所作为,请告诉我。

答案 2 :(得分:0)

您是否在每个时期(例如)进行验证步骤,以检查此行为是否确实是由于过度拟合?

如果没有,你应该这样做,并检查是否有一个训练步骤,验证集的损失开始增加,训练集的损失仍然在减少。