This is a follow-on question from this post I made, "Multilayer Perceptron (Neural Network) for Time Series Prediction", a few months back.
I'm constructing a feed-forward artificial neural network, using resilient propagation training. At the moment, I'm trying to implement an individual neuron input's weight update algorithm. For the life of me, I can't seem to find a clear and straightforward answer on how to calculate the partial derivative of the error for a given weight. The only thing I can find on the web, is the fact that a neuron's weight update is a function of $\frac{dE}{dW}$ (cf. the original Paper [p. 2 & 3], or this one [p. 4]).
However none of these papers actually outlines how to calculate this.
I understand the concept of a partial derivative in a mathematical sense. And I assume that the current neuron input's weight change calculation is the operation at hand, while all other neuron input values are held constant.
So for each of these neurons below, I calculate each inputs' individual error by taking a total error ( -0.3963277746392987 ), that's been multiplied by that neuron input's weight (each :calculated-error is the sum of the individual inputs' error).
For both neurons, what would be the weight change for each input?
Here is my data structure:
:input-layer ({:calculated-error -1.0991814559154283, :calculated-value 0.9908633780805893, :inputs ({:error -0.07709937922001887, :calculated 0.4377023624017325, :key :avolume, :value 2.25, :weight 0.19453438328965889, :bias 0} {:error -0.19625185888745333, :calculated 1.4855269156904067, :key :bvolume, :value 3.0, :weight 0.4951756385634689, :bias 0} {:error -0.3072203938672436, :calculated 1.0261589301119642, :key :ask, :value 1.32379, :weight 0.7751674586693994, :bias 0} {:error -0.36920086975057054, :calculated 1.2332848282147972, :key :bid, :value 1.3239, :weight 0.9315543683169403, :bias 0} {:error -0.14940895419014188, :calculated 0.5036129016361643, :key :time, :value 1.335902400676, :weight 0.37698330460468044, :bias 0}), :id "583c10bfdbd326ba525bda5d13a0a894b947ffc"}, ...) :output-layer ({:calculated-error -1.1139741279964241, :calculated-value 0.9275622253607013, :inputs ({:error -0.2016795955938916, :calculated 0.48962608882549025, :input-id "583c10bfdbd326ba525bda5d13a0a894b947ffb", :weight 0.5088707087900713, :bias 0} {:error -0.15359996014735702, :calculated 0.3095962076691644, :input-id "583c10bfdbd326ba525bda5d13a0a894b947ffa", :weight 0.38755790024342773, :bias 0} {:error -0.11659507401745359 :calculated 0.23938733624830652, :input-id "583c10bfdbd326ba525bda5d13a0a894b947ff9", :weight 0.2941885012312543, :bias 0} {:error -0.2784739949663631, :calculated 0.6681581686752845, :input-id "583c10bfdbd326ba525bda5d13a0a894b947ff8", :weight 0.7026355778870271, :bias 0} {:error -0.36362550327135884, :calculated 0.8430641676611533, :input-id "583c10bfdbd326ba525bda5d13a0a894b947ff7", :weight 0.9174868039523537, :bias 0}), :id "583c10bfdbd326ba525bda5d13a0a894b947ff6"})
Thanks in advance