【问题标题】:Theoretical underpinning behind Hardmax operatorHardmax 算子背后的理论基础
【发布时间】:2025-12-06 00:55:01
【问题描述】:

在张量流Github存储库中,在文件attentionwrapper.py中,已经定义了hardmax算子。在文档中,已经提到了tf.contrib.seq2seq.hardmax

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

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

  2. 强化学习文献讨论了软注意力与硬注意力。但是,我看不到具体的例子,也看不到 tf.contrib.seq2seq.hardmax 可以在某些 RL 模型中实际使用的位置的解释。

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

【问题讨论】:

    标签: python tensorflow pytorch mxnet


    【解决方案1】:

    当您别无选择只能非概率地做出决定时,使用 Hardmax。例如,当您使用模型生成神经模块网络中的神经架构时,您必须做出离散选择。为了使这个可训练(因为正如你所说,这将是不可微分的),您可以使用 REINFORCE(RL 中的一种算法)通过策略梯度进行训练,并通过蒙特卡洛采样估计这种损失贡献。神经模块网络是一种 NLP 结构,依赖于 seq2seq。我敢肯定有很多例子,但这是一个立即浮现在脑海中的例子。

    【讨论】:

    • 您能否指出任何使用 Hardmax 的工作 SOTA 或文献?经过体面的搜索,我找不到任何东西。