Hmmm...I am not sure I follow...
the error is simply (- target actual). Then you take the square of that
difference (2 reasons for that) and there you have the error per neuron
at the output layer. Then you simply add them up to get the entire
network's error. so far so good...
the tricky bit comes now when you need to find out how much the error
depends on the output, inputs and weights so you can feed that in to the
gradient descent formula via which the weights will be adjusted.
Basically gradient descent says this:
"the adjustment of each weight will be the negative of a constant theta
multiplied by the dependence of the previous weight on the error of the
network, which is the derivative of that error with respect to that weight."
so essentially you're only looking to find the derivative of E (total
error) with respect to Wij , but in order to find that you will need to know
* how much the error depends on the output
* how much the output depends on the activation (which depends on the
weights)
It is not straight forward to type formulas here but I've put a relevant
document that describes the procedure exactly and the encog book which i
cannot guarantee it goes that deep, in my public dropbox for you. the
link is :https://dl.dropbox.com/u/45723414/for_Tim.tar.gz ...I'll leave
it up until tomorrow...
hope that helps...
Jim
ps: the encog source did not help you?
On 01/10/12 19:41, Timothy Washington wrote:
Hey, thanks for responding. See responses inlined.
On Mon, Oct 1, 2012 at 4:24 AM, Jim - FooBar(); <jimpil1...@gmail.com
<mailto:jimpil1...@gmail.com>> wrote:
I've always found this page very good :
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html
<http://www.doc.ic.ac.uk/%7End/surprise_96/journal/vol4/cs11/report.html>
generally, the weight of a connection is adjusted by an amount
proportional to the product of an error signal δ, on the unit k
receiving the input and the output of the unit j sending this
signal along the connection. You use the chain rule to calculate
partial derivatives.
also this looks quite detailed with regards to what you're asking:
https://docs.google.com/viewer?a=v&q=cache:9ahoWLbap8AJ:www.cedar.buffalo.edu/~srihari/CSE574/Chap5/Chap5.3-BackProp.pdf+the+partial+derivative+of+the+error+neural+nets&hl=en&gl=uk&pid=bl&srcid=ADGEEShVr8tHNIryQDGp0jJ2xv6JM40Ja4UFbcr2-QDgU1tK4Di_4mUTVgWsHdjHphbS7MaHmSn8VwB3dEnAQz-w4J-iyF1VJFklvLoDY5fxJbGaHsU0mio7XQYmGom0_cd7aZkUzhq5&sig=AHIEtbTyaLysuBdK7Bn_-cMzE88tqOzlag
<https://docs.google.com/viewer?a=v&q=cache:9ahoWLbap8AJ:www.cedar.buffalo.edu/%7Esrihari/CSE574/Chap5/Chap5.3-BackProp.pdf+the+partial+derivative+of+the+error+neural+nets&hl=en&gl=uk&pid=bl&srcid=ADGEEShVr8tHNIryQDGp0jJ2xv6JM40Ja4UFbcr2-QDgU1tK4Di_4mUTVgWsHdjHphbS7MaHmSn8VwB3dEnAQz-w4J-iyF1VJFklvLoDY5fxJbGaHsU0mio7XQYmGom0_cd7aZkUzhq5&sig=AHIEtbTyaLysuBdK7Bn_-cMzE88tqOzlag>
Looking at page 9 of this document, I take the error derivative
calculation to be:
Thus required derivative */∂En/∂w ji/* is obtained by...
1. Multiplying value of δ ( for the unit at output end of weight )
2. by value of z ( for unit at input end of weight )
So take this output neuron and it's input weights. Let's say the total
neural network error is *-0.3963277746392987*. I just multiply that
total error by each weight, to get the bolded, green error values. So
what you're saying is that the error derivative */∂En/∂w ji /*( or
weight change) for each input is that same error value, below in
green. Is this the case?
: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"})
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient
with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en