如何用Max替换TensorFlow SoftMax,以在神经网络的输出层上生成一个热量矢量



对于分类问题,SoftMax功能用于神经网络的最后一层。
我想将SoftMax层替换为最大层,该层生成一个热量向量,一个将一个设置为最大值发生的索引,并将所有其他条目设置为零。

i可以用TF.Argmax进行tf.argmax,如Tensorflow-tensorflow-密度向量为一hot和tensorflow:将输出张量转换为一hot,但这些不是一种可区分的方法,无法计算梯度。<<<<<<<<<<<<<<<<<<<</p>

如果不是确切的0和1,则值应该足够近。

我一直在考虑多次使用SoftMax,但不建议使用SoftMax,我不明白其背后的原因。

请建议一个可区分的解决方案。

如果我正确理解,我认为您所描述的是不可能的。为了使操作可区分,我们需要能够找到梯度。

直观地,如果您只是将所有值剪辑为0或1

,这是没有意义的

响应评论的更新:

you 可以始终在 metric 计算中使用此类操作。这将使您在培训期间对性能的"更准确"(但不会用于培训(,只是向您报告结果(。

不可能将其用于损失/目标功能,因为这不是神经网络学习的工作方式。我会尝试解释一下。

有适当的数学理由和定义可以解释为什么损失函数需要可区分的,但是,我们可以想象我们的优化者需要一个"平滑","连续"的表面才能进行工作。

想象一下,蒙住双眼的行走在平稳,连续的平面上,并承担着找到最低点的任务。一种策略是将脚围成一个圆圈,直到您发现可以采取最远的步骤。现在采取该步骤,重复一次。继续重复,直到您处于底部,没有剩下的向下台阶。可以以这种方式想到梯度下降优化。我们朝着每次越来越靠近底部的方向迈出的小步骤。

现在,除了单个悬崖边缘外,还要想象一个完全平坦的表面。无论您在那个飞机上站立何处,都可能不知道要介入哪个方向。如果您远离悬崖边缘,一切都完全平坦。即使您处于悬崖边缘,您仍然不知道确切的方向(可能有180度可供选择(以达到最低点。

这有意义吗?没有光滑的连续表面,我们将无法使用向下采取小步骤的策略?

no,没有可区分的解决方案,这就是为什么我们使用softmax激活,因为它是最大函数的可区分近似值。

相关内容

最新更新