1

很多天以来,我一直在使用 seq2seq 模型的默认设置在大约一百万个句子的自定义并行语料库上训练 seq2seq 模型。以下是教程中提到的经过 350k 步的输出日志。我看到bucket perplexity突然显着增加了整个train perplexity很长时间以来一直保持在1.02,并且学习率初始化为0.5但现在显示为0.007左右,因此学习率也显着降低,而且系统的输出不能令人满意。我如何知道是否达到了纪元点,我应该停止并重新配置参数调整和优化器改进等设置?

全局步长 372800 学习率 0.0071 步长 1.71 困惑度 1.02
  评估:桶 0 困惑 91819.49
  评估:桶 1 困惑 21392511.38
  评估:桶 2 困惑 16595488.15
  评估:桶 3 困惑 7632624.78
全局步长 373000 学习率 0.0071 步长 1.73 困惑度 1.02
  评估:桶 0 困惑 140295.51
  评估:桶 1 困惑 13456390.43
  评估:桶 2 困惑 7234450.24
  评估:桶 3 困惑 3700941.57
全局步长 373200 学习率 0.0071 步长时间 1.69 困惑度 1.02
  评估:桶 0 困惑 42996.45
  评估:桶 1 困惑 37690535.99
  评估:桶 2 困惑 12128765.09
  评估:桶 3 困惑 5631090.67
全局步长 373400 学习率 0.0071 步长 1.82 困惑度 1.02
  评估:桶 0 困惑 119885.35
  评估:桶 1 困惑 11166383.51
  评估:桶 2 困惑 27781188.86
  评估:桶 3 困惑 3885654.40
全局步长 373600 学习率 0.0071 步长 1.69 困惑度 1.02
  评估:桶 0 困惑 215824.91
  评估:桶 1 困惑 12709769.99
  评估:桶 2 困惑 6865776.55
  评估:桶 3 困惑 5932146.75
全局步长 373800 学习率 0.0071 步长 1.78 困惑度 1.02
  评估:桶 0 困惑 400927.92
  评估:桶 1 困惑 13383517.28
  评估:桶 2 困惑 19885776.58
  评估:桶 3 困惑 7053727.87
全局步长 374000 学习率 0.0071 步长 1.85 困惑度 1.02
  评估:桶 0 困惑 46706.22
  评估:桶 1 困惑 35772455.34
  评估:桶 2 困惑 8198331.56
  评估:桶 3 困惑 7518406.42
全局步长 374200 学习率 0.0070 步长 1.98 困惑度 1.03
  评估:桶 0 困惑 73865.49
  评估:桶 1 困惑 22784461.66
  评估:桶 2 困惑 6340268.76
  评估:桶 3 困惑 4086899.28
全局步长 374400 学习率 0.0069 步长 1.89 困惑度 1.02
  评估:桶 0 困惑 270132.56
  评估:桶 1 困惑 17088126.51
  评估:桶 2 困惑 15129051.30
  评估:桶 3 困惑 4505976.67
全局步长 374600 学习率 0.0069 步长 1.92 困惑度 1.02
  评估:桶 0 困惑 137268.32
  评估:桶 1 困惑 21451921.25
  评估:桶 2 困惑 13817998.56
  评估:桶 3 困惑 4826017.20

什么时候会停止?

4

1 回答 1

1

看起来您的开发数据和训练数据之间存在差异:

全局步长 374600 学习率 0.0069 步长 1.92 困惑度 1.02

评估:桶 0 困惑 137268.32

您的训练困惑度为 1.02 - 该模型在接收到的训练数据上基本上是完美的。但是您的开发困惑是巨大的,该模型根本不适用于开发集。它在更早的时代看起来如何?我怀疑有一些不匹配。也许训练和开发的标记化不同?也许你加载了错误的文件?也许原始翻译模型中的桶大小不适合您的开发数据?不知道更多细节很难说。

至于何时停止:原始翻译模型具有无限的训练循环,因为它具有庞大的数据集和容量,并且可以在数周的训练中继续改进。但是当学习率不再提高时,它也会降低学习率,所以如果你的学习率非常低(就像你的情况一样),这是一个你可以停止的明确信号。

于 2016-02-02T07:59:54.410 回答