什么时候NCE比softmax更好(训练RNN LM)

时间:2016-11-24 09:44:03

标签: python tensorflow recurrent-neural-network

我目前正在使用TensorFlow处理RNN LM。我从TensorFlow教程(tuto; sources)开始,并自定义了脚本(https://github.com/pltrdy/tf_rnnlm/)。

我似乎普遍认为噪声对比度估算(NCE)运行得更快。所以我运行了4个配置运行的基准测试,使用4个丢失功能(我特别想测试softmax与NCE)。结果显示为here

速度(每秒字数)差异不足以得出任何结论。

我不确定该怎么想:NCE是非常强大吗?我错过了什么吗?

请告诉我你是否有任何线索, THX

pltrdy

编辑:
同样tensorflow refersthis paper (sec. 3)表示“使用提议的方法 [采样softmax?] ,训练的计算复杂度相对于常数目标词汇量的大小“

在我们的基准测试中,这根本不是(根本)。

1 个答案:

答案 0 :(得分:0)

NCE或采样softmax对于训练具有大词汇量的LM是必不可少的。如果你将词汇量增加到500k,你会发现NCE和完全softmax之间存在显着差异。您的基准测试链接似乎已被破坏。但是,如果你使用大词汇量,你应该看到差异。