帮助使用 Sigmoid 激活的简单神经网络的反向传播方程

数据挖掘 神经网络
2022-02-28 11:27:55

我正在尝试创建一个具有 2 个输入神经元、1 个具有 3 个神经元的隐藏层和一个具有单个神经元的输出层的简单神经网络,并针对 XOR 问题对其进行训练。 网络结构根据我对神经网络的理解,我计划在每个神经元中都有一个输入的加权线性函数和一个 Sigmoid 激活函数。因此,例如,第一个输入神经元x将计算c=ax+ba作为参数并b作为其偏差。然后它将馈送 c到 Sigmoid 函数以计算z=1/(1+exp(-c))哪个将是它的输出。如果我在这方面有任何错误,请纠正我。

现在,我正在尝试按照这篇文章创建反向传播微分方程。它表示dc = z * (1-z) * dz其中 dz 是绿色边缘的梯度,然后da = x * dcda在此反向传播迭代中计算的梯度。

我的问题是有三个zs(一个对应于每个向外边缘),它们的值(重量)将是相同的(z=1/(1+exp(-c)))。我假设,那么隐藏层中三个神经元中的所有值和梯度也将相同。那么隐藏层中有三个神经元有什么意义呢?是什么导致随机性导致三个绿色边缘中的每一个都具有三个不同的梯度?如果它们实际上不同,我怎么能dc简单地计算出z * (1-z) * dz三个zs 和三个dzs 呢?

1个回答

梯度实际上是根据权重计算的,因此每个神经元根据其先前的权重会有不同的“权重变化”。换句话说,并非隐藏层中的所有 3 个神经元都会受到相同值的惩罚,因为这些神经元在 t=0 时的初始权重是不同的。

这里解释得很好:https ://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

我希望这个简短的答案有所帮助!