Pruning Divide & Conquer Networks Steve G. Romaniuk Department of Information Systems and Computer Science National University of Singapore 10 Kent Ridge Crescent Singapore 0511 e-mail : stever@iscs.nus.sg Abstract Determining an effective architecture for multi-layer feed forward back propagation neural networks can be a time-consuming effort . In general it requires human intervention in determining the number of layers , number of hidden cells , the learning rule , and the learning parameters . Over the past few years several approaches to dynamically configure neural networks have been proposed , which remove most of the responsibility for chosing the correct network configuration from the user . As important as finding a viable network architecture for some given learning problem , is the need to obtain a minimal configuration . The total time required to emulate or simulate neural networks is largely dependent on the number of connections present in a network . Therefore , it is essential to provide pruning methods to reduce network complexity . In this paper two approaches to network pruning will be investigated : single - and multi-pass pruning . Their effectiveness is emphasized by applying them to several real world problem domains and comparing them to a modification of Optimal Brain Damage . It will be shown that multi-pass pruning is not only fast , but also effective in reducing the network size when used in conjunction with Divide & Conquer learning . Finally , it is general enough to be applied to other dynamically network configuring learning approaches . 1 Introduction to Divide & Conquer Networks In order to use a feed forward backpropagation neural network for learning some domain , several choices must be made . The training set , the network structure in terms of input cells , output cells and hidden cells , the transfer function for hidden and output cells , and the learning rule utilized by the network must each be chosen . The architecture of a network can have a strong impact on what can be learned and how efficient learning will be -LSB- 5 , 6 -RSB- . It is a well known fact , that a two layer network -LRB- input and output -RRB- can not learn the simple exclusive-or function . Normally , the number of hidden cells is determined by making an educated guess , such as , that the number of hidden cells chosen is some fraction of the number of inputs -LSB- 9 -RSB- . If the network does n't converge , either the number of hidden cells is increased , or the learning parameters are adjusted -LRB- fine-tuned -RRB- . Once convergence has occurred one can retro-actively attempt to reduce the number of hidden cells to improve on a networks generalization ability . This can be accomplished using pruning methods as described in -LSB- 15 , 16 , 12 -RSB- . Divide & Conquer networks on the other hand alleviate the user from making most of the above listed choices by dynamically creating a network architecture based upon the domain examples presented during training . Training is accomplished by modifying only the weights of the input links to one cell at any given time . Hence , backpropagation of error through hidden cells is never required simplifying the algorithm and its hardware requirements compared to conventional backpropagation algorithm . The created architecture can have hidden layers with multiple cells located on them , as well as multiple hidden layers . Each newly introduced cell has connections from all cells of previous layers . One output at a time is trained in cell sharing mode , otherwise outputs are trained in parallel . The first cell introduced on a hidden layer is trained on all of the training examples . If it correctly classifies them , the cell will serve as an output . Succeeding cells on a layer will be trained on subsets of the original train set with some -LRB- or all -RRB- of the examples that are correctly recognized omitted from the training set . These subsets are determined by the divide phase of the algorithm . The DCN learning algorithm consists of two major phases ; the divide phase and the conquer phase . The divide and conquer phases are executed individually for each output of the problem space on which training takes place . The objective is to allow each cell in the network to act as a feature detector and correctly classify some of the examples in the training set . Training is done on the connections to one cell at each step . Hence , training is essentially on a many input , one output cell or unit at each stage . The intermediate cells introduced in the divide phase have input connections from all inputs , bias and any intermediate cells on preceding layers . The weights on these connections -LRB- links -RRB- will be trained , with all other connection weights in the existing network frozen . Examples in the current train set are presented and the weights on the input connections are trained using the chosen learning rule for error reduction . After a user set number of epochs1 or error reduction2 stops , training halts with some of the examples or none being correctly classified . Correctly classified examples are removed from the training set . If no examples are correctly classified , one is randomly removed and training resumes on the reduced training set . This removal process continues until at least one example in the train set is correctly learned . The requirement that at least one example be learned by each introduced cell forces them to act as feature detectors for at least one example and hence have a positive contribution to the network . DCN attempts to economize on hidden layers to provide more parallelism for a potential hardware implementation . In -LSB- 18 -RSB- it is show that the general algorithm is effective with different learning rules , including the quickprop rule , the simple delta and perceptron rules . Several real world domains were studied to point out DCN 's generalization capabilities and its ability to determine efficiently sized network structures . Each recruited cell in the network -LRB- other than the original input cells -RRB- serves as a form of feature detector . Therefore , by introducing connections to new cells in the network a form of constructive induction -LRB- of features -RRB- -LSB- 20 -RSB- is taking place . 1.1 Related work Other approaches to dynamically constructing networks are described in -LSB- 14 , 7 , 19 , 21 , 8 , 2 , 10 -RSB- . DCN differs in that it will add cells in multiple hidden layers unlike the algorithms reported by Ash and Hirose , et.al . -LSB- 1 , 13 -RSB- . However , it can readily add multiple nodes on each hidden layer unlike Cascade Correlation -LSB- 6 -RSB- or a modification of it which minimizes connections -LSB- 21 -RSB- . Furthermore , 1300 to 500 epochs were found to be adequate with the quickprop learning rule 2Error reduction is defined as a reduction in the residual mean square error , after training . DCN does not require calculating any correlation measure -LRB- as required for Cascade -RRB- and there is no dependence upon a tree structure as in -LSB- 19 , 8 -RSB- . Only the examples that have not already been correctly classified are required in the incremental training process on a hidden layer . The Upstart algorithm -LSB- 8 -RSB- grows perceptrons that take on the shape of binary trees . It is defined only for binary inputs and outputs . It does have the nice , but limited , feature of provably converging to errors for any boolean classification problem on patterns that contain binary variables . The Extentron algorithm -LSB- 2 -RSB- has many similarities with our method . It uses the simple perceptron learning rule and adds a new layer each time the old layer fails to learn the train set . Each new cell has a connection from all previous cells unless the cell represents a learned output . No new cells are added to the same layer which is similar to Cascade Correlation . In general the Extentron algorithm will tend to grow deeper networks than DCN -LSB- 18 -RSB- . 2 Network Pruning 2.1 Importance of Pruning Clearly , sharing cells and constructing a network in the manner DCN and other network growing algorithms proceed with can lead to a large number of connections for hidden and output cells -LRB- hence referred to as feature cells -RRB- . Not only can the fan-in to every feature cell increase drastically -LRB- as the size of the network increases -RRB- , but the overall network complexity in terms of connections can also grow out of bound . Constraining this excessive growth is eminent both from a hardware and software point of operation , since it will directly effect learning time and classification time during testing . Secondly , it has been pointed out that generalization can improve as a result of network pruning -LSB- 15 -RSB- . Finally , pruning determines the importance of connections in acting as good feature detectors and may help in the knowledge extraction process , which itself is of utter importance if these learning systems are used , for example , as knowledge acquisition tools for expert systems . All three points combined should make it clear why effective pruning of networks is of such importance . -LRB- 1 -RRB- While problem not learned do -LRB- 1 -RRB- Train network . -LRB- 1.1 -RRB- Train new feature . -LRB- 2 -RRB- Prune network . -LRB- 1.2 -RRB- Prune feature . -LRB- 3 -RRB- Possibly re-train network . -LRB- 1.3 -RRB- Possibly re-train feature . -LRB- 1.4 -RRB- Incorporate feature . -LRB- a -RRB- -LRB- b -RRB- Figure 1 : Pruning methodologies -LRB- a -RRB- local and -LRB- b -RRB- global In the following subsections we will detail two new approaches - single - and multi-pass feature pruning , and present a modified approach to the Optimal Brain Damage pruning algorithm -LSB- 15 -RSB- . Empirical results in support of these algorithms are presented in the next section . 2.2 Local Feature Pruning The difference between the here proposed pruning algorithms and earlier approaches is that of local vs. global strategies . Single - and multi-pass pruning is only concerned with removing connections for a single feature cell at a time , it is clearly a local method since the previously constructed part of the network does not influence the pruning method . Furthermore , it applies a greedy strategy to remove connections from individual feature cells . Other pruning strategies -LSB- 15 , 16 , 12 -RSB- - which will be discussed a little later - are global strategies . First , the network is constructed -LRB- either by hand or by some algorithm -RRB- , then pruning is applied to the whole network . This in general requires additional second order information , since a dependence between layers of hidden cells and output cells will exist . These dependencies need to be taken into account to guarantee an efficient pruning algorithm . Figure 1 displays both the local and global approach to network pruning . In some cases the line between local and global pruning may be blurred . For example , it is conceivable , that several features may be created and incorporated into the network before pruning is applied , after which a new phase of network construction may be initiated . In case of pre-determined -LRB- handcrafted -RRB- networks , pruning may be applied after the overall error has been reduced by some percentage amount -LRB- from the previous error -RRB- before pruning proceeds , after which the overall network error is measured again , and either the network is further trained or not . In dynamic network construction algorithms , local methods have some clear benefits over their global counterparts . First of all , pruning is only restricted to a single feature at any time , eliminating the effects of dependence between cells -LRB- features -RRB- over multiple layers . Secondly , pruning -LRB- abstraction -RRB- is made at the earliest possible point in time , - during training . This allows simpler features to be incorporated during the continued network construction process . This in turn can have positive effects on the final network structure and training time . We next outline two approaches to local feature pruning . 2.2.1 Single-pass Pruning The first approach to local pruning is the single-pass approach . A formal description of the algorithm is given in Figure 2 . The essence of single-pass pruning is to identify for every pattern Ik in the training set TT rain , which is correctly identified by the current feature Fi , those connections that are essential for the patterns ' correct recognition -LRB- Step 2 -RRB- . After all patterns have been presented , the connections of feature Fi which are not considered essential for recognizing any of the presented patterns , are then removed -LRB- Step 3 -RRB- . The decision , which connections to consider important for recognizing pattern Ik , is made by associating a significance measure Si ; j with every connection Ci ; j of feature Fi . The significance measure is calculated by forming the product of a connections ' weight and the corresponding input applied to that connection -LRB- Step 2.2.1 -RRB- . The motivation for the choice of the significance measure is given by the initial goal : To identify those connections that are essential for correctly recognizing pattern Ik . Now , by maintaining 2 lists of significance measures - sorted by decreasing magnitude into excitatory -LRB- L + -RRB- and inhibitory -LRB- L ? -RRB- lists - we can readily determine which connections are essential -LRB- Steps 2.2.2 - 2.2.4 -RRB- . Assume for the moment the case in which the output of pattern Ik is positive -LRB- Step 2.2.6 -RRB- . By maintaining a running sum -LRB- Sum -RRB- of the features ' activation -LRB- initialized to zero in Step 2.2.5 -RRB- , it is possible to determine which connections are essential for the recognition of pattern Ik . We have to distinguish between 2 cases : First , the output of the running sum -LRB- O -LRB- Sum -RRB- -RRB- is below the firing threshold ffiSingle of feature Fi -LRB- Step 2.2.6.1.2 -RRB- . This requires that the connection with the largest positive significance is considered an essential connection and its degree of significance is added to the running sum -LRB- Steps 2.2.6.1.2.1 - 2.2.6.1.2.2 -RRB- . Since the connection has been deemed essential it is removed from the list L + -LRB- Step 2.2.6.1.2.3 -RRB- and the status of the connection is appropriately updated -LRB- Step 2.2.6.1.2.4 -RRB- . For the second case , we assume that the output of the running sum is equal to or above the firing threshold of feature Fi -LRB- Step 2.2.6.1.1 -RRB- . Since the current output of the running sum corresponds to the desired output of pattern Ik , the connection with the largest negative significance is considered from list L ? , its significance is added to the running sum and it itself removed from the list -LRB- Steps 2.2.6.1.1.1 - 2.2.6.1.1.3 -RRB- . The process of successively adding the significance values of connections back to the running sum is continued , until either of the 2 lists L + or L ? are empty -LRB- Step 2.2.6.1 -RRB- . Consequently , if the output of the running sum is below the firing threshold of feature Fi additional connections with positive significance values are added to the running sum from L + -LRB- Step 2.2.6.2 -RRB- . Analogously , the case for negative output of pattern Ik is handled in -LRB- Step 2.2.7 -RRB- . The roles of L + and L ? are simply reversed . One final note : The just described single-pass pruning algorithm -LRB- by its very nature -RRB- guarantees that the pruned feature correctly recognizes all those patterns Ik 2 TT rain that the original feature recognizes . It is also conceivable that additional patterns are recognized , therefore the recognition rate of a pruned feature may actually improve . Finally , the approach is greedy since it tries to minimize the connections required by a given feature for one single training pattern at a time . The time complexity of this algorithm clearly lies in step -LRB- 2.2.4 -RRB- , which requires sorting of two lists of features . Since , sorting can be done in n ? log -LRB- n -RRB- time and under worst case condition all patterns may have to be recognized by the current feature Fi , the worst case time complexity is , OW orst -LRB- N ; K -RRB- = N ? -LRB- k1 ? log -LRB- k1 -RRB- + k2 ? log -LRB- k2 -RRB- -RRB- -LRB- 1 -RRB- Here , k1 = jL + j and k2 = jL?j . 2.2.2 Multi-pass Pruning Multi-pass pruning is similar to single-pass pruning , except that at every stage at which a connection is returned -LRB- deemed important -RRB- , the decision which connection to select is made by presenting all training patterns over again . In single-pass pruning training patterns are presented only once after which the new feature is constructed . A high level algorithmic description is presented in Figure 3 . At the heart of this algorithm is the desire to successively identify connections from the original feature Fi , which have the largest impact on recognizing training examples Ik 2 TT rain . To accomplish this feat , a copy of the original weight vector is maintained in OriginalWi for feature Fi , along with a binary importance measure I -LRB- Ci ; k -RRB- and an importance count IC -LRB- Ci ; k -RRB- of every connection Ci ; k. Initially , the importance measure is set to false for every connection , the weight vector of the current feature is saved and then zeroed out -LRB- Step 2 , MULT I PASS PRUNING -RRB- . The purpose of the zeroing out is to emphasize that initially all connections are deemed unimportant . Now , as long as the new feature does not correctly recognize those training examples in TT rain , which the original feature Fi did , each connection weight stored in OriginalWi is considered a potential candidate for inclusion into the new feature . To decide which connection to select , requires measuring the connections ' importance in maximizing the recognition rate of training patterns Ik 2 TT rain . The function UPDATE CONNECT ION determines from all connections not yet deemed important of the original feature Fi , those that best reduce the error difference between the actual and desired output -LRB- ffl -RRB- for the training pattern Ik currently under consideration . Legend : Fi : ith feature cell : Ik : kth training example : TT rain : set of training examples : Ci ; k : kth connection of ith feature cell : Wi ; k : associated kth connection weight for ith feature cell : OriginalWi ; k : original kth weight for ith feature : L + : list of excitatory -LRB- positive -RRB- links : L ? : list of inhibitory -LRB- negative -RRB- links : Oi -LRB- Ik -RRB- : output for ith feature cell for training example Ik : Ai : cell activation for ith feature cell : I -LRB- Ci ; k -RRB- : importance of kth connection for feature cell Fi -LRB- Boolean value -RRB- : D -LRB- Ik -RRB- : desired output for training example Ik : Si ; j : significance of jth connection for ith feature cell : ffiSingle : upper threshold for firing of cell -LRB- single ? pass pruning -RRB- : ffiMulti : maximum absolute error difference allowed between feature Fi and the desired output for example Ik : O -LRB- a -RRB- : output transfer function for activation a : IC -LRB- Ci ; k -RRB- : importance count of kth connection of ith feature cell Fi : ffl : absolute error difference between output of feature Fi and the desired output after returning one weight from OriginalWi : fflmin : smallest ffl after returning one weight from OriginalWi : -LRB- 2 -RRB- The connection which delivers the smallest error difference ffl has its importance count incremented -LRB- Step 2 , UPDATE CONNECT ION -RRB- . Finally , after one iteration of the loop in -LRB- 1 -RRB- For all Ci ; k of Feature Fi do -LRB- 1.1 -RRB- I -LRB- Ci ; k -RRB- = FALSE -LRB- 2 -RRB- For all training examples Ik 2 TT rain do -LRB- 2.1 -RRB- Perform single forward pass of network on example Ik . -LRB- 2.2 -RRB- If Oi -LRB- Ik -RRB- = D -LRB- Ik -RRB- then -LRB- 2.2.1 -RRB- For all Ci ; j do Si ; j = Wi ; j ? Oj -LRB- Ik -RRB- -LRB- 2.2.2 -RRB- L + = fSi ; jk8j ; Si ; j > g -LRB- 2.2.3 -RRB- L ? = fSi ; jk8j ; Si ; j < = g -LRB- 2.2.4 -RRB- Sort L + and L ? by decreasing magnitude . -LRB- 2.2.5 -RRB- Sum = . -LRB- 2.2.6 -RRB- If Oi -LRB- Ik -RRB- > = ffiSingle -LRB- 2.2.6.1 -RRB- While L + ^ L ? not empty do -LRB- 2.2.6.1.1 -RRB- If O -LRB- Sum -RRB- > = ffiSingle then -LRB- 2.2.6.1.1.1 -RRB- Si ; jmax = max8l -LRB- L ? -RRB- -LRB- 2.2.6.1.1.2 -RRB- Sum = Sum + Wi ; jmax ? Ojmax -LRB- Ik -RRB- -LRB- 2.2.6.1.1.3 -RRB- L ? = L ? ? fSi ; jmaxg -LRB- 2.2.6.1.2 -RRB- Else -LRB- 2.2.6.1.2.1 -RRB- Si ; jmax = max8l -LRB- L + -RRB- -LRB- 2.2.6.1.2.2 -RRB- Sum = Sum + Wi ; jmax ? Ojmax -LRB- Ik -RRB- -LRB- 2.2.6.1.2.3 -RRB- L + = L + ? fSi ; jmaxg -LRB- 2.2.6.1.2.4 -RRB- I -LRB- Ci ; jmax -RRB- = TRUE -LRB- 2.2.6.2 -RRB- For all Si ; j 2 L + ^ O -LRB- Sum -RRB- < ffiSingle do -LRB- 2.2.6.2.1 -RRB- Sum = Sum + Wi ; j ? Oj -LRB- Ik -RRB- -LRB- 2.2.6.2.2 -RRB- L + = L + ? fSi ; jg -LRB- 2.2.6.2.3 -RRB- I -LRB- Ci ; j -RRB- = TRUE -LRB- 2.2.7 -RRB- If Oi -LRB- Ik -RRB- < = -LRB- 1 ? ffiSingle -RRB- -LRB- 2.2.7.1 -RRB- While L + ^ L ? not empty do -LRB- 2.2.7.1.1 -RRB- If O -LRB- Sum -RRB- < = -LRB- 1 ? ffiSingle -RRB- then -LRB- 2.2.7.1.1.1 -RRB- Si ; jmax = max8l -LRB- L + -RRB- -LRB- 2.2.7.1.1.2 -RRB- Sum = Sum + Wi ; jmax ? Ojmax -LRB- Ik -RRB- -LRB- 2.2.7.1.1.3 -RRB- L + = L + ? fSi ; jmaxg -LRB- 2.2.7.1.2 -RRB- Else -LRB- 2.2.7.1.2.1 -RRB- Si ; jmax = max8l -LRB- L ? -RRB- -LRB- 2.2.7.1.2.2 -RRB- Sum = Sum + Wi ; jmax ? Ojmax -LRB- Ik -RRB- -LRB- 2.2.7.1.2.3 -RRB- L ? = L ? ? fSi ; jmaxg -LRB- 2.2.7.1.2.4 -RRB- I -LRB- Ci ; jmax -RRB- = TRUE -LRB- 2.2.7.2 -RRB- For all Si ; j 2 L ? ^ O -LRB- Sum -RRB- > = ffisingle do -LRB- 2.2.7.2.1 -RRB- Sum = Sum + Wi ; j ? Oj -LRB- Ik -RRB- -LRB- 2.2.7.2.2 -RRB- L ? = L ? ? fSi ; jg -LRB- 2.2.7.2.3 -RRB- I -LRB- Ci ; j -RRB- = TRUE -LRB- 3 -RRB- For all Wi ; k of Feature Fi do -LRB- 3.1 -RRB- If I -LRB- Ci ; k -RRB- = FALSE then -LRB- 3.1.1 -RRB- Remove connection Ci ; k from Feature Fi . Figure 2 : Single-pass connection pruning algorithm step 3 of MULT I PASS PRUNING the connection with the highest importance count is returned -LRB- Step 3.3 -RRB- by having its original weight copied back into Wi -LRB- Function RETURN BEST LINK -RRB- . The loop in Step 3 is executed until all patterns recognized by the original feature -LRB- Step 3.2.2 -RRB- are also recognized by the new feature . The process is guaranteed to come to an halt , after all -LRB- initially -RRB- deemed unimportant connections have their status changed to important . Thus , the maximum number of iterations -LRB- or passes -RRB- required is bounded by K , the number of connections to the current feature Fi . Multi-pass pruning can be considered a bottom-up approach in that connections are selected based on their importance in minimizing the error difference between current feature output and desired output . This stands in contrast to other pruning approaches , which apply a top-down approach . Here , one or more connections are pruned from the set of all connections . In the next subsection an example of a top-down pruning approach is presented which utilizes the Optimal Brain Damage algorithm -LSB- 15 -RSB- . It is noteworthy to point out , that the multi-pass approach does not require sorting of connections , as does single-pass and the still to be described OBD method . This is an important issue , if hardware needs to be designed to implement the various pruning methods . If we assume - in accordance with the previous complexity analysis - that the subset under consideration encompasses all training patterns , then we can conclude : OW orst -LRB- N ; K -RRB- = N ? K2 : -LRB- 3 -RRB- Here , the first K is due to the complexity of the UPDATE CONNECT ION routine which requires comparing all K connections of feature Fi . The second K stems from the loop labeled step -LRB- 3 -RRB- , which under worst case condition requires a total of K connections to be considered . We can state the remaining time complexity cases as follows : OBest -LRB- N ; K -RRB- = N ? K : -LRB- 4 -RRB- Here , we assume that the loop in step -LRB- 3 -RRB- is only executed once . In other words only one connection is deemed important for feature Fi . The average time complexity then simply is , OAvg -LRB- N ; K -RRB- = PKi = 1 N ? K ? i K = N ? KX i = 1 i = N ? -LRB- K2 + K -RRB- 2 : -LRB- 5 -RRB- 3 Related Work Past approaches to network pruning have attempted to trade of training error and network complexity . This is in general accomplished by minimizing a cost function , which takes both training error and measure of network complexity into account . Schemes based on statistical methods are described in -LSB- 24 , 17 -RSB- , those based on neural methods can be found in -LSB- 11 , 16 -RSB- . In -LSB- 23 , 17 -RSB- different complexity measures are pointed out and their effectiveness discussed . Simple pruning schemes are similar to the single-pass pruning method in that they initially train a network and then remove some connections with small overall weights . After deletion of connections the network may be retrained . The process can be repeated thereafter . Methods that are based on gatting coefficients are described in -LSB- 16 -RSB- . OBDs basic assumption is that magnitude -LRB- of weight -RRB- is not indicative of a weights saliency . Instead second derivatives of the objective function with respect to the networks connections are used to compute the saliencies . In order to curb the amount of work required to compute the saliency the objective function is approximated by a Taylor series . The assumption is , that the diagonals of the Hessian matrix are dominant with respect to the off-diagonal elements . This assumption has been challenged recently by Hassibi amd Stork -LSB- 12 -RSB- . For several MONKs problems -LSB- 22 -RSB- studied , they observed that typically many off-diagonal elements of the Hessian matrix are comparable to their diagonal counterparts . By utilizing the off-diagonal information their OBS -LRB- Optimal Brain Surgeon -RRB- algorithm improves on results obtained by OBD . OBS , besides relying on the same second oder information as OBD and pruning off redundant weights , also changes the strength of other weights . Clearly , the OBS and the OBD approach used in this study are top-down approaches to MULTI PASS PRUNING -LRB- -RRB- : -LRB- 1 -RRB- OK = FALSE -LRB- 2 -RRB- For all Ci ; j of Feature Fi do -LRB- 2.1 -RRB- I -LRB- Ci ; j -RRB- = FALSE -LRB- 2.2 -RRB- OriginalWi ; j = Wi ; j -LRB- 2.3 -RRB- Wi ; j = -LRB- 3 -RRB- While : OK do -LRB- 3.1 -RRB- OK = TRUE -LRB- 3.2 -RRB- For all Ik 2 TT rain do -LRB- 3.2.1 -RRB- Perform single feedforward pass . -LRB- 3.2.2 -RRB- If kOi -LRB- Ik -RRB- ? D -LRB- Ik -RRB- k > ffiMulti then -LRB- 2.3.2.1 -RRB- UPDATE CONNECT ION -LRB- -RRB- -LRB- 2.3.2.1 -RRB- OK = FALSE -LRB- 3.3 -RRB- If : OK then -LRB- 3.3.1 -RRB- RETURN BEST LINK -LRB- -RRB- UPDATE CONNECTION -LRB- -RRB- : -LRB- 1 -RRB- For all Ci ; j of Feature Fi do -LRB- 1.1 -RRB- If Wi ; j = then -LRB- 1.1.1 -RRB- ffl = kO -LRB- Ai + OriginalWi ; j ? Oj -LRB- Ik -RRB- -RRB- ? D -LRB- Ik -RRB- k -LRB- 1.1.2 -RRB- If ffl < fflmin then -LRB- 1.1.2.1 -RRB- fflmin = ffl -LRB- 1.1.2.2 -RRB- InputBest = j -LRB- 2 -RRB- Increment IC -LRB- Ci ; InputBest -RRB- RETURN BEST LINK -LRB- -RRB- : -LRB- 1 -RRB- For all Ci ; j of Feature Fi do -LRB- 1.1 -RRB- If Wi ; j = ^ IC -LRB- Ci ; j -RRB- > ICMax then -LRB- 1.1.1 -RRB- ICMax = IC -LRB- Ci ; j -RRB- -LRB- 1.1.2 -RRB- jmax = j -LRB- 2 -RRB- I -LRB- Ci ; jmax -RRB- = TRUE -LRB- 3 -RRB- Wi ; jmax = OriginalWi ; jmax Figure 3 : Multi-pass connection pruning algorithm -LRB- 1 -RRB- Choose reasonable network architecture -LRB- 2 -RRB- While network response not correct do -LRB- 2.1 -RRB- Compute second derivatives for connections -LRB- 2.2 -RRB- Compute saliencies for connections -LRB- 2.3 -RRB- Sort connections by saliency and delete some low-saliency connections Figure 4 : Optimal Brain Damage pruning algorithm pruning , since low-saliency connections are removed rather than important features returned as in case of the multi-pass approach . Finally , it is important to point out that OBD as well as the improved OBS method require the existence of first and second order derivatives of the transfer function . No such requirement is necessary for the single - and multi-pass method . Next , an outline of the modified OBD algorithm is presented . 3.1 Modified Optimal Brain Damage In this subsection we present a modification to the original Optimal Brain Damage pruning algorithm proposed in -LSB- 15 -RSB- . In Figure 4 we replicate the original high-level code . The modification to the OBD algorithm occurs in step -LRB- 2.3 -RRB- . In -LSB- 15 -RSB- Le Cun gives no guide to how many connections should be removed -LRB- how much is some -RRB- and what constitutes a lowsaliency connection . In order to apply the OBD algorithm as a local method towards feature pruning , it was deemed important to automate the determination of low-saliency connections and their removal . In order to exploit the highest possible degree of pruning by OBD , the decision to remove connections -LRB- step -LRB- 2.3 -RRB- -RRB- was modified such that only one connection -LRB- the one with the lowest saliency -RRB- was removed at any one time . As a result of this restriction , the actual run time would increase drastically , compared to the single - and multi-pass approaches . This is mainly due to the repeated calculation of the saliency parameter and possible re-training of the network . Figure 5 contains the modified OBD algorithm . Using the procedure PRUNE OBD -LRB- -RRB- a single connection is removed , after which the feature is tested on all training patterns in order to determine its Current Error . If the Current Feature Error is larger than the error committed prior to pruning , feature Fi is re-trained for a fixed number of epochs 3 . Otherwise , a new connection is removed by PRUNE OBD -LRB- -RRB- . If after re-training the Current Feature Error is still larger than the Original Error , the removed connection is re-introduced and the pruning process aborted . Assuming that the basic operation performed by the modified OBD and the multi-pass algorithm is the same , allows to compare its time complexity against the multi-pass method . Under worst case condition the procedure PRUNE OBD -LRB- -RRB- is called N times . The majority of work is spent in sorting the list of saliencies . We can conclude , OW orst -LRB- N ; K -RRB- = K ? -LRB- N + K ? log -LRB- K -RRB- -RRB- : -LRB- 6 -RRB- In order to compare OBD to multi-pass pruning we have to consider three cases : 1 . N >> K : Both algorithms have same complexity . 2 . K >> N : OBD has higher complexity . 3 . K = N : Multi-pass has higher complexity . Since the first case is more likely , we can conclude both approaches have equal time complexity under the assumption that the basic operation performed by the two algorithms is the same . Actually , the modified OBD algorithm requires that during every execution of step -LRB- 1.3.1 -RRB- feature 3Fixed at 2000 Epochs Table 1 : Description of domains Domain #Classes #Feature Type CME Examples Harris 28 25 Nominal No 828 LED 10 24 Binary Yes 400 Shuttle 2 20 Binary Yes 15 Soybean 17 208 Binary Yes 289 Vote 2 16 Binary Yes 435 Tank 2 256 Binary Yes 157 XOR 2 2 Binary Yes 4 Fi be re-trained . This in conjunction with the more complicated basic operation of calculating the first and second derivative of the feature 's cell activation -LRB- use of exponential function -RRB- leads to a significant time increase over the multi-pass algorithm . For the experiments - presented in the next section - this resulted in a time increase of about a magnitude or more in total training time . 4 Empirical Results To provide an account of the effectiveness of local pruning methods several real world classificatory domains were investigated . The selected domains differ in their respective size , their mix of binary and nominal inputs , the number of output classes , and outputs being mutually-exclusive -LRB- CME -RRB- . In Table 1 a brief summary of some of the more important properties describing the domains is provided . The domains include one for waifer fault diagnosis -LRB- Harris -RRB- , an LED display , controlling a shuttle , diagnosing soybean diseases , determining voting habits , and classifying 2 tanks . In Table 2 the results for using the perceptron rule in conjunction with threshold cells is shown for no-pruning , single-pass , and multi-pass pruning 4 . Note , the absence of the modified OBD 4Single - and multi-pass pruning post-train a pruned feature for at most 2000 epochs MODIFIED OBD -LRB- -RRB- : -LRB- 1 -RRB- While TRUE do -LRB- 1.1 -RRB- 8j ; OriginalWi ; j = Wi ; j -LRB- 1.2 -RRB- PRUNE OBD -LRB- -RRB- -LRB- 1.3 -RRB- If Current Feature Error > Original Feature Error then -LRB- 1.3.1 -RRB- Re-train feature Fi -LRB- 1.3.2 -RRB- If Current Feature Error > Original Feature Error then -LRB- 1.3.2.1 -RRB- 8j ; Wi ; j = OriginalWi ; j -LRB- 1.3.2.2 -RRB- Exit PRUNE OBD -LRB- -RRB- : -LRB- 1 -RRB- For all Ik 2 TT rain do -LRB- 1.1 -RRB- If kOi -LRB- Ik -RRB- ? D -LRB- Ik -RRB- k < = ffiMulti then -LRB- 1.1.1 -RRB- Perform single feedforward pass . -LRB- 1.1.2 -RRB- For all Ci ; j of Feature Fi do -LRB- 1.1.2.1 -RRB- f A = ? e?Ai -LRB- 1.1.2.2 -RRB- f 00A = e?Ai -LRB- 1.1.2.3 -RRB- h = 2 ? f 2A ? 2 ? -LRB- Ai ? Oi -LRB- Ik -RRB- -RRB- ? f 00A -LRB- 1.1.2.4 -RRB- Sj = Sj + h ? Oj -LRB- Ik -RRB- 2 -LRB- 2 -RRB- For all Ci ; j of Feature Fi do -LRB- 2.1 -RRB- Sj = Sj?W 2i ; j 2 ? K -LRB- 3 -RRB- Sort S in decreasing order . -LRB- 4 -RRB- Remove connection with smallest salience S. Figure 5 : Modified Optimal Brain Damage pruning algorithm algorithm due to the fact that it requires the existence of the first and second order derivatives of the transfer function . Also note the fact , that the number of hidden units is not included , since pruning vs. no-pruning had in almost all cases no affect on the number of hidden units created by the different methods . In case of the XOR and the Shuttle domain 100 trial runs were conducted . For all other domains this number was restricted to 10 . Therefore , the numbers listed in the following tables represent average values . The first entry for the pruning algorithms represents the number of connections left after pruning , whereas the second relates the relative percentage of savings in connections , with respect to the number of connections obtained by the no-pruning approach . As we can glean from Table 2 , in most cases the multi-pass method outperforms the single-pass method . In those cases were the roles are reversed the amount of difference is insignificant -LRB- less than 7 % -RRB- . Changing the learning rule to the incremental delta rule has very little effect on the performance of the multi-pass approach -LRB- Table 3 -RRB- . For several domains -LRB- 6 to be exact -RRB- the number of connections generated by the no-prune method were identical to the ones created when using the perceptron rule . For the remaining domains the increase of connections is more or less offset by the increase in removed connections . Except for the Voting domain the results obtained using the perceptron rule remained the same for the incremental delta rule . In Table 4 we show the results for using the perceptron rule in conjunction with the sigmoid transfer function . Since the sigmoid function is twice differentiable it is possible to apply the modified OBD algorithm . Except for the LED and the XOR domain , multi-pass performs better than the modified OBD method . In case of the LED domain the difference is insignificant , whereas for the XOR domain the actual number of connections removed is only one . More importantly , very high rates of connection pruning are obtained for domains such as Harris , Soybean , and both Tanks . These domains have a very high initial dimensionality , which is drastically reduced by the multi-pass method over the other two approaches . This is an important finding since these domains represent real world data used in typical machine learning experiments , as opposed to results based on artificially generated toy problems . Another interesting Table 2 : Connection savings using Perceptron Rule with Threshold Unit Domain No Pruning Single-Pass Multi-Pass Harris 5306 2166.8 / 59.2 % 1087.4 / 79.5 % LED 416.8 413/0 .9 % 319.4 / 23.4 % Shuttle 21 12.15 / 42.1 % 9.76 / 53.5 % Soybean 3689 2014.3 / 45.4 % 459.3 / 87.5 % Vote 141 112/20 .5 % 100.9 / 28.4 % XOR 11 6.56 / 40.4 % 7.19 / 34.6 % Tank1 515 399/22 .5 % 406.6 / 21.0 % Tank2 515 399/22 .5 % 258.9 / 49.7 % Table 3 : Connection savings using Incremental Delta Rule with Threshold Unit Domain No Pruning Single-Pass Multi-Pass Harris 5306 2166.8 / 59.2 % 1087.4 / 79.5 % LED 454.6 423.4 / 6.9 % 307.6 / 32.3 % Shuttle 21 12.15 / 42.1 % 10.29 / 51.0 % Soybean 3689 2046.9 / 44.5 % 459.3 / 87.5 % Vote 179.8 117.3 / 34.8 % 121.5 / 32.4 % XOR 11 6.64 / 39.6 % 7.44 / 32.4 % Tank1 515 382.1 / 25.8 % 406.6 / 21.0 % Tank2 515 399/22 .5 % 258.9 / 49.7 % Table 4 : Connection savings using Perceptron Rule with Sigmoid Unit Name No-Prune Single-Pass Multi-Pass OBD Harris 5714 1844.2 / 67.7 % 839.9 / 85.3 % 1780.9 / 68.8 % LED 591.2 462.7 / 21.7 % 320/45 .9 % 304/48 .6 % Shuttle 21 18.95 / 9.8 % 8.05 / 61.7 % 18.06 / 14 % Soybean 3689 1652.1 / 55.2 % 195.7 / 94.7 % 1131.4 / 69.3 % Vote 311.6 184.8 / 40.7 % 116.8 / 62.5 % 145.8 / 53.2 % XOR 10.36 8.14 / 21.4 % 8.05 / 22.3 % 7/32 .4 % Tank1 515 515/0 .0 % 51/90 .1 % 362/29 .7 % Tank2 515 362.5 / 29.6 % 145.1 / 71.8 % 352/21 .7 % observation that can be gleaned from Table 4 is the absolute increase in connection savings for the multi-pass method when moving from threshold cells to sigmoid cells . For four of the eight domains a substantial decrease in connections is due to the change in transfer function . This behavior can not be observed for the single-pass approach . To summarize the found results , it is clear -LRB- at least from the domains studied here -RRB- that multi-pass pruning can be a very effective tool in pruning networks locally during the network construction phase . Its time complexity was shown to be at least equivalent to that of modified OBD , even though the actual run time was substantially lower for the multi-pass algorithm . Both findings should be interpreted as positive signs for continued usage of the multi-pass method . Its versatility allows it to be incorporated into many other approaches that automatically construct networks . 5 Summary This paper presented two new approaches to network pruning for learning systems which develop their own network architecture dependent on the set of patterns presented for training . The divide and conquer technique was chosen as one possible network growing approach for which these pruning methods can be utilized . Other dynamic network configuring algorithms such as -LSB- 1 , 2 , 6 , 8 , 13 , 19 -RSB- can be modified to incorporate the herein described pruning algorithms . Pruning is important for network growing algorithms for three reasons : 1 . Reduction in overall network complexity and cell fan-in . 2 . Generalization can improve classification accuracy . 3 . First step towards knowledge extraction . It was also pointed out how local pruning can be more advantageous than global pruning methods . Here local refers to single feature pruning which occurs hand in hand with the network construction algorithm . Global methods on the other hand require an initial network structure to be created , which is trained before pruning is applied . Two directly related advantages can be identified : 1 . Reduction in training time , since every new feature introduced by the network growing algorithm is pruned -LRB- simplified -RRB- . 2 . Creation of more succinct features during training as a result of early pruning . May lead to quicker overall solutions for a correct network architecture . Three methods were presented : Single - and multi-pass pruning are new approaches , whereas the third approach is a modification of the Optimal Brain Damage algorithm . In single-pass pruning , two sets of inhibitory and excitatory connections are used to minimize the number of connections required for a given feature -LRB- cell -RRB- for one training pattern at a time . Connections which are not required by all training patterns are deemed unimportant and removed . The time complexity of this approach is linear in the number of training patterns and of order K ? log -LRB- K -RRB- for the number of incoming connections to a feature . The multi-pass pruning algorithm is a bottom-up approach . Instead of removing connections -LRB- top-down approach -RRB- connections are returned one at a time depending on their overall quality in minimizing the error between current cell activation and desired output for a set of training patterns . Connections are returned in this manner , until all patterns are correctly recognized by the feature . The time complexity of this approach is linear in the number of patterns and quadratic in the number of incoming connections -LRB- Assuming worst case scenario -RRB- . In general , this approach is simpler than the singlepass and the modified OBD method due to the fact , that no sorting of either connections or saliencies of connections is required . This allows for a simpler hardware implementation in the future . The empirical results strongly suggest that the multi-pass approach is well suited for network growing algorithms compared to the other two methods . Higher rates in connection savings - especially for problems of high dimensionality - paired with significantly faster execution times , make it a worthwhile candidate for this type of network pruning . Based on the obtained positive results , it is advisable to further study its performance on real world applications and in conjunction with other network growing algorithms . References -LSB- 1 -RSB- Ash , T. -LRB- 1989 -RRB- . Dynamic Node Creation in Backpropagation Networks . -LRB- Tech . Report ICS Report 8901 -RRB- , Inst . for Cognitive Science , University of California , San Diego , La Jolla , Ca . -LSB- 2 -RSB- Baffes , P.T. and Zelle , J.M -LRB- 1992 -RRB- . Growing Layers of Perceptrons : Introducing the Extentron Algorithm , Proceedings of the 1992 International Joint Conference on Neural Networks -LRB- pp . II-392 - II-397 -RRB- , Baltimore , MD. , June . -LSB- 3 -RSB- Beale , R. and Jackson , T. -LRB- 1991 -RRB- , Neural Computing : An Introduction , IOP Publishing Ltd. , N.Y. , N.Y. -LSB- 4 -RSB- Chandrasekaran , B. , Goel , A. , Allemang , D. , -LRB- 1988 -RRB- . Connectionism and Information - Processing Abstractions . AI Magazine , Winter . -LSB- 5 -RSB- Fahlman , S.E. -LRB- 1988 -RRB- . Faster-Learning Variations on Back-Propagation : An Empirical Study . Proceedings of the 1988 Connectionist Models Summer School , San Mateo , CA. : Morgan Kaufmann . -LSB- 6 -RSB- Fahlman , S.E. and Lebiere , C. -LRB- 1990 -RRB- . The Cascade-Correlation Learning Architecture , In D. Touretzky -LRB- Ed . -RRB- , Advances in Neural Information Processing Systems 2 -LRB- pp. 524 - 532 -RRB- . San Mateo , CA. : Morgan Kaufmann . -LSB- 7 -RSB- Feldman , J. A. -LRB- 1982 -RRB- . Dynamic Connections in Neural Networks . Biological Cybernetics , 46 . -LSB- 8 -RSB- Frean , M. -LRB- 1991 -RRB- . The Upstart Algorithm : A Method for Constructing and Training FeedForward Neural Networks , Neural Computation , 2 , 198-209 . -LSB- 9 -RSB- Freeman , J.A. and Skapura , D.M. -LRB- 1991 -RRB- . Neural Networks , Algorithms , Applications and Programming Techniques . Reading , MA. : Addison-Wesley . -LSB- 10 -RSB- Hall , L.O. and Romaniuk , S.G. -LRB- 1990 -RRB- . A Hybrid Connectionist , Symbolic Learning System , AAAI-90 , Boston , Ma . -LSB- 11 -RSB- Hanson , S.J. , Pratt , L.Y. -LRB- 1989 -RRB- Some Comparisons of Constraints for Minimal Network Construction with Back-Propagation . In Touretzky , D. , editor , Neural Information processing Systems , Vol . 1 , Denver , Morgan Kaufmann . -LSB- 12 -RSB- Hassibi , B. , Stork , D. -LRB- 1992 -RRB- Second Order Derivatives for Network Pruning : Optimal Brain Surgeon . In Neural Information Processing Systems , Denver , Morgan Kaufmann . -LSB- 13 -RSB- Hirose , Y. , Koichi , Y. and Hijiya , S. -LRB- 1991 -RRB- . Back-Propagation Algorithm Which Varies the Number of Hidden Units . Neural Networks , 4 , pp. 61-66 . -LSB- 14 -RSB- Honavar , V and Uhr , L. -LRB- 1988 -RRB- . A Network of Neuron-like units that learns to perceive by generation as well as reweighting of its links . Proceedings of the Connectionist Summer School , San Mateo , CA. : Morgan Kaufman . -LSB- 15 -RSB- Le Cun , Y. , Denker , J.S. and Solla , S.A. -LRB- 1990 -RRB- . Optimal Brain Damage . Information Processing Systems 2 -LRB- 598-605 -RRB- , San Mateo , Ca. : Morgan Kaufman . -LSB- 16 -RSB- Mozer , M.C. and Smolensky , P. -LRB- 1989 -RRB- . Skeletonization : A Technique for trimming the Fat from a Network via Relevance Assessment . In Touretzky , D. -LRB- ed . -RRB- , Neural Information Processing Systems , 1 , Denver ; San Mateo , CA. : Morgan Kaufman . -LSB- 17 -RSB- Rissanen , J. -LRB- 1989 -RRB- Stochastic Complexity in Statistical Inquiry . World Scientific , Singapore . -LSB- 18 -RSB- Romaniuk , S.G. , Hall , L.O. -LRB- 1992 -RRB- Divide and Conquer Networks . Under review by Neural Networks Journal . -LSB- 19 -RSB- Sanger , T.D. -LRB- 1991 -RRB- . A Tree-structured Adaptive Network for Function Approximation in High Dimensional Spaces . IEEE Transactions on Neural Networks , V. 2 , No. 2 , pp. 285-293 . -LSB- 20 -RSB- Shavlik , J.W. , Dietterich , T.G. -LRB- 1990 -RRB- Readings in Machine Learning . San Mateo , CA : Morgan Kaufmann . -LSB- 21 -RSB- Smotroff , I.G. , Friedman , D.H. and Connolly , D. -LRB- 1991 -RRB- . Self Organizing Modular Neural Networks . International Joint Conference on Neural Networks , -LRB- II-187 -LCB- II-192 -RRB- , Seattle , Wa . -LSB- 22 -RSB- Thrun , S.B. and others -LRB- 1991 -RRB- The MONK 's Problems - A performance comparison of different learning algorithms , CMU-CS-91-197 Tech . Report Carnegie-Mellon University , Department of Computer Science . -LSB- 23 -RSB- Vapnik , V.N. , Chervonenkis , A.Y. -LRB- 1971 -RRB- On the Uniform Convergence of Relative Frequencies of Events to Their Probabilities . Th . Prob . and its Applications , 17 , Vol .2 , pp. 264-280 . -LSB- 24 -RSB- Vapnik , V.N. -LRB- 1989 -RRB- Inductive Principles of the Search for Empirical Dependences . In Proceedings of the second annual Workshop on Computational Learning Theory , pp. 3-21 , Morgan Kaufmann .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

divide and conquer
feedforward
network pruning

multi-layer networks
perceptron/delta rule