代码之家  ›  专栏  ›  技术社区  ›  Chaitanya Bapat

Hardmax算子背后的理论支撑

  •  0
  • Chaitanya Bapat  · 技术社区  · 7 年前

    在tensor flow Github存储库中 attentionwrapper.py tf.contrib.seq2seq.hardmax

    我想知道为hardmax操作员提供此功能背后的理论基础是什么。过去几周谷歌搜索的初步迹象并没有让我对这个概念有具体的理解。

    1. 如果softmax是可微的(soft),为什么要使用hardmax?如果它不能用于反向传播(由于梯度计算需要不可微性),它还能在哪里使用?

    2. 强化学习文献讨论软硬注意。但是我没有看到具体的例子,也没有解释 tf.contrib.seq2seq.hardmax公司 实际上可以用在一些RL模型中。

    3. 从表面上看,既然seq2seq中提到了它,它显然应该在自然语言处理中有一些应用。但具体在哪里?有大量的NLP任务。找不到任何使用hardmax的直接任务SOTA算法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   rvd    7 年前

    Hardmax是在你别无选择只能以非概率的方式做出决定时使用的。例如,当你使用一个模型来生成一个神经结构,就像在神经模块网络中一样,你必须做出一个离散的选择。要使此可训练(因为这在您的状态下是不可微的),您可以使用REINFORCE(RL中的一个算法)通过策略梯度进行训练,并通过蒙特卡罗抽样估计此损失贡献。神经模块网络是一种NLP结构,依赖于seq2seq。我相信有很多例子,但这是一个立即想到的。