Artificial Neural Net
Model was written in NetLogo 5.0.3
•
Viewed 1155 times
•
Downloaded 112 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Click to Run Model
links-own [weight] breed [bias-nodes bias-node] breed [input-nodes input-node] breed [output-nodes output-node] breed [hidden-nodes hidden-node] turtles-own [activation err] globals [ epoch-error input-node-1 ;; keep the input and output nodes input-node-2 ;; in global variables so we can output-node-1 ;; refer to them directly ] ;;; ;;; SETUP PROCEDURES ;;; to setup clear-all ask patches [ set pcolor gray + 2 ] set-default-shape bias-nodes "bias-node" set-default-shape input-nodes "circle" set-default-shape output-nodes "output-node" set-default-shape hidden-nodes "output-node" setup-nodes setup-links propagate reset-ticks end to setup-nodes create-bias-nodes 1 [ setxy -5 5 ] ask bias-nodes [ set activation 1 ] create-input-nodes 1 [ setxy -5 -1 set input-node-1 self ] create-input-nodes 1 [ setxy -5 1 set input-node-2 self ] ask input-nodes [ set activation random 2 ] create-hidden-nodes 1 [ setxy 0 -1 ] create-hidden-nodes 1 [ setxy 0 1 ] ask hidden-nodes [ set activation random 2 set size 1.5 ] create-output-nodes 1 [ setxy 5 0 set output-node-1 self ] ask output-nodes [ set activation random 2 ] end to setup-links connect-all bias-nodes hidden-nodes connect-all bias-nodes output-nodes connect-all input-nodes hidden-nodes connect-all hidden-nodes output-nodes end to connect-all [nodes1 nodes2] ask nodes1 [ create-links-to nodes2 [ set weight random-float 0.2 - 0.1 ] ] end to recolor ask turtles [ set color item (step activation) [black white] ] ask links [ set thickness 0.1 * abs weight ifelse weight > 0 [ set color red ] [ set color blue ] ] end ;;; ;;; TRAINING PROCEDURES ;;; to train set epoch-error 0 repeat examples-per-epoch [ ask input-nodes [ set activation random 2 ] propagate back-propagate ] tick set epoch-error epoch-error / examples-per-epoch plotxy ticks epoch-error end ;;; ;;; FUNCTIONS TO LEARN ;;; to-report target-answer let a [activation] of input-node-1 = 1 let b [activation] of input-node-2 = 1 report ifelse-value run-result (word "a " target-function " b") [1][0] end ;;; ;;; PROPAGATION PROCEDURES ;;; ;; carry out one calculation from beginning to end to propagate ask hidden-nodes [ set activation new-activation ] ask output-nodes [ set activation new-activation ] recolor end to-report new-activation ;; node procedure report sigmoid sum [[activation] of end1 * weight] of my-in-links end ;; changes weights to correct for errors to back-propagate let example-error 0 let answer target-answer ask output-node-1 [ set err activation * (1 - activation) * (answer - activation) set example-error example-error + ( (answer - activation) ^ 2 ) ] set epoch-error epoch-error + example-error ask hidden-nodes [ set err activation * (1 - activation) * sum [weight * [err] of end2] of my-out-links ] ask links [ set weight weight + learning-rate * [err] of end2 * [activation] of end1 ] end ;;; ;;; MISC PROCEDURES ;;; ;; computes the sigmoid function given an input value and the weight on the link to-report sigmoid [input] report 1 / (1 + e ^ (- input)) end ;; computes the step function given an input value and the weight on the link to-report step [input] report ifelse-value (input > 0.5) [1][0] end ;;; ;;; TESTING PROCEDURES ;;; ;; test runs one instance and computes the output to test ;; output the result ifelse test-success? input-1 input-2 [ user-message "Correct." ] [ user-message "Incorrect." ] end to-report test-success? [n1 n2] ask input-node-1 [ set activation n1 ] ask input-node-2 [ set activation n2 ] propagate report target-answer = step [activation] of one-of output-nodes end
There are 9 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Artificial Neural Net.png | preview | Preview | over 11 years ago, by Reuven M. Lerner | Download |
This model does not have any ancestors.
This model does not have any descendants.