为什么隐藏层不使用softmax

Why is softmax not used in hidden layers

我已阅读给出的答案 。我的确切问题与已接受的答案有关:

  1. 变量独立性:大量的正则化和努力是为了保持你的变量独立、不相关和相当稀疏。如果您使用 softmax 层作为隐藏层 - 那么您将保持所有节点(隐藏变量)线性相关,这可能会导致许多问题和泛化能力差。

在隐藏层中放弃变量独立性会产生哪些并发症?请至少提供一个例子。我知道隐藏变量的独立性在编码反向传播方面有很大帮助,但反向传播也可以为 softmax 编码(请验证我在这个声明中是否正确。我似乎已经根据我得到了正确的方程式。因此声明) .

  1. 训练问题:试着想象一下,为了让你的网络更好地工作,你必须让你的隐藏层的一部分激活稍微低一点。然后 - 你会自动让其余的人在更高水平上进行平均激活,这实际上可能会增加错误并损害你的训练阶段。

我不明白你是如何实现这种灵活性的,即使在 sigmoid 隐藏神经元中你可以微调特定给定神经元的激活,这正是梯度下降的工作。那么我们为什么还要担心这个问题。如果你可以实现反向传播,其余部分将由梯度下降来处理。微调权重以使激活正确,这不是您想要做的事情,即使您可以做到但您做不到。 (这里理解有误还望指正)

  1. 数学问题:通过对模型的激活设置约束,您会在没有任何逻辑解释的情况下降低模型的表达能力。在我看来,努力让所有激活都相同是不值得的。

请解释一下这里所说的内容

  1. 批量归一化:我明白了,这里没有问题

1/2. 我不认为你知道作者想说什么。想象一个有 3 个节点的层。其中 2 个节点对输出错误的错误责任为 0;所以有一个节点需要调整。所以如果你想提高节点 0 的输出,那么你会立即影响该层中的节点 1 和 2 - 可能会使输出更加错误。

Fine tuning the weights so as to make the activations proper is not something you, even if you could do, which you cant, would want to do. (Kindly correct me if my understanding is wrong here)

这就是反向传播的定义。这正是您想要的 。神经网络依靠激活(非线性的)来映射函数。

3. 你基本上对每个神经元说 'hey, your output cannot be higher than x, because some other neuron in this layer already has value y'。因为 softmax 层中的所有神经元都应该具有 1 的总激活,这意味着神经元不能高于特定值。对于小层 - 小问题,但对于大层 - 大问题。想象一个有 100 个神经元的层。现在想象一下他们的总产量应该是1。这些神经元的平均值将是 0.01 -> 这意味着你正在建立网络连接依赖(因为激活将保持非常低,平均) - 因为其他激活函数输出(或接受输入)范围(0:1 / -1:1).