next up previous
Next: Internal Reinforcement in Neural Up: Neural Programming and an Previous: Introduction

Neural Programming

 

The essence of a programming language is one or more basic constructs and one or more legal ways of combining those constructs. A measure of the extendibility of a language is the ease with which new constructs or new construct combinations can be incorporated into the language. It is the high degree of extendibility in GP that we want to wed to the focused update policies possible in ANNs.

The Neural Programming representation has flow of data, like an ANN, rather than the flow of control typical in programs. The nodes in a neural program can be arbitrary functions of the inputs. So a node can still be an average of the inputs to the node and a sigmoid threshold. But it can also other functions such as ADD, READ, WRITE, IF-THEN-ELSE, and, most importantly, potentially complex user defined functions for examining the input data (see figure 1). Such input-access-primitives might, for example, return the AVERAGE or VARIANCE of values in a range of the input data as specified by the inputs to that node. This kind of embedding of complex (often co-evolved) components as primitives in the evolving GP system has repeated shown to be effective (e.g., [7]) and is an important reason for trying to find a compromise between GP and ANNs. Furthermore, these powerful input-access-primitives, as part of the learning process, can be used in place of brittle preprocessing.

   figure61
Figure 1: A simple program in the NP representation

The multiple forked distribution of good values from any point in the program is probably a valuable aspect of the NP representation. In the parley of GP, this can be seen as a kind of highly flexible automatically defined function (ADF) [7] mechanism. This fan-out is a connectionist advantage that GP programs might profit by incorporating.

Neural Programming was designed to be a representation for evolving programs. As such, there are two dominate forms of change that evolving programs typically undergo: crossover and mutation. Mutation is the change of one (usually atomic) part of the program to another aspect of the same type. Crossover is the sexual reproduction of two programs; two programs ``mate'' by exchanging program material between them.

While NP programs look more like recurrent ANNs than GP programs, NP programs are changed, not by adjusting arc weights (NP arcs have no weights), but by changing what is inside each node, the program topology and size.

Here are the major characteristics of the Neural Programming representation:



next up previous
Next: Internal Reinforcement in Neural Up: Neural Programming and an Previous: Introduction



Eric Teller
Tue Oct 29 14:55:57 EST 1996