我正在使用 LSTM 和 tensorflow 的翻译模型训练会话代理。我使用批量训练,导致每个 epoch 开始后训练数据的困惑度显着下降。这种下降可以通过我批量读取数据的方式来解释,因为我保证我的训练数据中的每个训练对每个时期都只处理一次。当一个新的 epoch 开始时,模型在之前的 epoch 中所做的改进将在再次遇到训练数据时显示其收益,表示为图中的下降。其他批处理方法,例如 tensorflow 的翻译模型中使用的方法,不会导致相同的行为,因为它们的方法是将整个训练数据加载到内存中,并从中随机选择样本。
步骤,困惑
- 330000, 19.36
- 340000, 19.20
- 350000, 17.79
- 360000, 17.79
- 370000, 17.93
- 380000, 17.98
- 390000, 18.05
- 400000, 18.10
- 410000, 18.14
- 420000, 18.07
- 430000, 16.48
- 440000, 16.75
(从 perplexity 中截取的小片段显示在 350000 和 430000 处下降。在下降之间,perplexity 略有上升)
但是,我的问题是关于下跌后的趋势。从图中可以清楚地看出,困惑度略有上升(对于 step ~350000 之后的每个 epoch),直到下一次下降。有人可以就为什么会发生这种情况给出答案或理论吗?