home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume31 / backprop / part01 next >
Text File  |  1992-09-02  |  52KB  |  1,159 lines

  1. Newsgroups: comp.sources.misc
  2. From: drt@chinet.chi.il.us (Donald Tveter)
  3. Subject:  v31i129:  backprop - Fast Backpropagation, Part01/04
  4. Message-ID: <csm-v31i129=backprop.130027@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 412f11eddccad5739dd0a89dffa28abf
  6. Date: Wed, 2 Sep 1992 18:06:40 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: drt@chinet.chi.il.us (Donald Tveter)
  10. Posting-number: Volume 31, Issue 129
  11. Archive-name: backprop/part01
  12. Supersedes: backprop: Volume 28, Issue 63-66
  13. Environment: UNIX, DOS
  14.  
  15.    The programs described below were produced for my own use in studying
  16. back-propagation and for doing some examples that are found in my
  17. introduction to Artificial Intelligence textbook, The Basis of
  18. Artificial Intelligence, to be published by Computer Science Press.  (I
  19. hope some time before the sun burns out or before the Cubs win the World
  20. Series or before Congress balances the budget or ...  .) I have
  21. copyrighted these files but I hereby give permission to anyone to use
  22. them for experimentation, educational purposes or to redistribute them
  23. on a not for profit basis.  All others that want to use these programs
  24. for business or commercial purposes I will charge you a small fee.  You
  25. should contact me by mail at the address in the readme.
  26.  
  27. Changes/Additions vs. the February 1992 Version
  28.  
  29.    The programs now have the quickprop algorithm included with a few
  30. experimental modifications of this algorithm as well.
  31.  
  32. Also I would be interested in hearing from anyone with suggestions,
  33. bug reports and major successes or failures.  (Caution though:  email
  34. in and out of the whole Chicago area is often unreliable.  Also from
  35. time to time I get email and reply but the reply bounces.  If its
  36. really important include a physical mail address.)
  37.  
  38.    There are four simulators that can be constructed from the included
  39. files.  The program, rbp, does back-propagation using real weights and
  40. arithmetic.  The program, bp, does back-propagation using 16-bit integer
  41. weights, 16 and 32-bit integer arithmetic and some floating point
  42. arithmetic.  The program, sbp, uses 16-bit integer symmetric weights but
  43. only allows two-layer networks.  The program srbp does the same using
  44. real weights.  The purpose of sbp and srbp is to produce networks that
  45. can be used with the Boltzman machine relaxation algorithm (not
  46. included).
  47.  
  48.    In general the 16-bit integer programs are the most useful because
  49. they are the fastest.  Unfortunately, sometimes 16-bit integer weights
  50. don't have enough range or precision and then using the floating point
  51. versions may be necessary.  Many other speed-up techniques are included
  52. in these programs.
  53.  
  54. See the file readme for more information.
  55.  
  56. Dr. Donald R. Tveter
  57. 5228 N. Nashville Ave.
  58. Chicago, Illinois   60656
  59. USENET:  drt@chinet.chi.il.us
  60. ------
  61. #! /bin/sh
  62. # This is a shell archive.  Remove anything before this line, then unpack
  63. # it by saving it into a file and typing "sh file".  To overwrite existing
  64. # files, type "sh file -c".  You can also feed this as standard input via
  65. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  66. # will see the following message at the end:
  67. #        "End of archive 1 (of 4)."
  68. # Contents:  readme
  69. # Wrapped by drt@chinet on Mon Aug 24 08:57:28 1992
  70. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  71. if test -f 'readme' -a "${1}" != "-c" ; then 
  72.   echo shar: Will not clobber existing file \"'readme'\"
  73. else
  74. echo shar: Extracting \"'readme'\" \(46585 characters\)
  75. sed "s/^X//" >'readme' <<'END_OF_FILE'
  76. XFast Back-Propagation
  77. XCopyright (c) 1990, 1991, 1992 by Donald R. Tveter
  78. X
  79. X
  80. X1. Introduction
  81. X
  82. X   The programs described below were produced for my own use in studying
  83. Xback-propagation and for doing some examples that are found in my
  84. Xintroduction to Artificial Intelligence textbook, The Basis of
  85. XArtificial Intelligence, to be published by Computer Science Press.  (I
  86. Xhope some time before the sun burns out or before the Cubs win the World
  87. XSeries or before Congress balances the budget or ...  .) I have
  88. Xcopyrighted these files but I hereby give permission to anyone to use
  89. Xthem for experimentation, educational purposes or to redistribute them
  90. Xon a not for profit basis.  All others that want to use these programs
  91. Xfor business or commercial purposes I will charge you a small fee.  You
  92. Xshould contact me by mail at:
  93. X
  94. XDr. Donald R. Tveter
  95. X5228 N. Nashville Ave.
  96. XChicago, Illinois   60656
  97. XUSENET:  drt@chinet.chi.il.us
  98. X
  99. XAlso I would be interested in hearing from anyone with suggestions,
  100. Xbug reports and major successes or failures.  (Caution though:  email
  101. Xin and out of the whole Chicago area is often unreliable.  Also from
  102. Xtime to time I get email and reply but the reply bounces.  If its
  103. Xreally important include a physical mail address.)
  104. X
  105. X   Note:  this is use at your own risk software:  there is no guarantee
  106. Xthat it is bug-free.  Use of this software constitutes acceptance for
  107. Xuse in an as is condition.  There are no warranties with regard to this
  108. Xsoftware. In no event shall the author be liable for any damages
  109. Xwhatsoever arising out of or in connection with the use or performance
  110. Xof this software.
  111. X
  112. X   There are four simulators that can be constructed from the included
  113. Xfiles.  The program, rbp, does back-propagation using real weights and
  114. Xarithmetic.  The program, bp, does back-propagation using 16-bit integer
  115. Xweights, 16 and 32-bit integer arithmetic and some floating point
  116. Xarithmetic.  The program, sbp, uses 16-bit integer symmetric weights but
  117. Xonly allows two-layer networks.  The program srbp does the same using
  118. Xreal weights.  The purpose of sbp and srbp is to produce networks that
  119. Xcan be used with the Boltzman machine relaxation algorithm (not
  120. Xincluded).
  121. X
  122. X   In general the 16-bit integer programs are the most useful because
  123. Xthey are the fastest.  Unfortunately, sometimes 16-bit integer weights
  124. Xdon't have enough range or precision and then using the floating point
  125. Xversions may be necessary.  Many other speed-up techniques are included
  126. Xin these programs.
  127. X
  128. XChanges/Additions vs. the February 1992 Version
  129. X
  130. X   The programs now have the quickprop algorithm included with a few
  131. Xexperimental modifications of this algorithm as well.
  132. X
  133. X2. Making the Simulators
  134. X
  135. X   See the file, readme.mak.  (This file is getting too large for some
  136. Xmailers.)
  137. X
  138. X3. A Simple Example
  139. X
  140. X  Each version would normally be called with the name of a file to read
  141. Xcommands from, as in:
  142. X
  143. Xbp xor
  144. X
  145. XWhen no file name is specified bp will take commands from the keyboard
  146. X(UNIX stdin file).  After the data file is read commands are then taken
  147. Xfrom the keyboard.
  148. X
  149. X   The commands are one letter commands and most of them have optional
  150. Xparameters.  The `A', `B', `d' and `f' commands allow a number of
  151. Xsub-commands on a line.  The maximum length of any line is 256
  152. Xcharacters.  An `*' is a comment and it can be used to make the
  153. Xremainder of the line a comment.  Here is an example of a data file to
  154. Xdo the xor problem:
  155. X           
  156. X* input file for the xor problem
  157. X           
  158. Xm 2 1 1           * make a 2-1-1 network
  159. Xc 1 1 3 1         * add this extra connection
  160. Xc 1 2 3 1         * add this extra connection
  161. Xs 7               * seed the random number function
  162. Xk 0 1             * give the network random weights
  163. X
  164. Xn 4               * read four new patterns into memory
  165. X1 0 1
  166. X0 0 0
  167. X0 1 1
  168. X1 1 0
  169. X
  170. Xe 0.5             * set eta to 0.5 (and eta2 to 0.5)
  171. Xa 0.9             * set alpha to 0.9
  172. X
  173. XFirst in this example, the m command will make a network with 2 units
  174. Xin the input layer, 1 unit in the second layer and 1 unit in the third
  175. Xlayer.  The following c commands create extra connections from layer 1
  176. Xunit 1 to layer 3 unit 1 and from layer 1 unit 2 to layer 3 unit 1.  The
  177. X`s' command sets the seed for the random number function.  The `k'
  178. Xcommand then gives the network random weights.  The `k' command has
  179. Xanother use as well.  It can be used to try to kick a network out of a
  180. Xlocal minimum.  Here, the meaning of "k 0 1" is to examine all the
  181. Xweights in the network and for every weight equal to 0 (and they all
  182. Xstart out at 0), add in a random number between -1 and +1.  The `n'
  183. Xcommand specifies four new patterns to be read into memory.  With the
  184. X`n' command, any old patterns that may have been present are removed.
  185. XThere is also an `x' command that behaves like the `n' command, except
  186. Xthe `x' commands ADDS the extra patterns to the current training
  187. Xset.  The input pattern comes first followed by the output pattern.
  188. XThe statement, e 0.5, sets eta, the learning rate for the upper layer to
  189. X0.5 and eta2 for the lower layers to 0.5 as well.  The last line sets
  190. Xalpha, the momentum parameter, to 0.9.
  191. X
  192. X   After these commands are executed the following messages and prompt
  193. Xappears:
  194. X
  195. XFast Back-Propagation Copyright (c) 1990, 1991, 1992 by Donald R. Tveter
  196. Xtaking commands from stdin now
  197. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]?
  198. X
  199. XThe characters within the square brackets are a list of the possible
  200. Xcommands.  To run 100 iterations of back-propagation and print out the
  201. Xstatus of the learning every 20 iterations type "r 100 20" at the
  202. Xprompt:
  203. X
  204. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? r 100 20
  205. X
  206. XThis gives:
  207. Xrunning . . .
  208. X   20 iterations    0.00% right (0 right   4 wrong)   0.49927 error/unit
  209. X   40 iterations    0.00% right (0 right   4 wrong)   0.43188 error/unit
  210. X   60 iterations   75.00% right (3 right   1 wrong)   0.09033 error/unit
  211. X   62 iterations  100.00% right (4 right   0 wrong)   0.07129 error/unit
  212. Xpatterns learned to within 0.10 at iteration^G 62
  213. X
  214. XThe program immediately prints out the "running . . ." message.  After
  215. Xeach 20 iterations a summary of the learning process is printed giving
  216. Xthe percentage of patterns that are right, the number right and wrong
  217. Xand the average value of the absolute values of the errors of the output
  218. Xunits.  The program stops when the each output for each pattern has been
  219. Xlearned to within the required tolerance, in this case the default value
  220. Xof 0.1.  A ctrl-G is normally printed out as well to sound the bell.  If
  221. Xthe second number defining how often to print out a summary is omitted
  222. Xthe summaries will not be printed.  Sometimes the integer versions will
  223. Xdo a few extra iterations before declaring the problem done because of
  224. Xtruncation errors in the arithmetic done to check for convergence.  The
  225. Xstatus figures for iteration i are computed when making the forward pass
  226. Xof the iteration and before the weights are updated so these values are
  227. Xone iteration out of date.  This saves on CPU time, however, if you
  228. Xreally need up-do-date statistics use the u+ option described in the
  229. Xformat specifications.
  230. X
  231. XListing Patterns
  232. X
  233. X   To get a listing of the status of each pattern use the `P' command
  234. Xto give:
  235. X
  236. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? P
  237. X  1  0.90  (0.098) ok
  238. X  2  0.05  (0.052) ok
  239. X  3  0.94  (0.062) ok
  240. X  4  0.07  (0.074) ok
  241. X   62 iterations  100.00% right (4 right   0 wrong)   0.07129 error/unit
  242. X
  243. XThe numbers in parentheses give the sum of the absolute values of the
  244. Xoutput errors for each pattern.  An `ok' is given to every pattern that
  245. Xhas been learned to within the required tolerance.  To get the status of
  246. Xone pattern, say, the fourth pattern, type "P 4" to give:
  247. X
  248. X 0.07  (0.074) ok
  249. X
  250. XTo get a summary without the complete listing use "P 0".  To get the
  251. Xoutput targets for a given pattern, say pattern 3, use "O 3".
  252. X
  253. X   A particular test pattern can be input to the network with the `p'
  254. Xcommand, as in:
  255. X
  256. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? p 1 0
  257. X 0.90 
  258. X
  259. XExamining Weights
  260. X
  261. X   It is often interesting to see the values of some particular weights
  262. Xin the network.  To see a listing of all the weights in a network use
  263. Xthe save weights command described below and then cat the file weights,
  264. Xhowever, to see the weights leading into a particular node, say the node
  265. Xin row 2, node 1 use the w command as in:
  266. X
  267. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? w 2 1
  268. Xlayer unit  unit value     weight         input from unit
  269. X  1      1    1.00000     9.53516             9.53516
  270. X  1      2    0.00000    -8.40332             0.00000
  271. X  2      t    1.00000     4.13086             4.13086
  272. X                                      sum =  13.66602
  273. X
  274. XThis listing also gives data on how the current activation value of the
  275. Xnode is computed using the weights and the activations values of the
  276. Xnodes feeding into unit 1 of layer 2.  The `t' unit is the threshold
  277. Xunit.
  278. X
  279. XThe Help Command
  280. X
  281. X   To get a short description of any command, type `h' followed by the
  282. Xletter of the command.  Here, we type h h for help with help:
  283. X
  284. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? h h
  285. X
  286. Xh <letter> gives help for command <letter>.
  287. X
  288. XTo list the status of all the parameters in the program, use `?'.
  289. X
  290. XTo Quit the Program
  291. X
  292. X   Finally, to end the program, the `q' (for quit) command is entered:
  293. X
  294. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? q
  295. X
  296. X
  297. X4. The Format Command
  298. X
  299. X   There are several ways to input and output patterns, numbers and
  300. Xother values and there is one format command, `f', that is used to set
  301. Xthese options.  In the format command a number of options can be
  302. Xspecified on a single line as for example in:
  303. X
  304. Xf b+ ir oc s- wB
  305. X
  306. XInput Patterns
  307. X
  308. X   The programs are able to read pattern values in two different
  309. Xformats.  The default input format is the compressed format.  In it,
  310. Xeach value is one character and it is not necessary to have blanks
  311. Xbetween the characters.  For example, in compressed format the patterns
  312. Xfor xor could be written out in either of the following ways:
  313. X
  314. X101      10 1
  315. X000      00 0
  316. X011      01 1
  317. X110      11 0
  318. X
  319. XThe second example is preferable because it makes it easier to see the
  320. Xinput and the output patterns.  Compressed format can also be used to
  321. Xinput patterns with the `p' command.  In addition to using 1 and 0 as
  322. Xinput the character, `?' can be used.  This character is initially
  323. Xdefined to be 0.5, but it can be redefined using the Q command like so:
  324. X
  325. XQ -1
  326. X
  327. XThis sets the value of ?  to -1.  Other valid input characters are the
  328. Xletters, `h', `i', `j' and `k'.  The `h' stands for `hidden'.  Its
  329. Xmeaning in an input string is that the value at this point in the string
  330. Xshould be taken from the next unit in the second layer of the network.
  331. XThis notation is useful for specifying simple recurrent networks.
  332. XNaturally, `i', `j' and `k' stand for taking input values from the
  333. Xthird, fourth and fifth layers (if they exist).  A simple example of a
  334. Xrecurrent network is given later.
  335. X
  336. X   The other input format for numbers is real.  The number portion must
  337. Xstart with a digit (.35 is not allowed, but 0.35 is).  Exponential
  338. Xnotation is not allowed.  Real numbers have to be separated by a space.
  339. XThe `h', `i', `j', `k' and `?' characters are also allowed with real
  340. Xinput patterns.  To take input in the real format it is necessary to
  341. Xset the input format to be real using the `f' (format) command as in:
  342. X
  343. Xf ir
  344. X
  345. XTo change back to the compressed format use:
  346. X
  347. Xf ic
  348. X
  349. XOutput of Patterns
  350. X
  351. X   Output format is controlled with the `f' command as in:
  352. X
  353. Xf or
  354. Xf oc
  355. Xf oa
  356. X
  357. XThe first sets the output to real numbers.  The second sets the output
  358. Xto be compressed mode where the value printed will be a `1' when the
  359. Xunit value is greater than 1.0 - tolerance, a `^' when the value is
  360. Xabove 0.5 but less than 1.0 - tolerance, a `v' when the value is less
  361. Xthan 0.5 but greater than the tolerance.  Below the tolerance value a
  362. X`0' is printed.  The tolerance can be changed using the `t' command (not
  363. Xa part of the format command).  For example, to make all values greater
  364. Xthan 0.8 print as `1' and all values less than 0.2 print as `0' use:
  365. X
  366. Xt 0.2
  367. X
  368. XOf course this same tolerance value is also used to check to see if all
  369. Xthe patterns have converged.  The third output format is meant to give
  370. X"analog compressed" output.  In this format a `c' is printed when a
  371. Xvalue is close enough to its target value.  Otherwise, if the answer is
  372. Xclose to 1, a `1' is printed, if the answer is close to 0, a `0' is
  373. Xprinted, if the answer is above the target but not close to 1, a `^' is
  374. Xprinted and if the answer is below the target but not close to 0, a `v'
  375. Xis printed.  This output format is designed for problems where the
  376. Xoutput is a real number, as for instance, when the problem is to make a
  377. Xnetwork learn sin(x).
  378. X
  379. X   For the sake of convenience the output format (and only the output
  380. Xformat) can be set without using the `f' so that:
  381. X
  382. Xor
  383. X
  384. Xwill also make the output format real.
  385. X
  386. XBreaking up the Output Values
  387. X
  388. X   In the compressed formats the default is to print a blank after
  389. Xevery 10 values.  This can be altered using the `b' (for inserting
  390. Xbreaks) command.  The use for this command is to separate output values
  391. Xinto logical groups to make the output more readable.  For instance, you
  392. Xmay have 24 output units where it makes sense to insert blanks after the
  393. X4th, 7th and 19th positions.  To do this, specify:
  394. X
  395. Xb 4 7 19
  396. X
  397. XThen for example the output will look like:
  398. X
  399. X  1 10^0 10^ ^000v00000v0 01000 (0.17577)
  400. X  2 1010 01v 0^0000v00000 ^1000 (0.16341)
  401. X  3 0101 10^ 00^00v00000v 00001 (0.16887)
  402. X  4 0100 0^0 000^00000v00 00^00 (0.19880)
  403. X
  404. XThe `b' command allows up to 20 break positions to be specified.  The
  405. Xdefault output format is the real format with 10 numbers per line.  For
  406. Xthe output of real values the `b' command specifies when to print a
  407. Xcarriage return rather than when to print a blank.  (Note:  the `b'
  408. Xcommand is not part of the `f' command.)
  409. X
  410. XPattern Formats
  411. X
  412. X   There are two different types of problems that back-propagation can
  413. Xhandle, the general type of problem where every output unit can take on
  414. Xan arbitrary value and the classification type of problem where the goal
  415. Xis to turn on output unit i and turn off all the other output units when
  416. Xthe pattern is of class i.  The xor problem is an example of the general
  417. Xtype of problem.  For an example of a classification problem, suppose
  418. Xyou have a number of data points scattered about through two-dimensional
  419. Xspace and you have to classify the points as either class 1, class 2 or
  420. Xclass 3.  For a pattern of class 1 you can always set up the output:
  421. X"1 0 0", for class 2: "0 1 0" and for class 3: "0 0 1", however doing
  422. Xthe translation to bit patterns can be annoying so another notation can
  423. Xbe used.  Instead of specifying the bit patterns you can set the pattern
  424. Xformat option to classification (as opposed to the default value of
  425. Xgeneral) like so:
  426. X
  427. Xf pc
  428. X
  429. Xand then the program will read data in the form:
  430. X
  431. X   1.33   3.61   1   *  shorthand for 1 0 0
  432. X   0.42  -2.30   2   *  shorthand for 0 1 0
  433. X  -0.31   4.30   3   *  shorthand for 0 0 1
  434. X
  435. Xand translate it to the bit string form when the pattern is loaded onto
  436. Xthe output units.  To switch to the general form use "f pg".
  437. X
  438. X   In addition to controlling the input of data the p command within
  439. Xthe format command is used to control the output of patterns from a set
  440. Xof test patterns kept on a file.  If the format is either c or g then
  441. Xwhen the test set is run thru the network you will only get a summary of
  442. Xhow many patterns are correct.  If the format is either C or G you will
  443. Xget a listing of the output values for each pattern as well as the
  444. Xsummary.  When reading patterns, C works the same as c and G works the
  445. Xsame as g.
  446. X
  447. XControlling Summaries
  448. X
  449. X   When the program is learning patterns you can have it print out the
  450. Xstatus of the learning process at regular intervals.  The default is to
  451. Xprint out only a summary of how learning is going however you can also
  452. Xprint out the status of every pattern at regular intervals.  To get the
  453. Xwhole set of patterns use "f s-" to turn off the summary format and "f
  454. Xs+" to go back to summarizing.
  455. X
  456. XRinging the Bell
  457. X
  458. X   To ring the bell when the learning has been completed use "f b+" and
  459. Xto turn off the bell use "f b-".
  460. X
  461. XEchoing Input
  462. X
  463. X   When you are reading commands from a file it is often worthwhile to
  464. Xsee those commands echoed on the screen.  To do this, use "f e+" and to
  465. Xturn off the echoing, use "f e-".
  466. X
  467. XPaging
  468. X
  469. X   The program is set up to write 24 lines to the screen and then pause.
  470. XAt the pause the program prints out a ":" (as does the UNIX System V
  471. Xpager, pg).  At this point typing a carriage return will get you one
  472. Xmore page.  Typing a "q" followed by a carriage return will quit the
  473. Xprocess you're working on and give you another prompt.  So, if you're
  474. Xrunning for example the xor problem and you type, "r 100 1" you will run
  475. X24 iterations through the program, these will print out and then there
  476. Xwill be a pause.  Notice that the program will not be busy computing
  477. Xanything more during the pause.  To reset the number of lines written to
  478. Xthe screen to say, 12, use "f P 12".  Setting the value to 0 will drop
  479. Xthe paging altogether.
  480. X
  481. X   Note that the program will not be paging at all if you take a series
  482. Xof commands from the original data file or some other input file and the
  483. Xoutput produced by these commands is less than the page size.  That is
  484. Xto say, a new line count is started every time a new command is read and
  485. Xif the output of that command is less than the page size there won't be
  486. Xany paging.
  487. X
  488. XMaking a Copy of Your Session
  489. X
  490. X   To make a copy of what appears on the screen use "f c+" to start
  491. Xwriting to the file "copy" and "f c-" to stop writing to this file.
  492. XEnding the session automatically closes this file as well.
  493. X
  494. XUp-To-Date Statistics
  495. X
  496. X   During the ith pass thru the network the program will collect
  497. Xstatistics on how many patterns are correct and how much error there is
  498. Xoverall.  These numbers are gathered before the weights are updated and
  499. Xso the results listed for iteration i really show the situation after
  500. Xthe weight update for iteration i-1.  To complicate matters more the
  501. Xweight updates can be done continuously instead of after all the
  502. Xpatterns have been presented so the statistics you get here are skewed
  503. Xeven more.  If you want to have up-to-date statistics with either
  504. Xmethod use "f u+" and to go back to statistics that are out of date
  505. Xuse "f u-".  The penalty with "f u+" is that the program needs to do
  506. Xanother forward pass.  When using the continuous update method it is
  507. Xhighly advisable to use "f u+" at least when you get close to complete
  508. Xconvergence because the default method of checking may claim the
  509. Xlearning is finished when it isn't or it may continue training after the
  510. Xtolerances have been met.
  511. X
  512. X 5. Taking Training and Testing Patterns from Files
  513. X
  514. X   In the xor example given above the four patterns were part of the
  515. Xdata file and to read them in the following lines were used:
  516. X
  517. Xn 4
  518. X1 0 1
  519. X0 0 0
  520. X0 1 1
  521. X1 1 0
  522. X
  523. XHowever it is also convenient to take patterns from a file that
  524. Xcontains nothing but a list of patterns (and possibly comments).  To
  525. Xread a new set of patterns from some file, patterns, use:
  526. X
  527. Xn f patterns
  528. X
  529. XTo add an extra group of patterns to the current set you can use:
  530. X
  531. Xx f patterns
  532. X
  533. X   In addition to keeping a set of training patterns you can take
  534. Xtesting patterns from a file as well.  To specify the file you can
  535. Xinvoke the program with a second file name as in:
  536. X
  537. Xbp xor xtest
  538. X
  539. XIn addition, if you do the following:
  540. X
  541. Xt f xtest
  542. X
  543. Xthe program will set xtest as the test file and immediately do the
  544. Xtesting.  Once the file has been defined you can test the patterns on
  545. Xthe test file by "t f" or just "t".  (This leaves the t command doing
  546. Xdouble duty since "t <real>" will set the tolerance to <real>.) Also in
  547. Xaddition, the test file can be set without being tested by using
  548. X
  549. XB t f xtest
  550. X
  551. Xas explained in the benchmarking section.
  552. X
  553. X
  554. X6. Saving and Restoring Weights and Related Values
  555. X
  556. X   Sometimes the amount of time and effort needed to produce a set of
  557. Xweights to solve a problem is so great that it is more convenient to
  558. Xsave the weights rather than constantly recalculate them.  Weights can
  559. Xbe saved as real values in an ASCII format (the default) or as binary
  560. Xto save space.  The old way to save the weights (which still works) is
  561. Xto enter the command, "S".  The weights are then written on a file
  562. Xcalled "weights" or to the last file name you have specified, if you're
  563. Xusing the new version of the command.  The following file comes from the
  564. Xxor problem:
  565. X
  566. X62r   file = ../xor3
  567. X    9.5351562500
  568. X   -8.4033203125
  569. X    4.1308593750
  570. X    5.5800781250
  571. X   -4.9755859375
  572. X  -11.3095703125
  573. X    8.0527343750
  574. X
  575. XTo write the weights the program starts with the second layer, writes
  576. Xout the weights leading into these units in order with the threshold
  577. Xweight last, then it moves on to the third layer, and so on.  To
  578. Xrestore these weights type an `R' for restore.  At this time the
  579. Xprogram reads the header line and sets the total number of iterations
  580. Xthe program has gone through to be the first number it finds on the
  581. Xheader line.  It then reads the character immediately after the number.
  582. XThe `r' indicates that the weights will be real numbers represented as
  583. Xcharacter strings.  If the weights were binary the character would be a
  584. X`b' rather than an `r'.  Also, if the character is `b', the next
  585. Xcharacter is read.  This next character indicates how many bytes are
  586. Xused per value.  The integer versions bp and sbp write files with 2
  587. Xbytes per weight while the real versions rbp and srbp write files with
  588. X8 bytes per weight for double precision reals and 4 bytes per weight for
  589. Xsingle precision reals.  With this notation weight files written by one
  590. Xprogram can be read by the other.  A binary weight format is specified
  591. Xwithin the `f' command by using "f wb".  A real format is specified by
  592. Xusing "f wr".  If your program specifies that weights should be written
  593. Xin one format but the weight file you read from is different a notice
  594. Xwill be given.  There is no check made to see if the number of weights
  595. Xon the file equals the number of weights in the network.
  596. X
  597. X   The above formats specify that only weights are written out and this
  598. Xis all you need once the patterns have converged.  However, if you're
  599. Xstill training the network and want to break off training and pick up
  600. Xthe training from exactly the same point later on you need to save the
  601. Xold weight changes when using momentum and the parameters for the
  602. Xdelta-bar-delta method if you are using this technique.  To save these
  603. Xextra parameters on the weights file use "f wR" to write the extra
  604. Xvalues as real and "f wB" to write the extra values as binary.
  605. X
  606. X   In the above example the command, S, was used to save the weights
  607. Ximmediately.  Another alternative is to save weights at regular
  608. Xintervals.  The command, S 100, will automatically save weights every
  609. X100 iterations the program does.  The default rate at which to save
  610. Xweights is set at 32767 for 16-bit compilers and 2147483647 for 32-bit
  611. Xcompilers which generally means that no weights will ever be saved.
  612. X
  613. X   To save weights to a file other than "weights" you can say:
  614. X"s w <filename>", where, of course, <filename> is the file you want to
  615. Xsave to.  To continue saving to the same file you can just do "s w".
  616. XNaturally if you restore weights it will be from this current weights
  617. Xfile as well.  You can restore weights from another file by using:
  618. X"r w <filename>".  Of course this also sets the name of the file to
  619. Xwrite to so if you're not careful you could lose your original weights
  620. Xfile.
  621. X
  622. X7. Initializing Weights and Giving the Network a `Kick'
  623. X
  624. X   All the weights in the network initially start out at 0.  In
  625. Xsymmetric networks then no learning may result because error signals
  626. Xcancel themselves out.  Even in non-symmetric networks the training
  627. Xprocess will usually converge faster if the weights start out at small
  628. Xrandom values.  To do this the `k' command will take the network and
  629. Xalter the weights in the following ways.  Suppose the command given is:
  630. X
  631. Xk 0 0.5
  632. X
  633. XNow if a weight is exactly 0, then the weight will be changed to a
  634. Xrandom value between +0.5 and -0.5.  The above command can therefore be
  635. Xused to initialize the weights in the network.  A more complex use of
  636. Xthe `k' command is to decrease the magnitude of large weights in the
  637. Xnetwork by a certain random amount.  For instance in the following
  638. Xcommand:
  639. X
  640. Xk 2 8
  641. X
  642. Xall the weights in the network that are greater than or equal to 2 will
  643. Xbe decreased by a random number between 0 and 8.  Weights less than or
  644. Xequal to -2 will be increased by a random number between 0 and 8.  The
  645. Xseed to the random number generator can be changed using the `s' command
  646. Xas in "s 7".  The integer parameter in the `s' command is of type,
  647. Xunsigned.
  648. X
  649. X   Another method of giving a network a kick is to add hidden layer
  650. Xunits.  The command:
  651. X
  652. XH 2 0.5
  653. X
  654. Xadds one unit to layer 2 of the network and all the weights that are
  655. Xcreated are initialized to between - 0.5 and + 0.5.
  656. X
  657. X   The subject of kicking a back-propagation network out of local minima
  658. Xhas barely been studied and there is no guarantee that the above methods
  659. Xare very useful in general.
  660. X
  661. X8. Setting the Algorithm to Use
  662. X
  663. X   A number of different variations on the original back-propagation
  664. Xalgorithm have been proposed in order to speed up convergence and some
  665. Xof these have been built into these simulators.  These options are set
  666. Xusing the `A' command and a number of options can go on the one line.
  667. X
  668. XActivation Functions
  669. X
  670. X   To set the activation function use:
  671. X
  672. XA al * for the linear activation function
  673. XA ap * for the piece-wise activation function
  674. XA as * for the smooth activation function
  675. XA at * for the piecewise near-tanh function that runs from -1 to +1
  676. XA aT * for the continuous near-tanh function that runs from -1 to +1
  677. X
  678. XWhen using the linear activation function it is only appropriate to use
  679. Xthe differential step-size derivative and a two-layer network.  The
  680. Xsmooth activation function is:
  681. X
  682. Xf = 1.0 / (1.0 + exp(-x))
  683. X
  684. Xwhere x is the input to a unit.  The piece-wise function is an
  685. Xapproximation to the function, f and it will normally save some CPU
  686. Xtime even though it may increase the number of iterations you need to
  687. Xsolve the problem.  The continuous near-tanh function is 2f - 1 and the
  688. Xpiece-wise version approximates this function with a series of straight
  689. Xlines.
  690. X
  691. XSharpness (or Gain)
  692. X
  693. X   The sharpness (or gain) is the parameter, D, in the function:
  694. X
  695. X1.0 / (1.0 + exp(-D*x)).
  696. X
  697. XA sharper sigmoid shaped activation function (larger D) will produce
  698. Xfaster convergence (see "Speeding Up Back Propagation" by Yoshio Izui
  699. Xand Alex Pentland in the Proceedings of IJCNN-90-WASH-DC, Lawrence
  700. XErlbaum Associates, 1990).  To set this parameter to say, 8, use
  701. X"A D 8".  The default value is 1.  Unfortunately, too large a value
  702. Xfor D will hurt convergence so this is not a perfect solution to
  703. Xspeeding up learning.  Sometimes the best value for D may be less than
  704. X1.0.  A larger D is also useful in the integer version of
  705. Xback-propagation where the weights are limited to between -32 and
  706. X+31.999.  A larger D value in effect magnifies the weights and makes it
  707. Xpossible for the weights to stay smaller.  Values of D less than one may
  708. Xbe useful in extracting a network from a local minima (see "Handwritten
  709. XNumeral Recognition by Multi-layered Neural Network with Improved
  710. XLearning Algorithm" by Yamada, Kami, Temma and Tsukumo in Proceedings of
  711. Xthe 1989 IJCNN, IEEE Press).  A smaller value of D will also force the
  712. Xweights and the weight changes to be larger and this may be of value
  713. Xwhen the weight changes become less than the weight resolution of 0.001
  714. Xin the integer version.
  715. X
  716. XThe Derivatives
  717. X
  718. X   The correct derivative for the standard activation function is s(1-s)
  719. Xwhere s is the activation value of a unit however when s is near 0 or 1
  720. Xthis term will give only very small weight changes during the learning
  721. Xprocess.  To counter this problem Fahlman proposed the following one
  722. Xfor the output layer:
  723. X
  724. X0.1 + s(1-s)
  725. X
  726. X(For the original description of this method see "Faster Learning
  727. XVariations of Back-Propagation:  An Empirical Study", by Scott E.
  728. XFahlman, in Proceedings of the 1988 Connectionist Models Summer School,
  729. XMorgan Kaufmann, 1989.)  Besides Fahlman's derivative and the original
  730. Xone the differential step size method (see "Stepsize Variation Methods
  731. Xfor Accelerating the Back-Propagation Algorithm", by Chen and Mars, in
  732. XIJCNN-90-WASH-DC, Lawrence Erlbaum, 1990) takes the derivative to be 1
  733. Xin the layer going into the output units and uses the correct derivative
  734. Xterm for all other layers.  The learning rate for the inner layers is
  735. Xnormally set to some smaller value.  To set a value for eta2 give two
  736. Xvalues in the `e' command as in:
  737. X
  738. Xe 0.1 0.01
  739. X
  740. XTo set the derivative use the `A' command as in:
  741. X
  742. XA dd   * use the differential step size derivative (default)
  743. XA dF   * use Fahlman's derivative in only the output layer
  744. XA df   * use Fahlman's derivative in all layers
  745. XA do   * use the original, correct derivative
  746. X
  747. XUpdate Methods
  748. X
  749. X   The choices are the periodic (batch) method, the continuous (online)
  750. Xmethod, delta-bar-delta and quickprop.  The following commands set the
  751. Xupdate methods:
  752. X
  753. XA uc   * for the continuous update method
  754. XA ud   * for the delta-bar-delta method
  755. XA up   * for the original periodic update method (default)
  756. XA uq   * for the quickprop algorithm
  757. X
  758. XThe delta-bar-delta method uses a number of special parameters and these
  759. Xare set using the `d' command.  Delta-bar-delta can be used with any of
  760. Xthe derivatives and the algorithm will find its own value of eta for
  761. Xeach weight.
  762. X
  763. XOther Algorithm Options
  764. X
  765. X   The `b' command controls whether or not to backpropagate error for
  766. Xunits that have learned their response to within a given tolerance.  The
  767. Xdefault is to always backpropagate error.  The advantage to not
  768. Xbackpropagating error is that this can save computer time.  This
  769. Xparameter can be set like so:
  770. X
  771. XA b+   * always backpropagate error
  772. XA b-   * don't backpropagate error when close
  773. X
  774. X   The `s' sub-command will set the number of times to skip a pattern
  775. Xwhen the pattern has been learned to within the desired tolerance.  To
  776. Xskip 3 iterations, use "A s 3", to reset to not skip any patterns
  777. Xuse "A s 0".
  778. X
  779. X   The `t' sub-command will take the given pattern (only one at a
  780. Xtime) out of the training set so that you can then train the other
  781. Xpatterns and test the network's response to this one pattern that was
  782. Xremoved.  To test pattern 3 use "A t 3" and to reset to use all the
  783. Xpatterns use "A t 0".
  784. X
  785. X
  786. X9. The Delta-Bar-Delta Method
  787. X
  788. X   The delta-bar-delta method attempts to find a learning rate, eta, for
  789. Xeach individual weight.  The parameters are the initial value for the
  790. Xetas, the amount by which to increase an eta that seems to be too small,
  791. Xthe rate at which to decrease an eta that is too large, a maximum value
  792. Xfor each eta and a parameter used in keeping a running average of the
  793. Xslopes.  Here are examples of setting these parameters:
  794. X
  795. Xd d 0.5    * sets the decay rate to 0.5
  796. Xd e 0.1    * sets the initial etas to 0.1
  797. Xd k 0.25   * sets the amount to increase etas by (kappa) to 0.25
  798. Xd m 10     * sets the maximum eta to 10
  799. Xd n 0.005  * an experimental noise parameter
  800. Xd t 0.7    * sets the history parameter, theta, to 0.7
  801. X
  802. XThese settings can all be placed on one line:
  803. X
  804. Xd d 0.5  e 0.1  k 0.25  m 10  t 0.7
  805. X
  806. XThe version implemented here does not use momentum.  The symmetric
  807. Xversions sbp and srbp do not implement delta-bar-delta.
  808. X
  809. X   The idea behind the delta-bar-delta method is to let the program find
  810. Xits own learning rate for each weight.  The `e' sub-command sets the
  811. Xinitial value for each of these learning rates.  When the program sees
  812. Xthat the slope of the error surface averages out to be in the same
  813. Xdirection for several iterations for a particular weight the program
  814. Xincreases the eta value by an amount, kappa, given by the `k' parameter.
  815. XThe network will then move down this slope faster.  When the program
  816. Xfinds the slope changes signs the assumption is that the program has
  817. Xstepped over to the other side of the minimum and so it cuts down the
  818. Xlearning rate by the decay factor given by the `d' parameter.  For
  819. Xinstance, a d value of 0.5 cuts the learning rate for the weight in
  820. Xhalf.  The `m' parameter specifies the maximum allowable value for an
  821. Xeta.  The `t' parameter (theta) is used to compute a running average of
  822. Xthe slope of the weight and must be in the range 0 <= t < 1.  The
  823. Xrunning average at iteration i, a[i], is defined as:
  824. X
  825. Xa[i] = (1 - t) * slope[i] + t * a[i-1],
  826. X
  827. Xso small values for t make the most recent slope more important than the
  828. Xprevious average of the slope.  Determining the learning rate for
  829. Xback-propagation automatically is, of course, very desirable and this
  830. Xmethod often speeds up convergence by quite a lot.  Unfortunately, bad
  831. Xchoices for the delta-bar-delta parameters give bad results and a lot of
  832. Xexperimentation may be necessary.  If you have n patterns in the
  833. Xtraining set try starting e and k around 1/n.  The n parameter is an
  834. Xexperimental noise term that is only used in the integer version.  It
  835. Xchanges a weight in the wrong direction by the amount indicated when the
  836. Xprevious weight change was 0 and the new weight change would be 0 and
  837. Xthe slope is non-zero.  (I found this to be effective in an integer
  838. Xversion of quickprop so I tossed it into delta-bar-delta as well.  If
  839. Xyou find this helps please let me know.)  For more on delta-bar-delta
  840. Xsee "Increased Rates of Convergence" by Robert A. Jacobs, in Neural
  841. XNetworks, Volume 1, Number 4, 1988.
  842. X
  843. X10. Quickprop
  844. X
  845. X    Quickprop (see "Faster-Learning Variations on Back-Propagation: An
  846. XEmpirical Study", by Scott E. Fahlman, in Proceedings of the 1988
  847. XConnectionist Models Summer School", Morgan Kaufmann, 1989.) is similar
  848. Xto delta-bar-delta in that the algorithm attempts to increase the size
  849. Xof a weight change for each weight while the process continues to go
  850. Xdownhill in terms of error.  The main acceleration technique is to make
  851. Xthe next weight change mu times the previous weight change.  Fahlman
  852. Xsuggests mu = 1.75 is generally quite good so this is the initial value
  853. Xfor mu but slightly larger or slightly smaller values are sometimes
  854. Xbetter.  In addition when this is done Fahlman also adds in a value,
  855. Xeta times the current slope, in the traditional backprop fashion.  I had
  856. Xto wonder if this was a good idea so in this code I've included a
  857. Xcapability to add it in or not add it in.  So far it seems to me that
  858. Xsometimes adding in this extra term helps and sometimes it doesn't.  The
  859. Xdefault is to always use the extra term.
  860. X
  861. X   A second key property of quickprop is that when a weight change
  862. Xchanges the slope of the error curve from positive to negative or
  863. Xvice-versa, quickprop attempts to jump to the minimum by assuming the
  864. Xcurve is a parabola.
  865. X
  866. X   A third factor involved in quickprop comes about from the fact that
  867. Xthe weights often grow very large very quickly.  To minimize this
  868. Xproblem there is a decay factor designed to keep the weights small.
  869. XFahlman does not mention a value for this parameter but I usually try
  870. X0.0001 to 0.00001.  I've found that too large a decay factor can stall
  871. Xout the learning process so that if your network isn't learning fast
  872. Xenough or isn't learning at all one possible fix is to decrease the
  873. Xdecay factor.  The small values you need present a problem for the
  874. Xinteger version since the smallest value you can represent is about
  875. X0.001.  To get around this problem the decay value you input should be
  876. X1000 times larger than the value you intend to use.  So to get 0.0001,
  877. Xinput 0.1, to get 0.00001, input 0.01, etc.  The code has been written
  878. Xso that the factor of 1000 is taken into account during the calculations
  879. Xinvolving the decay factor.  To keep the values consistent both the
  880. Xinteger and floating point versions use this convention.  If you use
  881. Xquickprop elsewhere you need to take this factor of 1000 into account.
  882. XThe default value for the decay factor is 0.1 (=0.0001).
  883. X
  884. X   I built in one additional feature for the integer version.  I found
  885. Xthat by adding small amounts of noise the time to convergence can be
  886. Xbrought down and the number of failures can be decreased somewhat.  This
  887. Xseems to be especially true when the weight changes get very small.  The
  888. Xnoise consists of moving uphill in terms of error by a small amount when
  889. Xthe previous weight change was zero.  Good values for the noise seem to
  890. Xbe around 0.005.
  891. X
  892. X   The parameters for quickprop are all set in the `qp' command like
  893. Xso:
  894. X
  895. Xqp d 0.1  * the default decay factor
  896. Xqp e 0.5  * the default value for eta
  897. Xqp m 1.75 * the default value for mu
  898. Xqp n 0    * the default value for noise
  899. Xqp s+     * always include the slope
  900. X
  901. Xor a whole series can go on one line:
  902. X
  903. Xqp d 0.1 e 0.5 m 1.75 n 0 s+
  904. X
  905. X
  906. X11. Recurrent Networks
  907. X
  908. X   Recurrent back-propagation networks take values from higher level
  909. Xunits and use them as activation values for lower level units.  This
  910. Xgives a network a simple kind of short-term memory, possibly a little
  911. Xlike human short-term memory.  For instance, suppose you want a network
  912. Xto memorize the two short sequences, "acb" and "bcd".  In the middle of
  913. Xboth of these sequences is the letter, "c".  In the first case you want
  914. Xa network to take in "a" and output "c", then take in "c" and output
  915. X"b".  In the second case you want a network to take in "b" and output
  916. X"c", then take in "c" and output "d".  To do this a network needs a
  917. Xsimple memory of what came before the "c".
  918. X
  919. X   Let the network be an 7-3-4 network where input units 1-4 and output
  920. Xunits 1-4 stand for the letters a-d.  Furthermore, let there be 3 hidden
  921. Xlayer units.  The hidden units will feed their values back down to the
  922. Xinput units 5-7 where they become input for the next step.  To see why
  923. Xthis works, suppose the patterns have been learned by the network.
  924. XInputting the "a" from the first string produces some random pattern of
  925. Xactivation, p1, on the hidden layer units and "c" on the output units.
  926. XThe pattern p1 is copied down to units 5-7 of the input layer.  Second,
  927. Xthe letter, "c" is presented to the network together with p1 now on
  928. Xunits 5-7.  This will give "b" on the output units.  However, if the "b"
  929. Xfrom the second string is presented first there will be a different
  930. Xrandom pattern, p2, on the hidden layer units.  These values are copied
  931. Xdown to input units 5-7.  These values combine with the "c" to produce
  932. Xthe output, "d".
  933. X
  934. X   The training patterns for the network can be:
  935. X
  936. X     1000 000   0010  * "a" prompts the output, "c"
  937. X     0010 hhh   0100  * inputting "c" should produce "b"
  938. X
  939. X     0100 000   0010  * "b" prompts the output, "c"
  940. X     0010 hhh   0001  * inputting "c" should produce "d"
  941. X
  942. Xwhere the first four values on each line are the normal input, the
  943. Xmiddle three either start out all zeros or take their values from the
  944. Xprevious values of the hidden units.  The code for taking these values
  945. Xfrom the hidden layer units is "h".  The last set of values represents
  946. Xthe output that should be produced.  To take values from the third layer
  947. Xof a network, the code is "i".  For the fourth and fifth layers (if they
  948. Xexist) the codes are "j" and "k".  Training recurrent networks can take
  949. Xmuch longer than training standard networks and the average error can
  950. Xjump up and down quite a lot.
  951. X
  952. X
  953. X12. The Benchmarking Command
  954. X
  955. X   The main purpose of the benchmarking command is to make it possible
  956. Xto run a number of tests of a problem with different initial weights and
  957. Xaverage the number of iterations and CPU time for networks that
  958. Xconverged.  A second purpose is to run a training set thru the network a
  959. Xnumber of times and for each try a test pattern or a test set can be
  960. Xchecked at regular intervals.
  961. X
  962. X   A typical command to simply test the current parameters on a number
  963. Xof networks is:
  964. X
  965. XB g 5 m 15 k 1 r 1000 200
  966. X
  967. XThe "g 5" specifies that you'd like to set the goal of getting 5
  968. Xnetworks to converge but the "m 15" sets a maximum of 15 tries to
  969. Xreach this goal.  The k specifies that each initial network will get
  970. Xa kick by setting each weight to a random number between -1 and 1.
  971. XThe "r 1000 200" portion specifies that you should run up to 1000
  972. Xiterations on a network and print the status of learning every 200
  973. Xiterations.  This follows the normal run command and the second
  974. Xparameter defining how often to print the statistics can be omitted.
  975. XFor example, here is some output from benchmarking with the xor problem:
  976. X
  977. X[?!*AaBbCcdefHhiklmnOoPpQqRrSstWwx]? B g 5 m 5 k 1 r 200
  978. X seed =      7; running . . .
  979. Xpatterns learned to within 0.10 at iteration 62
  980. X seed =      7; running . . .
  981. X seed =      7; running . . .
  982. Xpatterns learned to within 0.10 at iteration 54
  983. X seed =      7; running . . .
  984. Xpatterns learned to within 0.10 at iteration 39
  985. X seed =      7; running . . .
  986. Xpatterns learned to within 0.10 at iteration 44
  987. X1 failures; 4 successes; average = 49.750000     0.333320 sec/network
  988. X
  989. XThe time/network includes however much time is used to print messages so
  990. Xto time the process effectively all printing should be minimized.  When
  991. Xthe timing is done on a UNIX PC the time returned by clock will overflow
  992. Xafter 2147 seconds or about 36 minutes.  If you system has the same
  993. Xlimitation take care that ALL of the benchmarking you do in a single
  994. Xcall of the program adds up to less than 36 minutes.
  995. X
  996. X   In the above example the seed that was used to set the random values
  997. Xfor the weights was set to 7 (outside the benchmarking command) however
  998. Xif you set a number of seeds as in:
  999. X
  1000. Xs 3 5 7 18484 99
  1001. X
  1002. Xthe seeds will be taken in order for each network.  When there are more
  1003. Xnetworks to try than there are seeds the random values keep coming from
  1004. Xthe last seed value so actually you can get by using a single seed.
  1005. XThe idea behind allowing multiple seeds is so that if one network does
  1006. Xsomething interesting you can use that seed to run a network with the
  1007. Xsame initial weights outside of the benchmarking command.
  1008. X
  1009. X   Once the benchmarking parameters have been set it is only necessary
  1010. Xto include the run portion in order to start the benchmarking process
  1011. Xagain, thus, "B r 200" will run benchmarking again using the current set
  1012. Xof parameters.  Also, the parameters can be set without starting the
  1013. Xbenchmarking process by just not including the `r' parameters in the B
  1014. Xcommand as in:
  1015. X
  1016. XB g 5 m 5 k 1
  1017. X
  1018. X   In addition to getting data on convergence you can have the program
  1019. Xrun test patterns thru the network at the print statistics rate given
  1020. Xin the `r' sub-command.  To specify the test file, test100, use:
  1021. X
  1022. XB t f test100
  1023. X
  1024. XTo run the training data thru for up to 1000 iterations and test every
  1025. X200 iterations use:
  1026. X
  1027. XB r 1000 200
  1028. X
  1029. XIf the pattern format specification p is set to either c or g you will
  1030. Xget a summary of the patterns on the test file.  If p is either C or G
  1031. Xyou will get the results for each pattern listed as well as the summary.
  1032. XTo stop testing the data on the data file use "B t 0".
  1033. X
  1034. X   Sometimes you may have so little data available that it is difficult
  1035. Xto separate the patterns into a training set and a test set.  One
  1036. Xsolution is to remove each pattern from the training set, train the
  1037. Xnetwork on the remaining patterns and then test the network on the
  1038. Xpattern that was removed.  To remove a pattern, say pattern 1 from the
  1039. Xtraining set use:
  1040. X
  1041. XB t 1
  1042. X
  1043. XTo systematically remove each pattern from the training set use a data
  1044. Xfile with the following commands:
  1045. X
  1046. XB t 1 r 200 50
  1047. XB t 2 r 200 50
  1048. XB t 3 r 200 50
  1049. X ... etc.
  1050. X
  1051. Xand the pattern will be tested every 50 iterations.  If, in the course
  1052. Xof training the network, all the patterns converge, the program will
  1053. Xprint out a line starting with a capital S followed by a test of the
  1054. Xtest pattern.  If the programs hits the point where statistics on the
  1055. Xlearning process have to be printed and the network has not converged
  1056. Xthen a capital F will print out followed by a test of the test pattern.
  1057. XTo stop this testing use "B t 0".
  1058. X
  1059. X   It would be nice to have the program average up and tabulate all the
  1060. Xdata that comes out of the benchmarking command but I thought I'd leave
  1061. Xthat to users for now.  You can use the record command to save the
  1062. Xoutput from the entire session and then run it thru some other program,
  1063. Xsuch as an awk program in order to sort everything out.
  1064. X
  1065. X
  1066. X13. Miscellaneous Commands
  1067. X
  1068. X   Below is a list of some miscellaneous commands, a short example of
  1069. Xeach and a short description of the command.
  1070. X
  1071. X
  1072. X!   Example: ! ls
  1073. X
  1074. XAnything after `!' will be passed on to the OS as a command to execute.
  1075. X
  1076. X
  1077. XC   Example: C
  1078. X
  1079. XThe C command will clear the network of values, reset the number of
  1080. Xiterations to 0 and reset other values so that another run can be made.
  1081. XThe seed value is reset so you can run the same network over with the
  1082. Xsame initial weights but with different learning parameters.  Even
  1083. Xthough the seed is reset the weights are not initialized so you
  1084. Xmust do this step after clearing the network.
  1085. X
  1086. X
  1087. Xi   Example: i f
  1088. X
  1089. XEntering "i f" will read commands from the file, f.  When there are no
  1090. Xmore commands on the file the program resumes reading from the previous
  1091. Xfile being used.  You can also have an `i' command within the file f,
  1092. Xhowever the depth to which you can nest the number of active files is 4
  1093. Xand stdin itself counts as the first one.  Once an input file has been
  1094. Xspecified you can simply type "i" to read from the file again.
  1095. X
  1096. X
  1097. Xl   Example: l 2
  1098. X
  1099. XEntering "l 2" will print the values of the units on layer 2, or
  1100. Xwhatever layer is specified.
  1101. X
  1102. X
  1103. XT   Example: T -3
  1104. X
  1105. XIn sbp and srbp only, "T -3" sets all the threshold weights to -3 or
  1106. Xwhatever value is specified and freezes them at this value.
  1107. X
  1108. X
  1109. XW   Example: W 0.9
  1110. X
  1111. XEntering "W 0.9" will remove (whittle away) all the weights with
  1112. Xabsolute values less than 0.9.
  1113. X
  1114. XIn addition, under UNIX when a user generated interrupt occurs (by
  1115. Xtyping DEL) the program will drop its current task and take the next
  1116. Xcommand from the keyboard.  Under DOS you can use ctrl-C to stop the
  1117. Xcurrent task and take the next command from the keyboard.  Also under
  1118. XDOS, when the program is executing a run command hitting the escape key
  1119. Xwill get the program to stop after the current iteration.
  1120. X
  1121. X
  1122. X13. Limitations
  1123. X
  1124. X   Weights in the bp and sbp programs are 16-bit integer weights where
  1125. Xthe real value of the weight has been multiplied by 1024.  The integer
  1126. Xversions cannot handle weights less than -32 or greater than 31.999.
  1127. XThe weight changes are all checked for overflow but there are other
  1128. Xplaces in these programs where calculations can possibly overflow as
  1129. Xwell and none of these places are checked.  Input values for the integer
  1130. Xversions can run from -31.994 to 31.999.  Due to the method used to
  1131. Ximplement recurrent connections, input values in the real version are
  1132. Xlimited to -31994.0 and above.
  1133. END_OF_FILE
  1134. if test 46585 -ne `wc -c <'readme'`; then
  1135.     echo shar: \"'readme'\" unpacked with wrong size!
  1136. fi
  1137. # end of 'readme'
  1138. fi
  1139. echo shar: End of archive 1 \(of 4\).
  1140. cp /dev/null ark1isdone
  1141. MISSING=""
  1142. for I in 1 2 3 4 ; do
  1143.     if test ! -f ark${I}isdone ; then
  1144.     MISSING="${MISSING} ${I}"
  1145.     fi
  1146. done
  1147. if test "${MISSING}" = "" ; then
  1148.     echo You have unpacked all 4 archives.
  1149.     rm -f ark[1-9]isdone
  1150. else
  1151.     echo You still need to unpack the following archives:
  1152.     echo "        " ${MISSING}
  1153. fi
  1154. ##  End of shell archive.
  1155. exit 0
  1156.  
  1157. exit 0 # Just in case...
  1158.