Neural network 一个训练有素的人工神经网络如何拥有一组能够代表多个类别的权重?
在多项式分类中,我对所有非线性单元使用软最大激活函数,ANN对“k”个类有“k”个输出节点。输出层中存在的每个“k”输出节点都连接到前一层中的所有权重,类似于下图所示Neural network 一个训练有素的人工神经网络如何拥有一组能够代表多个类别的权重?,neural-network,classification,multinomial,Neural Network,Classification,Multinomial,在多项式分类中,我对所有非线性单元使用软最大激活函数,ANN对“k”个类有“k”个输出节点。输出层中存在的每个“k”输出节点都连接到前一层中的所有权重,类似于下图所示 因此,如果第一个输出节点打算拉动对其有利的权重,它将更改该层之前的所有权重,其他输出节点也将拉动,这通常与第一个输出节点拉动的方向相反。这更像是一场拔河比赛,只有一组砝码。那么,我们是否需要为每个输出类单独设置一组权重(包括每个层的每个节点的权重),或者存在不同形式的体系结构?如果我错了,请纠正我。每个节点都有其权重集。实现和公
因此,如果第一个输出节点打算拉动对其有利的权重,它将更改该层之前的所有权重,其他输出节点也将拉动,这通常与第一个输出节点拉动的方向相反。这更像是一场拔河比赛,只有一组砝码。那么,我们是否需要为每个输出类单独设置一组权重(包括每个层的每个节点的权重),或者存在不同形式的体系结构?如果我错了,请纠正我。每个节点都有其权重集。实现和公式通常使用矩阵乘法,这会让您忘记这样一个事实,即从概念上讲,每个节点都有自己的权重集,但它们确实有 每个节点返回一个值,该值被发送到下一层中的每个节点。因此,层
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^ - y = [-0.12 0.12 0.04 0.5]
您将使用增量-0.12
更新最顶端神经元的权重,使用0.12
更新第二个神经元的权重,依此类推
请注意,每个输出神经元的权重都会使用这些值进行更新:这些权重都会增加或减少,以接近正确的值(0
或1
)
现在,请注意,每个输出神经元的输出取决于隐藏神经元的输出。因此,您还必须更新这些。这些将使用每个输出神经元的增量进行更新(更新公式见第7页)。这就像在进行衍生品交易时应用链式规则一样
你是对的,对于一个给定的隐藏神经元,有一场“拔河比赛”正在进行,每个输出神经元的错误各自为政。但这是正常的,因为隐藏层必须学会满足所有输出神经元。这就是随机初始化权重和使用多个隐藏神经元的原因
输出层进行调整以给出最终答案,这是因为输出节点的权重彼此独立。隐藏层必须受到所有输出节点的影响,并且必须学会适应所有输出节点
y^ - y = [-0.12 0.12 0.04 0.5]