Hey, thanks for these. I'll take the evening to read through them. It's the gradient descent calculation that I find to be convoluted. I understand the concept. But I haven't seen a clear example of how that's done. That's what I was trying to nail down with that output neuron example. And reading the encog-java source code wasn't any clearer either.
Thanks very much for the resources. Perhaps these docs will help. Tim Washington Interruptsoftware.ca On Mon, Oct 1, 2012 at 3:43 PM, Jim - FooBar(); <jimpil1...@gmail.com>wrote: > 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>wrote: > >> I've always found this page very good : >> >> http://www.doc.ic.ac.uk/~nd/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