1

在多项式分类中,我对所有非线性单元使用 soft-max 激活函数,并且 ANN 具有“k”个类的“k”个输出节点。输出层中存在的每个“k”个输出节点都连接到前一层中的所有权重,有点像下图所示。

在此处输入图像描述

因此,如果第一个输出节点打算将权重拉到有利于它的位置,它将改变该层之前的所有权重,并且其他输出节点也会拉动,这通常与第一个输出节点拉动的方向相矛盾。这似乎更像是单组重量的拔河比赛。那么,我们是否需要为每个输出类提供一组单独的权重(包括每一层的每个节点的权重),或者是否存在不同形式的架构?如果我错了,请纠正我。

4

1 回答 1

1

每个节点都有其权重集。实现和公式通常使用矩阵乘法,这会让你忘记这样一个事实,即从概念上讲,每个节点都有自己的一组权重,但它们确实如此

每个节点返回一个值,该值被发送到下一层中的每个节点。因此,层上的节点h接收num(h - 1)输入,其中num(h - 1)是层中的节点数h - 1。让这些输入为x1, x2, ..., xk。然后神经元返回:

x1*w1 + x2*w2 + ... + xk*wk

或者这个函数。所以每个神经元都有自己的一组权重。

让我们考虑一下图像中的网络。假设我们有一些训练实例,最顶层的神经元应该输出1其他的0

所以我们的目标是:

y = [1 0 0 0]

我们的实际输出是(为简单起见,忽略 softmax):

y^ = [0.88 0.12 0.04 0.5]

所以它已经做得很好了,但我们仍然必须做反向传播来让它变得更好。

现在,我们的输出增量是:

y^ - y = [-0.12 0.12 0.04 0.5]

您将使用 delta 更新最顶层神经元的权重,使用 delta 更新-0.12第二个神经元的权重,0.12依此类推。

请注意,每个输出神经元的权重都会使用这些值进行更新:这些权重都会增加或减少以接近正确的值(01)。

现在,请注意每个输出神经元的输出取决于隐藏神经元的输出。所以你还必须更新这些。这些将使用每个输出神经元的增量进行更新(有关更新公式,请参见此处的第 7 页)。这就像在取导数时应用链式法则。

你是对的,对于给定的隐藏神经元,有一场“拔河”正在进行,每个输出神经元的错误都以自己的方式发展。但这是正常的,因为隐藏层必须学会满足所有输出神经元。这是随机初始化权重和使用多个隐藏神经元的原因。

它是适应给出最终答案的输出层,因为输出节点的权重彼此独立,所以它可以做到这一点。隐藏层必须受到所有输出节点的影响,并且必须学会适应所有输出节点。

于 2015-09-08T22:24:24.537 回答