Hardmax算子背后的理论基础



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

我想知道为hardmax操作符提供此功能背后的理论基础是什么。从表面上看,过去几周的谷歌搜索并没有让我对这个概念有具体的理解。

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

  2. 强化学习文献谈论软注意力与硬注意力。然而,我看不到tf.contrb.seq2seq.hardmax在某些RL模型中实际使用的具体例子,也看不到解释。

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

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

最新更新