由于语言有不可预测的性质,因此过拟合在NLP模型中很常见。接下来我们将看看如何使用一些技巧来减少过拟合。
当网络对训练数据过度专业化时,就会发生过拟合,一方面是它非常擅长匹配训练集中在其他任何地方都不存在的“噪声”数据的模式。因为这种特殊的噪声不存在于验证集中,网络匹配得越好,验证集的损失就越多。
在本节中,我们将探索几种泛化模型和减少过拟合的方法:
1. 调整学习率
也许导致过拟合的最大因素是优化器的学习率太高。这意味着网络学习太快了。
上一篇中,优化器被简单地声明为adam,它用默认参数调用Adam优化器。然而,这个优化器支持多个参数,包括学习率。你可以在compile前边增加一行代码:
adam = tf.keras.optimizers.Adam(learning_rate=0.0001,
beta_1=0.9, beta_2=0.999,amsgrad=False)
其中学习率的默认值(通常为0.001)减少了90%(到0.0001)。beta_1和beta_2保持默认值,amsgrad也是如此。beta_1和beta_2必须介于0和1之间,并且通常都接近于1。Amsgrad是Sashank Reddi、Satyen Kale和Sanjiv Kumar的论文“On the Convergence of Adam andBeyond”(https://arxiv.org/abs/1904.09237)中介绍的Adam优化器的替代实现。
2. 探索词汇表大小</