为什么softmax不用于隐藏层

时间:2017-05-28 04:48:02

标签: neural-network softmax activation-function

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

  1. 变量独立性:为了保持变量独立,不相关和非常稀疏,需要进行大量的正则化和努力。如果您使用softmax图层作为隐藏图层 - 那么您将保持所有节点(隐藏变量)线性相关,这可能会导致许多问题和一般性差。
  2. 在隐藏层中出现变量独立性会产生哪些并发症?请至少提供一个例子。我知道隐藏的变量独立性在编写反向传播方面有很大帮助,但是反向传播也可以编写为softmax(请在此声明中验证我是否正确。我似乎已经根据我得到了方程式。因此声称)

    1. 培训问题:尝试想象为了让您的网络更好地工作,您必须从隐藏层中稍微降低一部分激活。然后 - 自动地让你剩下的人在更高的水平上进行平均激活,这实际上可能会增加错误并损害你的训练阶段。
    2. 我不明白你是如何在sigmoid隐藏神经元中实现这种灵活性的,你可以微调特定神经元的激活,这正是梯度下降的工作。那么为什么我们甚至担心这个问题。如果你可以实现backprop休息,将通过梯度下降来处理。微调重量以使激活正确不是你的事,即使你能做到,你也不能做。 (如果我的理解在这里错了,请纠正我)

      1. 数学问题:通过创建模型激活的约束,可以降低模型的表达能力,而无需任何逻辑解释。在我看来,努力让所有激活都相同是不值得的。
      2. 请解释这里所说的内容

        1. 批量标准化:我理解这一点,这里没有问题

1 个答案:

答案 0 :(得分:2)

1/2。我认为你不知道作者试图说的是什么。想象一下有3个节点的图层。其中2个节点在输出错误方面的错误责任为0;所以有一个节点应该调整。因此,如果您想要改进节点0的输出,那么您会立即影响该层中的节点1和2 - 可能会使输出更加错误。

  

微调重量以使激活正确不是你的事,即使你能做到,你也不愿意这样做。 (如果我的理解在这里错了,请纠正我)

这是反向传播的定义。那是完全你想要的。神经网络依赖激活(非线性)来映射函数。

3。你基本上对每个神经元说'嘿,你的输出不能高于x,因为这一层中的其他一些神经元已经具有值y'。因为softmax层中的所有神经元都应该具有1的总激活,这意味着神经元不能高于特定值。对于小层 - 小问题,但对于大层 - 大问题。想象一下有100个神经元的层。现在想象他们的总输出应该是1。这些神经元的平均值为0.01 - >这意味着您正在依赖网络连接(因为激活将保持非常低,平均) - 因为其他激活函数输出(或接受输入)范围(0:1 / -1:1)。