我正在研究神经网络的实现,所以我可以真正掌握这些魔法盒的工作原理。但是,我为其编写代码的神经网络不起作用,我认为这是由于我实现了反向传播
[伪代码]
'last layer only
for each node (i) in last layer
error(i) = outputError(i)
end for
'all hidden/inner layers
for each layer (i) in layers (not including layer 0 or last)
for each neuron (j) in layer i
for each neuron (k) in layer i+1
error(i)(j) +=error(i+1)(k) * weight(i)(j,k)
end for
errors(i)(j) = errors(i)(j) * activation(i)(j) * (1-activation(i)(j))
for each neuron in layer i+1
deltaWeight(i)(j,k) = -error(i)(k)*activation(i)(k)*learningRate/NumExamples
deltaBias(i)(k) = -error(i)(k) * bias(i)(k)*learningRate/NumExample
end for
end for
end for
然后我用这个更新所有的权重:
weight(i)(j,k) = weight(i)(j,k) + deltaWeight(i)(j,k)
现在我遇到的问题是输出似乎没有变得更好。它肯定会改变,但似乎根本没有最小化成本函数,有人知道为什么吗?