Patent Publication Number: US-2004059695-A1

Title: Neural network and method of training

Description:
BACKGROUND OF THE INVENTION  
       [0001] 1. Field of the Invention  
       [0002] The present invention relates to neural networks.  
       [0003] 2. Description of Related Art  
       [0004] The proliferation of computers accompanied by exponential increases in their processing power has had a significant impact on society in the last thirty years.  
       [0005] Commercially available computers are, with few exceptions, of the Von Neumann type. Von Neumann type computers include a memory and a processor. In operation, instructions and data are read from the memory and executed by the processor. Von Neumann type computers are suitable for performing tasks that can be expressed in terms of sequences of logical, or arithmetic steps. Generally, Von Neumann type computers are serial in nature; however, if a function to be performed can be expressed in the form of a parallel algorithm, a Von Neumann type computer that includes a number of processors working cooperatively in parallel can be utilized.  
       [0006] For certain classes of problems, algorithmic approaches suitable for implementation on a Von Neumann machine have not been developed. For other classes of problems, although algorithmic approaches to the solution have been conceived, it is expected that executing the conceived algorithm would take an unacceptably long period of time.  
       [0007] Inspired by information gleaned from the field of neurophysiology, alternative means of computing and otherwise processing information known as neural networks were developed. Neural networks generally including one or more inputs, and one or more outputs, and one or more processing nodes intervening between the inputs and outputs. The foregoing are coupled by signal pathways (directed edges) characterized by weights. Neural networks that include a plurality of inputs and that are aptly described as parallel due to the fact that they operate simultaneously on information received at the plurality of inputs have also been developed. Neural networks hold the promise of being able handle tasks that are characterized by a high input data bandwidth. In as much as the operations performed by each processing node is relatively simple and is predetermined, there is the potential to develop very high speed processing nodes and from them high speed and high input data bandwidth neural networks.  
       [0008] There is generally no overarching theory of neural networks that can be applied to design neural networks to perform a particular task. Designing a neural network involves specifying the number and arrangement of nodes, and the weights that characterize the interconnection between nodes. A variety of stochastic methods have been used in order to explore the space of parameters that characterize a neural network design in order to find suitable choices of parameters, that lead to satisfactory performance of the neural network. For example, genetic algorithms and simulated annealing have been applied to the design neural networks. The success of such techniques is varied, and they are also computationally intensive. 
     
    
    
     BRIEF DESCRIPTION OF THE FIGURES  
     [0009] The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:  
     [0010]FIG. 1 is a graph representation of a neural network according to a first embodiment of the invention;  
     [0011]FIG. 2 is a block diagram of a processing node used in the neural network shown in FIG. 1;  
     [0012]FIG. 3 is a table of weights that characterize directed edges from inputs to processing nodes and between processing nodes in a hypothetical neural network of the type shown in FIG. 1;  
     [0013]FIG. 4 is a table of weights showing how a topology of the type shown in FIG. 1 can be transformed into a three-layer perceptron by zeroing selected weights;  
     [0014]FIG. 5 is a table of weights showing how a topology of the type shown in FIG. 1 can be transformed into a multi-output, multi-layer perceptron by zeroing selected weights;  
     [0015]FIG. 6 is a graph representing the topology reflected in FIG. 5;  
     [0016]FIG. 7 is a flow chart of a method of training the neural networks of the types shown in FIGS. 1,6 according to the preferred embodiment of the invention;  
     [0017]FIG. 8 is a flow chart of a method of selecting the number of nodes in neural networks of the types shown in FIGS. 1, 6 according to the preferred embodiment of the invention; and  
     [0018]FIG. 9 is a block diagram of a computer used to execute the algorithms shown in FIGS. 7, 8 according to the preferred embodiment of the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
     [0019] As required, detailed embodiments of the present invention are disclosed herein; however, it is to be understood that the disclosed embodiments are merely exemplary of the invention, which can be embodied in various forms. Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the present invention in virtually any appropriately detailed structure. Further, the terms and phrases used herein are not intended to be limiting; but rather, to provide an understandable description of the invention.  
     [0020]FIG. 1 is a graph representation of a feed forward neural network  100  according to a first embodiment of the invention. The neural network  100  includes a first input  102 , a second input  104 , a third input  106  and a fourth input  108 . A fixed bias signal, e.g., input value 1.0, is applied to the first input  102 . The neural network  100  further comprises a first processing node  110 , a second processing node  112 , a third processing node  114 , and a fourth processing node  116 . The fourth processing node  116  includes an output  118  that serves as a first output of the output of the neural network. A second output  128  of the neural network  100  is tapped from an output of the third processing node  114 . The first two processing nodes  110 ,  112  are hidden nodes in as much as they do not directly supply output externally. Initially, at the outset of training at least, each of the inputs  102 ,  104 ,  106 ,  108  is preferably considered to be coupled by directed edges (e.g.,  120 ,  122 ) to each of the processing nodes  110 ,  112 ,  114 ,  116 . Also, initially at least, every processing node except the last  116  is preferably considered to be coupled by directed edges (e.g.  124 ,  126 ) to processing nodes that are downstream (closer to the output). The direction of the directed edges is such that signals always pass from lower numbered processing nodes to higher numbered processing nodes (e.g., from the first processing node  110 , to the third processing node  114 ). For a feed forward neural network of the type shown in FIG. 1 that has n inputs, and m processing nodes there are up to:  
             K   =         (     n   +   1     )        m     +       1   2          m        (     m   -   1     )                   EQU   .              1                       
 
     [0021] directed edges each of which is characterized by a weight.  
     [0022] In Equation One, n+1 is the number of signal inputs, and m is the number of processing nodes. Note that n is the number of signal inputs other than the fixed bias signal input  102 .  
     [0023] A characteristic of the feed forward network topology illustrated in FIG. 1 is that it includes processing nodes such as the first processing node  110 , that is coupled to the second  112  and third  114  processing nodes by directed edges, and the second  112  and third  114  processing nodes are also coupled by a directed edge.  
     [0024] Neural networks of the type shown in FIG. 1 can for example be used in control applications where the inputs  104 ,  106 ,  108  are coupled to a plurality of sensors, and the outputs  118 ,  128  are coupled to output transducers.  
     [0025] In an electrical hardware implementation of the invention, the directed edges (e.g.,  120 ,  122 ) are suitably embodied as attenuating and/or amplifying circuits. The processing nodes  110 ,  112 ,  114 ,  116  receive the bias signal and input signals from the four inputs  102 - 108 . The bias signal and the input signals are multiplied by weights associated with directed edges through which they are coupled.  
     [0026] The neural network  100  is trained to perform a desired function. Training is akin to programming a Von Neumann computer in that training adapts the neural network  100  to perform a desired function. In as much as signal processing that is performed by the processing nodes  110 - 116  is preferably unaltered in the course of training the neural network  100  training is achieved by properly selecting the weights that are associated with the plurality of directed edges of the neural network. Training is discussed in detail below with reference to FIG. 7.  
     [0027]FIG. 2 is a block diagram of the first processing node  110  of the neural network  100  shown in FIG. 1. The first processing node  110  includes four inputs  202  that serve as inputs of a summer  204 . In the case of the first processing node the inputs  202  receive signals directly from the inputs  102 ,  104 ,  106 ,  108  of the neural network  100 . The summer  204  outputs a sum signal to transfer function block  206 . The transfer function block  206  applies a transfer function to the sum signal and outputs a result as the processing node&#39;s output at an output  208 . The transfer function is preferably the sigmoid function:  
               h   j     =     1     1   +          -     H   j                     EQU   .              2                       
 
     [0028] where, h j  is the output of the transfer function block  206 , and the output of a jth processing node e.g., processing node  110 ; and  
     [0029] H j  is the summed input of a jth processing node e.g., the output of the summer  204 .  
     [0030] The output  208  is coupled through a plurality of directed edges to the first processing node  110  to the second  112 , third  114 , and fourth  116  processing nodes.  
     [0031] For classification problems, the expected output of the neural network  100  is chosen from a finite set of values e.g., one or zero, which respectively specify that a given set of inputs does or does not belong to a certain class. In classification problems, it is appropriate to use signals that are output by a threshold type (e.g., sigmoid) transfer function at the processing nodes that are used as outputs. The sigmoid function is aptly described as a threshold function in that it rapidly swings from a value near zero to a value near 1 near the domain value of zero. On the other hand, for regression type problems it is preferred to take the output at processing nodes that serve as outputs of a neural network of the type shown in FIG. 1 from the output of summers within those output processing nodes, and not process the final output signals by the sigmoid functions in the output processing nodes. This is appropriate because for regression problems the output is generally expected to be continuous as opposed to consisting of a finite set of discrete values.  
     [0032] Alternatively, in lieu of the sigmoid function other functions or approximations of the sigmoid or other functions are used as the transfer function that is performed by the transfer function block  206 . For example the Gaussian function is alternatively used in lieu of the sigmoid function.  
     [0033] The other processing nodes  112 ,  114 ,  116  preferably have the same design as shown in FIG. 2, with the exception that the other processing nodes include summers with different numbers of inputs in order to accommodate input signals from the neural network inputs  102 - 108  and from other processing nodes. In a hardware implementation of the neural network, the first processing nodes and other processing nodes are implemented in digital or analog circuitry or a combination thereof.  
     [0034] As will be discussed below, in the interest of providing less complex neural networks, according to embodiments of the invention some of the possible directed edges (as counted by Equation One) are eliminated. A method of selecting which directed edges to eliminate in order to provide a less complex and costly neural network is described below with reference to FIG. 7.  
     [0035]FIG. 3 is a table  300  of weights that characterize directed edges from inputs to processing nodes and between processing nodes in a hypothetical neural network of the type shown in FIG. 1. The first column of the table  300  identifies inputs of processing nodes. The subscripted capital H&#39;s appearing in the first column stand for the output of the summer in a processing node identified by the subscript.  
     [0036] The left side of the first row of table  300  (to the left of line  302 ) identifies inputs of the neural network. The left side of the first row includes subscripted X&#39;s where the subscript identifies a particular input. For example in the case of the neural network shown in FIG. 1 the neural network inputs  102 ,  104 ,  106 ,  108  would be identified in the left side of the first row as X 0 , X 1 , X 2 , and X 3 . The first input identified by X 0  is the input for the fixed bias (e.g.,  102 , in neural network  100 ). The entries in the left hand side of the table  300  which appear as double subscripted capital W&#39;s represent weights that characterize directed edges that couple the neural network&#39;s inputs to the neural network&#39;s processing nodes. The first subscript of each of the capital W&#39;s identifies a processing node at which a directed edge characterized by the weight symbolized by the subscripted W terminates, and the second subscript identifies a neural network input at which the directed edge characterized by the weight symbolized by the subscripted W originates.  
     [0037] The right side of the first row identifies outputs of each, except for the last, processing node by a subscripted lower case h. The subscript of on each lower case h identifies a particular processing node. The entries in the right side of the table  300  are double-subscripted capital V&#39;s. The subscripted capital V&#39;s represent weights that characterized directed edges that couple processing nodes of the neural network. The first subscript of each V identifies a processing node at which the directed edge that is characterized by the weight symbolized by the V in question terminates, whereas the second subscript identifies a processing node at which the directed edge characterized by the weight symbolized by the V in question originates.  
     [0038] All the weights in each row have the same first subscript, which is equal to the subscript of the capital H in the same row of the first column of the table, which identifies a processing node at which the directed edges characterized by the weights in the row terminate. Similarly, weights in each column of the table have the same second index which identifies an input (on the left hand side of the table  300 ) or a processing node (on the right hand side of the table) at which the directed edges characterized by the weights in each column originate. Note that the right side of table  300  has a lower triangular form. The latter aspect reflects the feed forward only character of neural networks according to preferred embodiments of the invention.  
     [0039] Table  300  thus concisely summarizes important information that characterizes a neural network.  
     [0040]FIG. 4 is a table  400  of weights showing how a topology of the type shown in FIG. 1 can be transformed into a three-layer perceptron by zeroing out selected weights. As reflected on the left hand side (to the left of heavy line  402 ) a plurality of processing nodes up to an (m−1)th processing node (shown explicitly for the first three processing nodes) are coupled to a number n of neural network inputs. The first neural network input labeled X 0  served as a fixed bias signal input. As reflected on the right hand side of the table  400  there is no inter-coupling between the processing nodes (1 st  to (m−1)th) that are coupled to the inputs. This is represented by zero entries for the weights that characterize directed edges between those processing nodes. The first m−1 processing nodes effectively serve as a hidden layer of a single hidden layer perceptron. As indicated by entries in the right side of the last row of the table, the processing nodes m to m−1 that are directly coupled to the signal inputs X 1  to X n  are coupled to an mth processing node that serves as an output of the neural network. Thus by eliminating certain directed edges of a feed forward network of the type shown in FIG. 1, such a feed forward network can be transformed into a perceptron having a plurality of processing nodes organized in a single hidden layer. Additional output processing nodes that are coupled to the first m−1 processing nodes can also be added to obtain a plural output single hidden layer perceptron.  
     [0041]FIG. 5 is a table  500  of weights showing how a topology of the type shown in FIG. 1 can be transformed into a multi-output multi-hidden-layer perceptron by zeroing out selected weights and FIG. 6 is a graph of a neural network  600  representing the topology reflected in FIG. 5. The table  500  reflects that the neural network  600  has n inputs labeled X 0  to X n . The first input denoted X 0  is preferably used as a fixed bias signal input. (Note that the same X 0  appears in several places in FIG. 6) The neural network further comprises m processing nodes labeled 1 to m. The column for the first, fixed bias signal input X 0  includes weights that act as scaling factors for the biases applied to the m processing nodes. A first block section  502  of the table  500  reflects that the signal inputs X 1 -X N  are coupled to the first k-1 processing nodes. A second block section  504  reflects that the signal inputs X 1 -X N  are not coupled to the remaining m-k+1 processing nodes of the neural network  600 . A third block section reflects that outputs of the first k-1 processing nodes (that are coupled to the inputs X 1 -X N ) are coupled to inputs of next s-k+1 processing nodes that are label by subscripts ranging from k to s. Zeros above the second block indicate that in this example there is no intercoupling between among the first k-1 processing nodes, and that the neural network is a feed forward network. Zeros below the second block indicate that no additional processing nodes receive signals from the first k-1 processing nodes.  
     [0042] Similarly, a fourth block  508  reflects that a successive set of t-s processing nodes labeled s+1 to t receives signals from processing nodes labeled k to s. Zeros above the fourth block  508  reflect the feed forward nature of the neural network, and that there is no inter-coupling between the processing nodes labeled k to s. The zeros below the fourth block  508  reflect that no further processing nodes beyond those labeled s+1 to t receive signals from the processing nodes labeled k to s.  
     [0043] A fifth block  510  reflects that a set of processing nodes labeled m−2 to m, that serve as outputs of the neural network described by the table  500 , receive signals from processing nodes labeled s+1 to t. Zeros above the fifth processing block reflect the feed forward nature of the network, and that no processing nodes other than those labeled m−2 to m receive signals from processing nodes labeled s+1 to t.  
     [0044] Thus, the table  500  illustrates that by selectively eliminating directed edges (tantamount to zeroing associated weights) a neural network of the type illustrated in FIG. 1 can be transformed into the multi-input, multiple hidden layer perceptron shown in FIG. 6. In the case illustrated in FIGS.  5 - 6 , processing nodes  1  to k-1 serve as a first hidden layer, processing nodes k to s serve as a second hidden layer, and nodes s+1 to t serve as a third hidden layer.  
     [0045] In neural networks of the type shown in FIG. 1, the summed input H k  to a kth processing node is given by:  
               H   k     =         ∑     i   =   0     n                       W   ki          X   i         +       ∑     j   =   1       k   -   1                         V   kj          h   j                   EQU   .              3                       
 
     [0046] where, X i  is an ith input that is coupled to the kth processing node;  
     [0047] W ki  is a weight that characterizes a directed edge from the ith input to the kth processing node;  
     [0048] h j  is the output of a jth processing node that is coupled to the kth processing node; and  
     [0049] V kj  is a weight that characterizes a directed edge from the jth processing node to the kth processing node.  
     [0050] The output of the kth processing node is then give by Equation Two. Thus by repeated application of Equations Two and Three a specified input vector [X 0  . . . X n ] can be propagated through a neural network of the type shown in FIG. 1 (and variations thereof obtained by selectively zeroing weights) and the output of such a neural network at one or more output processing nodes can be calculated.  
     [0051]FIG. 7 is a flow chart of a method  700  of training neural networks of the general type shown in FIG. 1 according to the preferred embodiment of the invention. Although the method  700  is preferably performed using a computer model of a neural network, the results found using the method, can then be applied to a hardware implemented neural network.  
     [0052] Referring to FIG. 7, in block  702  weights that characterize directed edges of the neural network to be trained are initialized. The weights can for example be initialized randomly, initialized to some predetermined number (e.g., one), or initialized to some values entered by the user (e.g., based on experience or guesses).  
     [0053] Block  704  is the start of a loop that uses successive sets of training data. The training data preferably includes a plurality of sets of training data that represent the domain of input that the neural network to be trained is expected to process. Each kth training data set preferably includes a vector of inputs X k =[X 0  . . . X n ] k  and an associated expected output Y k  or a vector of expected outputs Y k =[m-q . . . Ym] k  in the case of a multi-output neural network.  
     [0054] In block  706  the input vector of the a kth set of training data is applied to the neural network being trained, and in block  708  the input vector of the kth set of training data is propagated through the neural network. Equations Two and Three are used to propagate the training data input through the neural network being trained. In executing block  708  the output of each processing node is determined and stored, at least temporarily, so that such output can be used later in calculating derivatives as described below.  
     [0055] In step  710  the difference between the output of the neural network produced by the kth vector of training data inputs, and the associated expected output for the kth training data is computed. In the case of single output neural network regression the difference is given by:  
     Δ R   k   =H   m ( W,V,X   k )− Y   k   EQU.  4   
     [0056] where ΔR k  is the difference between the output produced in response the kth training data input vector X k , and the expected output Y k  that is associated with the input vector X k ; H m ,(W,V,X k ) is the output (at an mth processing node) of the neural network produced in response to the kth training data input vector X k . The bold face W represent the set of weights that characterize directed edges from the neural network inputs to the processing nodes; and the bold face V represents the set of weight that characterized directed edges that couple processing nodes. H m  is a function of W, V and X k . As mentioned above for regression problems a threshold transfer function such as the sigmoid function is not applied at the processing nodes that serve as outputs. Therefore, the output H m  is equal to the summed input of the mth processing node which serves as an output of the neural network being trained.  
     [0057] As described more fully below, in the case of a multi-output neural network the difference between actual output produced by the kth training data input, and the expected output is computed for each output of the neural network.  
     [0058] In block  712  the derivatives with respect to each of the weights in the neural network, of a kth term (corresponding to the kth set of training data) of an objective function being used to train the neural network are computed. Optimizing, and preferably, in particular minimizing, the objective function in terms of the weights is tantamount to training the neural network. In the case of a single output neural network the square of the difference given by Equation Four is preferably used in the objective function to be minimized. For a single output neural network the objective function is preferably given by:  
             OBJ   =       1     2                 N              ∑     k   =   1     N            (         H   m          (     W   ,   V   ,     X   k       )       -     Y   k       )     2                 EQU   .              5                       
 
     [0059] where the summation index k specifies a training data set; and  
     [0060] N is the number of training data sets.  
     [0061] Alternatively, a different function of the difference is used as the objective function. The derivative of the kth term of the objective function given by Equation Five with respect to a weight of a directed edge coupling a ith input of the neural network to an jth processing node of the neural network is:  
                   ∂   OBJ       ∂     W   ji              |   k       =     Δ                   R   k            ∂     H   m         ∂     W   ji                   EQU   .              6                       
 
     [0062] The derivative on the right hand side of Equation Six which is the derivative of the summed input H m  at the mth processing node (which is the output node of the neural network) with respect to the weight W ji  of the neural network is unfortunately, for certain values of i,j, a rather complex expression. This is due to the fact that the directed edge that is characterized by weight W ji  may be remote from the output (mth) node, and consequently a change in the value of W ji  can cause changes in the strength of signals reaching the mth processing node through many different signal pathways (each including a series of one or more directed edges). These derivatives, for various values of i, j are preferably evaluated using the following generalized procedure expressed in pseudo code.  
                               FIRST OUTPUT DERIVATIVE PROCEDURE:                                                        If                 j     ==   m     ,           ∂     H   m         ∂     W   mi         =     X   i       ;                                   Otherwise,                                                               w   j     =       X   i                 T   j              H   j                           ∂     H   m         ∂     W   μ         =       V   mj          w   j                                                         For (r=j+1; r&lt;m; r++)           {                                         w   r     =              T   r              H   r                ∑     t   =   j       r   -   1              V   rt          w   t                           ∂     H   m         ∂     W   ji         +=       V   mr          w   r                                                         }                      
 
     [0063] In the first output derivative procedure  
     [0064] dT r /dH r  is the derivative of the transfer function of an rth processing node treating the summed input H r  as an independent variable;  
     [0065] dT j /dH j  is the derivative of the transfer function of a jth processing node treating the summed input H j  as an independent variable; and  
     [0066] w j  and w r  are temporary variables.  
     [0067] The latter two derivatives dT r /dH r , dT j /dH j , are evaluated at the values of H j  and H r  that occur when a specific training data set (e.g., the kth) is propagated through the neural network being trained.  
     [0068] The sigmoid function given by Equation Two above has the property that its derivative is simply given by:  
                      T   j              H   j         =       h   j          (     1   -     h   j       )               EQU   .              7                       
 
     [0069] where h j  is the output of a jth processing node that uses the sigmoid transfer function; and  
     [0070] H j  is the summed input of the jth processing node.  
     [0071] Therefore, in the preferred case that the sigmoid function is used as the transfer function in processing nodes, the derivatives of the transfer function appearing in the first output derivative procedure are preferably replaced by the form given by Equation Seven. As mentioned above the output of each processing node (e.g., h j ) is determined and stored when training data is propagated through the neural network in step  708 , and is thus available for use in the case that Equation Seven is used in the first derivative output procedure (or in the second derivative output procedure described below). In the alternative case of a transfer function other than the sigmoid function, in which the derivatives of transfer function are expressed in terms of the independent variable (input to transfer function), it is appropriate when propagating training data through the neural network, in block  708 , to determine and store, at least temporarily, the summed input to each processing node, so that such input can be used in evaluating derivatives of processing nodes transfer functions in the course of executing the first output derivative procedure.  
     [0072] Although the working of the first output derivative procedure is more concisely and effectively communicated via the pseudo code shown above than can be communicated in words, a description of the procedure is as follows. In the special case that the weight under consideration connects to the output under consideration (i.e., if j=m), then the derivative of the summed input H m  with respect to the weight W ji  is simply set to the value of the ith input X i , because the contribution to H m  that is due to the input W ji  is simply the product of X i  and W ji .  
     [0073] In the more complicated and more common case in which the directed edge characterized by the weight W ji  under consideration is not directly connected to the output (mth) node under consideration the procedure works as follows. First, an initial contribution to the derivative being calculated that is related to a weight V mj  is computed. The weight V mj  characterizes a directed edge that connects the jth processing node at which the directed edge characterized by the weight W ji  with respect to which the derivative is being take terminates, to the mth output the derivative of the summed input of which is to be calculated. The initial contribution includes a first factor that is the product of the derivative of the transfer function of the jth node at which the weight W ji  terminates (evaluated at its operating point given a set of training data), and the input X i  at the ith input, at which the weight W ji  originates; and a second factor that is the weight V mj . The first factor which is aptly termed a leading part of the initial contribution is stored and will be used subsequently. The initial contribution is a summand which will be added to as described below.  
     [0074] After the initial contribution has been computed, the for loop in the pseudo code listed above is entered. The for loop considers successive rth processing nodes, starting with the (j+1)th node that immediately follows the jth node at which the directed edge characterized by the W ji  weight with respect to which the derivative being taken terminates, and ending at the (m−1) node immediately preceding the output (mth) node under consideration, the summed input of which the derivative being taken is of. At each rth node another rth summand-contribution to the derivative is computed. The contribution of each rth processing node in the range j+1 to m−1 includes a leading part that is the product of the derivative of the transfer function of the node in question (rth) at its operating point, and what shall be called an rth intermediate sum. The rth intermediate sum includes a term for each tth processing node from the jth processing node up to the (r−1)th node that precedes the rth processing node for which the intermediate sum is being evaluated. For each tth node of the aforementioned sequence of nodes jth to (r−1)th the summand of the rth intermediate sum is a product of a weight characterizing a directed edge from the tth processing node to the rth processing node, and the value of the leading part that has been calculated during a previous iteration of the for loop for the tth processing node (or in the case of the jth node calculated before entering the for loop). The leading parts can thus be said to be calculated in a recursive manner in the first output derivative procedure. Furthermore, in the each rth summand contribution to the overall derivative being calculated, the aforementioned leading part for the rth node, the derivative of the transfer function of the rth node, and a weight that characterizes a directed edge from the rth node to the mth processing node are multiplied together.  
     [0075] The first output derivative procedure could be evaluated symbolically for any values of j, i, and m for example by using a computer algebra application such as Mathematica, published by Wolfram Research of Champaign, Ill. in order in order to present a single closed form expression. However, in as much as numerous sub-expressions (i.e., the above mentioned leading parts) would appear repetitively in such an expression, it is more computationally efficient and therefore preferable to evaluate the derivatives given by the first output derivative procedure using a program that is closely patterned after the pseudo code representation.  
     [0076] The derivative of the kth term of the objective function given by Equation Five with respect to a weight V dc  of a directed edge coupling the output of a cth processing node to the input of a dth processing node is:  
                   ∂   OBJ       ∂     V     d                 c                |   k       =     Δ                   R   k            ∂     H   m         ∂     V     d                 c                     EQU   .              8                       
 
     [0077] The derivative on the right side of Equation Eight is the derivative of the summed input an mth processing node that serves as an output of the neural network with respect to a weight that characterizes the directed edge that couples the cth processing node to the dth processing node. This derivative is preferably evaluated using the following generalized procedure expressed in pseudo code:  
                               SECOND OUTPUT DERIVATIVE PROCEDURE:                                                        If                 d     ==   m     ,           ∂     H   m         ∂     W   mc         =     h   c       ;                                   Otherwise,                                                               v   d     =       h   c                 T   d              H   d                           ∂     H   m         ∂     V   dc         =       V   md          v   d                                                         For (r=d+1; r&lt;m; r++)           {                                         v   r     =              T   r              H   r                ∑     t   =   d       r   -   1              V   rt          v   t                           ∂     H   m         ∂     V   dc         +=       V   mr          w   r                                                         }                      
 
     [0078] The second output derivative procedure is analogous to the first output derivative procedure. In the preferred case that the transfer function of processing nodes in the neural network is the sigmoid function, in accordance with Equation Seven, dT r /dH r  is replaced by h r (1-h r ), and dT d /dH d  is replaced by h d (1-h d ). v r  and v d  are temporary variables. The exact nature of second output derivative procedure is also evident by inspection. The second output derivative procedure functions in a manner analogous to the first output derivative procedure.  
     [0079] Although the exact nature of the second derivative output procedure is, as in the case of the first derivative procedure, best ascertained by examining the pseudo code presented above, the operations can be described as follows: In the special case that the weight under consideration connects to the output under consideration (i.e., if d=m), then the derivative of the summed input H m  with respect to the weight V dc  is simply set to the value of the output h c  of the cth processing node at which the directed edge characterized by the weight V dc  with respect to which the derivative being calculated originates, because the contribution to H m  that is due to the input V dc  is simply the product of V dc  and h c .  
     [0080] In the more complicated and more common case in which the directed edge characterized by the weight under consideration is not directly connected to the mth output under consideration the procedure works as follows. First, an initial contribution to the derivative being calculated that is due to a weight V md  is computed. The weight V md  characterizes a directed edge that connects the dth processing node at which the directed edge characterized by the weight V dc  with respect to which the derivative is being take, terminates, to the mth output the derivative of the summed input of which is to be calculated. The initial contribution includes a first factor that is the product of the derivative of the transfer function of the dth node at which the weight V dc  terminates (evaluated at its operating point given a set of training data input), and the output h c  at the cth processing node, at which the directed edge characterized by the weight V dc  originates; and a second factor that is the weight V md  that characterizes a directed edge between the dth and mth nodes. The first factor which is aptly termed a leading part of the initial contribution is stored and will be used subsequently. The initial contribution is a summand which will be added to as described below.  
     [0081] After the initial contribution has been computed, the for loop in the pseudo code listed above is entered. The operation of the for loop in the second output derivative procedure is analogous to the operation of the for loop in the first output derivative procedure that is described above.  
     [0082] Referring again to FIG. 7, in step  714  the derivatives calculated in the preceding step  712  are stored.  
     [0083] The next block  716  is a decision block the outcome depends on whether there are more sets of training data to be processed. If affirmative then in block  718  a counter that points to successive training data sets is incremented, and thereafter the process  700  returns to block  706 . Thus, blocks  706  to  714  are repeated for a plurality of sets of training data. If in block  716  it is determined that all of the training data sets have been processed, then the method  700  continues with block  720  in which the derivatives with respect to each weight are averaged over the training data sets. The average over N training data sets of the derivative of the objective function with respect to the weight characterizing a directed edge from an ith input to a jth processing node is given by:  
               AVG        (       ∂   OBJ       ∂     W   ji         )       =       1   N            ∑     k   =   1     N          Δ                   R   k            ∂     H   m         ∂     W   ji                       EQU   .              9                       
 
     [0084] Similarly, the average over N training data sets of the derivative of the objective function with respect to the weight characterizing a directed edge form cth processing node to dth processing node is given by:  
               AVG        (       ∂   OBJ       ∂     V     d                 c           )       =       1   N            ∑     k   =   1     N          Δ                   R   k            ∂     H   m         ∂     V     d                 c                         EQU   .              10                       
 
     [0085] Note that the derivatives ∂H m /∂W ji , ∂H m /∂V dc  in the right hand sides of Equations Nine and Ten must be evaluated separately for each kth set of training data, because they are dependent on the operating point of the transfer function block (e.g.  206 ) in each processing node which is dependent on the training data applied to the neural network.  
     [0086] In step  722  the average of the derivatives of the objective function that are computed in step block  720  are processed with an optimization algorithm in order to calculate new values of the weights. Depending on how the objective function to be optimized is set up, the optimization algorithm seeks to minimize or maximize the objective function. The objective function given in Equation Five and other objective functions shown herein below are set up to be minimized. A number of different optimization algorithms that use derivative evaluation including, but not limited to, the steepest descent method, the conjugate gradient method, or the Broyden-Fletcher-Goldfarb-Shanno method are suitable for use in block  722 . Suitable routines for use in step  722  are available commercially and from public domain sources. Suitable routines that implement one or more of the above mention methods are available from the Netlib a World Wide Web accessible repository of algorithms, and commercially from, for example, Visual Numerics of San Ramon, Calif. Algorithms that are appropriate for step  722  are described, for example, in chapter  10  of the book “Numerical Recipes in Fortran” edited by William H. Press, and published by the Cambridge University Press. Although the intricacies of nonlinear optimizations routines are outside of the focus of the present description, an outline of the application of the steepest descent method is described below. Optimization routines that are structured for reverse communication are advantageously used in step  722 . In using an optimization routine that uses reverse communication, the optimization routine is called (i.e., by a routine that embodies method  700 ) with values of derivatives of a function to be optimized.  
     [0087] In the case that the steepest descent method is used in step  722 , a new value of the weight that characterizes the directed edge from the ith input to the jth processing node is given by:  
               W   ji   new     =       W   ji   old     -     α                   AVG        (       ∂   OBJ       ∂     W   ji         )                   EQU   .              11                       
 
     [0088] where, α is a step length control parameter.  
     [0089] Also using the steepest descent method a new value of the weight that characterizes the directed edge from the cth processing node to the dth processing node is given by:  
               V   dc   new     =       V   dc   old     -     β                   AVG        (       ∂   OBJ       ∂     V   dc         )                   EQU   .              12                       
 
     [0090] where β is a step length control parameter.  
     [0091] The step length control parameters are often determined by the optimization routine employed, although in some cases the user may effect the choice by an input parameter.  
     [0092] Although, as described above, new weights are calculated using derivatives of the objective function that are averaged over all N training data sets, alternatively new weights are calculated using averages over less than all of the training data sets. For example, one alternative is to calculate new weights based on the derivatives of the objective function for each training data set separately. In the latter embodiment it is preferred to cycle through the available training data calculating new weight values based on each training data set.  
     [0093] Block  724  is a decision block the outcome of which depends on whether a stopping condition is satisfied. The stopping condition preferably requires that the difference between the value of the objective function evaluated with the new weights and the value of the objective function calculated with the old weights is less than a predetermined small number, that the Euclidean distance between the new and the old processing node to processing node weights is less than a predetermined small number, and that the Euclidean distance between the new and old input-to-processing node weights is less than a predetermined small value. Expressed in mathematical notation the preceding conditions are:  
     |OBJ NEW −OBJ OLD |&lt;ε 1   EQU. 13  
     ∥W OLD −W NEW ∥&lt;ε 2   EQU. 14  
     ∥VHOLD−V NEW ∥&lt;ε 3   EQU. 15  
     [0094] W NEW , W OLD  are collections of the weights that characterized directed edges between inputs and processing nodes that were returned by the last call and the call preceding the last call of the optimization algorithm respectively.  
     [0095] V NEW , V OLD  are collections of the weights that characterize directed edges between processing nodes that were returned by the last call and the call preceding the last call of the optimization algorithm respectively. The collections of weights are suitably arranged in the form of a vector for the purpose of finding the Euclidean distances.  
     [0096] OBJ NEW  and OBJ OLD  are the values of the objective function e.g., Equation Five, for the current and preceding values of the weights.  
     [0097] The predetermined small values used in the inequalities thirteen through fifteen can be the same value. For some optimization routines the predetermined small values are default values that can be overridden by a call parameter.  
     [0098] If the stopping condition is not satisfied, then the process  700  loops back to block  704  and continues from there to update the weights again as described above. If on the other hand the stopping condition is satisfied then the process  700  continues with block  730  in which weights that are below a certain threshold are set to zero. For a sufficiently small threshold, setting weights that are below that threshold to zero has a negligible effect on the performance of the neural network. An appropriate value for the threshold used in step  730  can be found by routine experimentation, e.g., by trying different values and judging the effect on the performance of one or more neural networks. If certain weights are set to zero the directed edges with which they are associated need not be provided. Eliminating directed edges simplifies the neural network and thereby reduces the complexity and semiconductor die space required for hardware implementations of the neural network. Alternatively, step  730  is eliminated. After process  700  has finished or after process  800  (described below) has been completed if the latter is used, the final values of the weights are used to construct a neural network. The neural network that is constructed using the weights can be a software implemented neural network that is for example executed on a Von Neumann computer; however, it is preferably a hardware implemented neural network. The weights found by the training process  700  are built into an actual neural network that is to be used in processing input data and producing output.  
     [0099] Method  700  has been described above with reference to a single output neural network. Method  700  is alternatively adapted to training a multi-output neural network of the type illustrated in FIG. 1. For multi-output neural networks that are used for regression or other problems with continuous outputs, in lieu of the objective function of Equation Five, and objective function of the following form is preferred:  
             OBJ   =       1     2      MP              ∑     i   =   1     P            ∑     k   =   1     M            (         H   t          (     W   ,   V   ,     X   k       )       -     Y   kt       )     2                   EQU   .              16                       
 
     [0100] where the summation index k specifies a particular set of training data;  
     [0101] the summation index t specifies a particular output;  
     [0102] P is the number of output processing nodes;  
     [0103] M is the number of training data sets;  
     [0104] H t (W,V, X k ) is the output (equal to the summed input) at a tth processing node when a kth vector of training data input is applied to the neural network; and  
     [0105] Y kt , is the expected output value for the tth processing node that is associated with the kth set of training data.  
     [0106] Equation Sixteen is particularly applicable to neural networks for multi-output regression problems. As noted above for regression problems it is preferred not apply a threshold transfer function such as the sigmoid function at processing nodes that serve as the outputs. Therefore, the output at each tth output processing node is preferably simply the summed input to that tth output processing node.  
     [0107] Equation Sixteen averages the difference between actual outputs produced in response a training data and the expected outputs associated with the training data. The average is taken over the multiple outputs of the neural network, and over multiple training data sets.  
     [0108] The derivative of the latter objective function with respect to a weight of the neural network is given by:  
                 ∂   OBJ       ∂     w   i         =       1   MP            ∑     k   =   1     M          (       ∑     t   =   1     P            (         H   t          (     W   ,   V   ,     X   k       )       -     Y   kt       )            ∂     H   t         ∂     w   i             )                 EQU   .              17                       
 
     [0109] where w i  stands for either a weight characterizing input to processing node directed edges, or directed edges that couple processing nodes.  
     [0110] (Note that because H t  is a function of k, the derivative ∂H t /∂w i  must be evaluated for each value of k separately.)  
     [0111] In the case of a multi-output neural network the weights are adjusted based on the effect of the weights on all of the outputs. In an adaptation of the process shown in FIG. 7 to a multi-output neural network derivatives of the form shown in Equation Seventeen, that are taken with respect to each of the weights in the neural network to be determined, are processed by an optimization algorithm in step  722 .  
     [0112] In addition to the control application mentioned above, an application of multi-output neural networks of the type shown in FIG. 1, is to predict the high and low values that occur during a kth period of finite duration of stochastic times series data (e.g., stock market data) based on input high and low values for n preceding periods (k-n) to (k-l).  
     [0113] As mentioned above in classification problems it is appropriate to apply the sigmoid function at the output nodes. (Alternatively, other threshold functions are used in lieu of the sigmoid function.) Aside from the special case in which what is desired is a yes or no answer as to whether a particular input belongs to a particular class, it is appropriate to use a multi-output neural network of the type shown in FIG. 1 to solve classification problems.  
     [0114] In classification problems one way to represent an identification of a particular class for an input vector, is to assign each of a plurality of outputs of the neural network to a particular class. An ideal output for such a network, might be an output value of one at the neural network output that correctly corresponds to the class of an input vector, and output values of zero at each of the remaining neural network outputs. In practice, the class associated with the neural network output at which the highest value is output in response to a given input vector is preferably construed as the correct class for the input vector.  
     [0115] For multi-output classification neural networks an objective function of the following form is preferable:  
               R        (     W   ,   V     )       =       1     2      MP              ∑     k   =   1     M            ∑     t   =   1     P          Δ                   R   kt   2                     EQU   .              18                       
 
     [0116] where, the t summation index specifies output nodes of the neural network;  
     [0117] the k summation index identifies a training data set with which actual and expected outputs are associated; and  
               Δ                   R   kt       =     {               h   t          (     W   ,   V   ,     X   k       )       -     Y   kt             for                 wrong                 classification             0         for                 correct                 classification                     EQU   .              19                       
 
     [0118] where ht is the output of the a transfer function at a tth processing node that serves as an output of the neural network.  
     [0119] Equation Nineteen is applied as follows. For a given kth set of training data, in the case that the correct output of the neural network being trained has the highest value of all the outputs of the neural network (even though it is not necessarily equal to one), the output for that kth training data is treated as being completely correct and ΔR KT  is set to zero for all outputs from 1 to P. If the correct output does not have the highest value, then element by element differences are taken between the actual output produced in response to the kth training data input and expected output that is associated with the kth training data set.  
     [0120] Such a neural network is preferably trained with training data sets that include input vectors for each of the classes that are to be identified by the neural network.  
     [0121] The derivative of the objective function given in Equation Eighteen with respect to an ith weight of the neural network is:  
                 ∂   OBJ       ∂     w   i         =       1   MP            ∑     k   =   1     M          (       ∑     t   =   1     P          Δ                   R   kt                 T   t              H   t                ∂     H   t         ∂     w   t             )                 EQU   .              20                       
 
     [0122] where dT/dH t  is the derivative of the transfer function of the tth processing node with respect to the summed input H t . of the tth processing node (with the summed input treated as an independent variable)  
     [0123] In the preferred case that the transfer function is the sigmoid function the derivative dh t /dH t  can be expressed as h t (1-h t ) where ht is the value of the sigmoid function for summed input H t . In an adaptation of the process shown in FIG. 7 to a multi-output neural network used for classification, derivatives of the form shown in Equation Twenty, that are taken with respect to each of the weights in the neural network to be determined, are processed by the optimization algorithm in step  722 .  
     [0124] It is desirable to reduce the number of directed edges in neural networks of the type shown in FIG. 1. Among the benefits of reducing the number of directed edges is a reduction in complexity, and power dissipation of hardware implemented embodiments. Furthermore, neural networks with fewer interconnections are less prone to over-training. Because it has learned the specific data but not their underlying structure, an over-trained network performs well with training data but not with other data of the same type to which it is applied subsequent to training. According to further embodiments of the invention described below, a cost term that is dependent on the number of weights of significant magnitude is included in an objective function used in training with an aim of reducing the number of weights of significant magnitude. A predetermined scale factor is used to judge the size of weights. Recall that in step  730  discussed above, directed edges characterized by weights that are below a predetermined threshold are preferably excluded from implemented neural networks. Using an objective function that tends to reduce the number of weights of significant magnitude in combination with step  730  tends to reduce the complexity of neural networks produced by the training method  700 .  
     [0125] Preferably the aforementioned cost term is a continuously differentiable function of the magnitude of weights so that it can be included in an objective function that is optimized using optimization algorithms, such as those mentioned above, that require derivative information.  
     [0126] A preferred continuously differentiable expression of the number of near zero weights in a neural network is:  
             U   =       ∑     i   =   1     K                 -   η                       w                i   2                   EQU   .              21                       
 
     [0127] where w i  is an ith weight of the neural network; and  
     [0128] θ is a scale factor relative to which the magnitude of weights are judged.  
     [0129] θ is preferably chosen such that if a weight is equal to the threshold used in step  730  below which weights are set to zero, the value of the summand in Equation Twenty-one is preferably at least 0.5.  
     [0130] The summation in Equation Twenty-One preferably includes all the weights of the neural network that are to be determined in training. Alternatively the summation is taken over a subset of the weights.  
     [0131] The expression of near-zero weights is suitably normalized by dividing by the total number of possible weights for a network of the type shown in FIG. 1 which number is given by Equation One above. The normalized expression of the number of near zero weights is given by:  
             F   =     U   K             EQU   .              22                       
 
     [0132] F can take on values in the range from zero to one. F or other measures of near zero weights are preferably included in an objective function along with a measure of the differences between actual and expected output values. In order that F can have a significant impact in reducing the number of weights of significant value, it is desirable that the value and the derivative of F is not insubstantial compared with the measure of the differences between actual and expected output values. One preferred way to address this goal is to use the following measure of differences between actual and expected values of:  
             L   =       R   N         R   O     +     R   N                 EQU   .              23                       
 
     [0133] where R N  is a measure of the differences between actual and expected values during a current iteration of the training algorithm; and  
     [0134] R O  is a value of the measure of differences between actual and expected values for an iteration of the training algorithm preceding the current iteration.  
     [0135] According to the above definition, L also takes on values in the range from zero to one. The measure of differences used in Equation Twenty-Three is preferably the sum of the squares of differences between actual output produced by training data, and expected output values associated with training data.  
     [0136] An objective function that combines the normalized expression of the number of near zero weights and the measure of the differences between actual and expected values is:  
       OBJ =(1−λ) L−λF   EQU. 24  
     [0137] in which, λ is a user chosen parameter that determines the relative priority of the sub-objective of minimizing the differences between actual and expected values, and the sub-objective of minimizing the number of weights of significant value. Lambda is preferably chosen in the range of 0.01 to 0.1, and is more preferably approximately equal to 0.05. Too high a value of lambda can lead to reduction of the complexity of the neural network at the expense of its prediction or classification performance, whereas too low of a value can lead to a network that is excessively complex and in some cases prone to over training. Note that the normalized expression of the number of near zero weights F (Equation Twenty-Two) appears with a negative sign in the objective function given in Equation Twenty-Four, so that F serves as a term of the cost function that is dependent on the number of weights of significant value.  
     [0138] The derivative of the expression of the number of near zero weights given Equation Twenty-Two with respect to an ith weight w i  is:  
                 ∂   F       ∂     w   i         =         2      η     K          w   i                 -   η                     w   i   2                   EQU   .              25                       
 
     [0139] and the derivative of the measure of differences between actual and expected values given by Equation Twenty-Three with respect to an ith weight w i  is:  
                 ∂   L       ∂     w   i         =         R   O         (       R   O     +     R   N       )     2              ∂     R   N         ∂     w   i                   EQU   .              26                       
 
     [0140] In evaluating the latter derivative, R O  is treated as a constant.  
     [0141] Adapting the form of the measure of differences between actual and expected values given in Equation Five (i.e., the average of squares of differences) and taking the derivative with respect to the ith weight w i  the following derivative of the objective function of Equation Twenty-Four is obtained:  
                   EQU   .              27     :     
            ∂   OBJ       ∂     w   i           =         (     1   -   λ     )            R   O         (       R   O     +     R   N       )     2            1   N            ∑     q   =   1     N                     
            (         H   m          (     W   ,   V   ,     X   q       )       -     Y   q       )            ∂     H   m         ∂     w   i               +         2                 λ                 η     K          w   i          e       -   η                     w   i   2                    
          where   ,       R   N     =       1     2      N              ∑     k   =   1     N                       (         H   m          (     W   ,   V   ,     X   k       )       -     Y   k       )     2                     EQU   .              28                       
 
     [0142] the summation index q specifies one of N training data sets.  
     [0143] Similarly, by adapting the form of the measure of differences between actual and expected values given in Equation Sixteen, which is appropriate for multi-output neural networks used for regression problems, and taking the derivative with respect to an ith weight w i  the following derivative of the objective function of Equation Twenty-Four is obtained:  
                   EQU   .              29     :     
            ∂   OBJ       ∂     w   i           =         (     1   -   λ     )            R   O         (       R   O     +     R   N       )     2            1   MP            ∑     q   =   1     M          
          (       ∑     i   =   1     P                       (         h   i                     (     W   ,   V   ,     X   q       )       -     Y     q                 i         )            ∂     H   i         ∂     w   i             )         +         2                 λ                 η     K          w   i          e       -   η                     w   i   2                    
          where   ,       R   N     =       1     2      MP              ∑     q   =   1     M          (       ∑     i   =   1     P            (                    h   i          (     W   ,   V   ,     X   q       )       -     Y     q                 t         )     2       )                     EQU   .              30                       
 
     [0144] the summation index q specifies one of M training data sets; and  
     [0145] the summation index t specifies one of P outputs of the neural network.  
     [0146] Also, by adapting the form of the measure of differences between actual and expected values given in Equation Eighteen, which is appropriate for multi-output neural networks used for classification problems, and taking the derivative with respect to an ith weight w i  the following derivative of the objective function of Equation Twenty-Four is obtained:  
                   EQU   .              31     :     
            ∂   OBJ       ∂     w   i           =           2                 λ                 η     K          w   i          e       -   η                     w   i   2           +       (     1   -   λ     )          R       (       R   O     +     R   N       )     2            1   MP                
            ∑     k   =   1     M            ∑     i   =   1     P          [                  (         h   i                     (     W   ,   V   ,     X   k       )       -     Y     k                 i         )               T            H   i                ∂     H   i         ∂     w   i           ]                         where   ,       R   N     =       1     2      MP              ∑     k   =   1     M            ∑     i   =   1     P            (                    h   i          (     W   ,   V   ,     X   k       )       -     Y     k                 i         )     2                       EQU   .              32                       
 
     [0147] Note that in the equations presented above h t , stands for the output of the tth node&#39;s transfer function which is preferably but not necessarily the sigmoid function.  
     [0148] By optimizing the objective functions of which Equations Twenty-Seven, Twenty-Nine and Thirty-One are the required derivatives, and thereafter setting weights below a certain threshold to zero, neural networks that perform well, are less complex and less prone to over training are generally obtained.  
     [0149]FIG. 8 is a flow chart of a process  800  of selecting the number of nodes in neural networks of the types shown in FIGS. 1, 6 according to the preferred embodiment of the invention. The process  800  shown in FIG. 8 seeks to find the minimum number of processing nodes required to achieve a prescribed accuracy. In block  802  a neural network is set up with a number of nodes. The number of nodes can be a number selected at random or a number entered by a user based on the user&#39;s guess as to how many nodes might be required to solve the problem to be solved by the neural network. In block  804  the neural network set up in block  802  is trained until a stopping condition (e.g., the stopping condition described with reference to Equations Thirteen, Fourteen and Fifteen) is realized. The training performed in block  804  and in blocks  810  and  818  discussed below is preferably done according to the process shown in FIG. 7. Block  806  is a decision block, the outcome of which depends on weather the performance of the neural network trained in step  804  is satisfactory. The decision made in block  806  (and those made in blocks  812 , and  820  described below) is preferably an assessment of accuracy based on comparisons of actual output for training data, and expected output associated with the training data. For example, the comparison may be made based on the sum of the squares of differences.  
     [0150] If in block  806  it is determined that performance of neural network is not satisfactory, then in order to try to improve the performance by adding additional processing nodes, the process  800  continues with block  808  in which the number of processing nodes is incremented. The topology of the type shown in FIG. 1 (i.e., a feed-forward sequence of processing nodes) is preferably maintained when incrementing the number of processing nodes. In block  810  the neural network formed in the preceding block  808  by incrementing the number of nodes is trained until the aforementioned stopping condition is met. Next, in block  812  it is ascertained whether or not the performance of the augmented neural network that was formed in block  808  is satisfactory. If the performance is now found to be satisfactory then the process  800  halts. If on the other hand it is found that the performance is still not satisfactory, then the process  800  continues with block  814  in which it is determined if a prescribed node limit has been reached. The node limit is preferably a value set by the user. If it is determined that the node limit has been reached then the process  800  halts. If on the other hand the node limit has not been reached then the process  800  loops back to block  808  in which the number of nodes is again incremented and the thereafter the process continues as described above until either satisfactory performance is attained or the node limit is reached.  
     [0151] If in block  806  it is determined that the performance of the neural network is satisfactory, then in order to try to reduce the complexity of the neural network, the process  800  continues with block  816  in which the number of processing nodes of the neural network is decreased. As before, the type of topology shown in FIG. 1 is preferably maintained when reducing the number of processing nodes. Next in block  818  the neural network formed in the preceding block  816  by decrementing the number of nodes is trained until the aforementioned stopping condition is met. Next, in block  820  it is determined if the performance of the network trained in block  818  is satisfactory. If it is determined that the performance is satisfactory then the process  800  loops back to block  816  in which the number of nodes is again decremented and thereafter the process  800  proceeds as described above. If on the other hand it is determined that the performance is not satisfactory, then the parameters (e.g., weights) of the last satisfactory neural network are saved and the process halts. Rather than halting, as described above, other blocks are alternatively added to the processes shown in FIG. 7 and FIG. 8.  
     [0152] By utilizing the process  800  for finding the minimum number of nodes required to achieve a predetermined accuracy in combination with an objective function that includes a term intended to reduce the number of weights of significant magnitude, reduced complexity neural networks can be realized. Such reduce complexity neural networks can be implemented using less die space, dissipate less power, and are less prone to over-training.  
     [0153] The neural networks having sizes determined by process  800  are implemented in software or hardware.  
     [0154] The processes depicted in FIGS.  7 - 8  are preferably embodied in the form of one or more programs that can be stored on a computer-readable medium which can be used to load the programs into a computer for execution. Programs embodying the invention or portions thereof may be stored on a variety of types of computer readable media including optical disks, hard disk drives, tapes, programmable read only memory chips. Network circuits may also serve temporarily as computer readable media from which programs taught by the present invention are read.  
     [0155]FIG. 9 is a block diagram of a computer  900  used to execute the algorithms shown in FIGS. 7, 8 according to the preferred embodiment of the invention. The computer  900  comprises a microprocessor  902 , Random Access Memory (RAM)  904 , Read Only Memory (ROM)  906 , hard disk drive  908 , display adopter  910 , e.g., a video card, a removable computer readable medium reader  914 , a network adapter  916 , keyboard, and I/O port  920  communicatively coupled through a digital signal bus  926 . A video monitor  912  is electrically coupled to the display adapter  910  for receiving a video signal. A pointing device  922 , preferably a mouse, is electrically coupled to the I/O port  920  for receiving electrical signals generated by user operation of the pointing device  922 . According to one embodiment of the invention, the network adapter  916  is used, to communicatively couple the computer to an external source of training data, and/or programs embodying methods  700 ,  800  such as a remote server. The computer readable medium reader  914  preferably comprises a Compact Disk (CD) drive. A computer readable medium  924  that includes software embodying the algorithms described above with reference to FIGS.  7 - 8  is provided. The software included on the computer readable medium is loaded through the removable computer readable medium reader  914  in order to configure the computer  900  to carry out processes of the current invention that are described above with reference to flow diagrams. The computer  900  may for example comprise a personal computer or a workstation computer.  
     [0156] While the preferred and other embodiments of the invention have been illustrated and described, it will be clear that the invention is not so limited. Numerous modifications, changes, variations, substitutions, and equivalents will occur to those of ordinary skill in the art without departing from the spirit and scope of the present invention as defined by the following claims.