Tensorflow关于seq2seq模型的最新API已经包括了计划采样功能:
https://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/ScheduledEmbeddingTrainingHelperhttps://www.tensorflow.org/api_docs/python/tf/contrib/seq2seq/ScheduledOutputTrainingHelper
计划采样的原始论文可以在这里找到:https://arxiv.org/abs/1506.03099
我阅读了该论文,但无法理解ScheduledEmbeddingTrainingHelper
和ScheduledOutputTrainingHelper
之间的区别。文档仅指出ScheduledEmbeddingTrainingHelper
是一种添加了计划采样的训练助手,而ScheduledOutputTrainingHelper
是一种直接向输出添加计划采样的训练助手。
我想知道这两个助手之间的区别是什么?
回答:
我联系了负责这个功能的工程师,他回复说:
输出采样器在每个时间步要么发出原始的RNN输出,要么发出该时间步的原始真实值。嵌入采样器将RNN输出视为一个分布的对数几率,并要么发出从该分类分布中抽样ID的嵌入查找,要么发出该时间步的原始真实值。