我使用LSTM训练了一个网络,但发现出现了过拟合。我尝试了多种学习率/批量大小/优化器的组合,但大多数组合得到的图形相似。
我想知道我是否可以使用75k次迭代之前的模型。你认为这个模型是过拟合的吗?
回答:
实际上很难说这是否是过拟合的 – 因为你的训练数据有很高的方差。这是有可能的,但不确定。
选择哪个模型?
通常你会创建一个验证数据集,用来测试网络的性能,并选择得分最高的模型(包括一组超参数)。仅此而已。没有额外的验证集会很难做到。
如何处理过拟合?
有很多技术,包括:
- 提前停止(你再次需要验证集,来测试你的网络何时开始过拟合)
- 添加先验
- 权重的先验 – 如L2正则化
- 网络结构的先验 – 也许你可以限制网络的大小?
- 数据分布的先验 – 也许你可以通过某种方式增强你的数据集?例如,对于图像,通常可以稍微变形(旋转、平移)而不丢失标签。对于通用数据,通常添加噪声效果不错
- 集成学习 – 平均多个网络(无论是显式地,还是通过dropout)可以减少过拟合
- 最后但同样重要的是 – 收集更多数据总是有帮助的(因为在极限情况下,经验误差会收敛到泛化误差)。