【问题标题】:When is NCE a better choice than softmax (to train RNN LM)什么时候 NCE 是比 softmax 更好的选择(训练 RNN LM)
【发布时间】:2016-11-24 09:44:03
【问题描述】:

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

我似乎普遍认为噪声对比估计 (NCE) 运行得更快。因此,我使用 4 个损失函数在 4 个配置上运行了一个基准测试(我特别想测试 softmax 与 NCE)。结果显示在here

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

我不知道该怎么想:NCE 在非常大时会更强吗?我错过了什么吗?

如果你有任何线索,请告诉我, 谢谢

pltrdy

编辑:
还有tensorflow refersthis paper (sec. 3) 声明“使用建议的方法[sampled softmax?],训练的计算复杂度相对于目标的大小变得恒定词汇”

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

【问题讨论】:

    标签: python tensorflow recurrent-neural-network


    【解决方案1】:

    NCE 或采样的 softmax 对于训练具有大量词汇的 LM 至关重要。如果您将词汇量增加到 500k,您会发现 NCE 和 full softmax 之间存在显着差异。您的基准测试的链接似乎已损坏。但是,如果您使用大量词汇,您应该会看到差异。

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 2023-03-10
      • 2011-09-27
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多