home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / ai / neuraln / 3427 < prev    next >
Encoding:
Text File  |  1992-09-08  |  2.6 KB  |  69 lines

  1. Newsgroups: comp.ai.neural-nets
  2. Path: sparky!uunet!sequent!muncher.sequent.com!jjb
  3. From: jjb@sequent.com (Jeff Berkowitz)
  4. Subject: Summary of CUPS + new question
  5. Message-ID: <1992Sep9.061803.28712@sequent.com>
  6. Keywords: backprop implementation errors (?)
  7. Sender: usenet@sequent.com (usenet )
  8. Nntp-Posting-Host: eng3.sequent.com
  9. Organization: Sequent Computer Systems, Inc.
  10. Date: Wed, 9 Sep 92 06:18:03 GMT
  11. Lines: 56
  12.  
  13. Some weeks back I posted a request for real examples of the performance
  14. of back propogation simulators in "backprops/second."  Bill Armstrong
  15. at the University of Alberta, Canada pointed out in a posting that the
  16. accepted unit of measurement was CUPS.  He also pointed me at ALNs for
  17. use when performance was important.
  18.  
  19. However, I received no replies stating real-world performance.
  20.  
  21. Now, the question.  While I was trying to debug my backprop simulator,
  22. my wife discovered what appears to be a subtle difference between the
  23. precise description of backprop and several of the "C" implementations
  24. I've picked up via ftp.
  25.  
  26. In the "original" paper (Rumelhart, Hinton, Williams, "Learning
  27. Internal Representations by Error Propogation", 1986) the backward
  28. pass is described as follows:
  29.  
  30.     ...The first step is to compute delta for each of
  31.     the output units. [...] We can then compute the
  32.     weight changes for all connections that feed into
  33.     the final layer.  AFTER this is done, then compute
  34.     deltas for all units in the penultimate layer...[etc,
  35.     emphasis mine.]
  36.  
  37. Dayhoff, "Neural Network Architectures", p 67, is even more specific:
  38.  
  39.     Delta values are computed for the output layer...
  40.     its incoming weights are adjusted...delta values
  41.     are computed for the hidden layer.
  42.  
  43. I have found two implementations, however, in which the inner loops
  44. of the backprop do something like this:
  45.  
  46.     compute deltas for output layer;
  47.     for layer := prev(outout) downto input
  48.         for each element in layer
  49.         for each outgoing arc from element
  50.             (1) accumulate output * weight of arc
  51.             into this element's "error"
  52.             (2) adjust weight of arc.
  53.         done
  54.         use "error" to compute this node's delta.
  55.         done -- elements in layer
  56.     done -- layer
  57.  
  58. It appears to me that (1) and (2) are reversed in this pseudocode;
  59. as I read the description, I should change the weight FIRST as I back
  60. up, and then use the NEW value in the accumulated error.   At least
  61. the Dayhoff description pretty much states this in black and white.
  62.  
  63. Either I'm confused, or this is a very common implementation error.
  64. If it's an implementation error, can anybody suggest what its effect
  65. is?  I found this in programs that appear to have been used quite a
  66. bit.
  67. -- 
  68. Jeff Berkowitz, Sequent Computer Systems   jjb@sequent.com  uunet!sequent!jjb
  69.