Fusion of Neural Networks, Fuzzy Systems and Genetic Algorithms: Industrial Applications Fusion of Neural Networks, Fuzzy Systems and Genetic Algorithms: Industrial Applications
by Lakhmi C. Jain; N.M. Martin
CRC Press, CRC Press LLC
ISBN: 0849398045   Pub Date: 11/01/98
  

Previous Table of Contents Next


Training the Neural Net

In conventional fuzzy system design, users start with some fuzzy rules and membership functions (based on their experience) and they use the development system to tune these rules and membership functions. Starting with a good set of rules and membership functions followed by proper tuning is not an easy job and takes a lot of time for a reasonably complex system. It is difficult for a human to keep track of how the rules work together when the number of rules exceeds 15. The number of antecedents and consequents in each rule complicates the system even more when these exceed 2.

NeuFuz takes a different approach to fuzzy design, mainly to eliminate the problems associated with the conventional fuzzy logic mentioned before. To take the design burden off the users, NeuFuz first learns the system behavior by using the system’s input-output data. This learning is based on the learning and generalization capabilities of neural nets (Box 1 of Figure 2). The learning algorithms are described in detail in the next section. Thus, to learn how to control an application, one needs to provide input-output data for the controller to be developed. Such data can be obtained by various techniques, e.g., measurements, simulations, mathematical modeling, or experience. To adequately train the neural net, a good set of input-output data that exhibits cause-and-effect relationships of the system is required. This means that the data points should cover the possible range of operations very well. Important learning parameters are provided to properly and efficiently manage the learning process. The neural net is first initialized with some suitable values of weights that help expedite the learning and convergence. After applying a good set of input-output data for several cycles, the net converges and becomes ready to generate fuzzy rules and membership functions.


Figure 2  NeuFuz: Combining Neural Nets with Fuzzy Logic; Courtesy of National Semiconductor Corporation

Thus, users need to provide system input-output data only; no fuzzy rules or membership functions are required. However, if the user has some initial rules, they can be used to better initialize the neural net. This way the neural net may complete its learning faster.

Generating Fuzzy Rules and Membership Functions

The neural net in Box 1 of Figure 2 is properly architected so that it maps well to fuzzy logic rules and membership functions. This is shown in Figure 3 (layer 1 actually uses 4 layers, as shown in Figure 4), which is described in more detail in the next section. Neurons in layer 2 correspond to fuzzy logic rules and neurons in layer 1 correspond to the membership functions. Thus, N1 in layer 2 means

If Input 1 is Low and Input 2 is Low THEN the output is W23

where W23 is the weight between layers 2 and 3 (i.e., output layer) of the neural net.

The neuron in layer 3 does the rule evaluation and defuzzification. Thus, Box 2 of Figure 2 generates fuzzy logic rules and membership functions by directly translating Box 1 of Figure 2.

Verifying the Solution

The generated fuzzy rules and membership functions can be verified by using NeuFuz’ Fuzzy Rule Verifier (Box 3 of Figure 2). A good test set should be used for the verification process. If the generated rules and membership functions do not produce satisfactory results, one can easily manipulate the appropriate parameters (e.g., more data, smaller error criterion, learning rate, etc.) so that the neural net learns more about the system behavior and finally produces a satisfactory solution.

Optimizing the Solution

The number of rules and membership functions can also be optimized using the Fuzzy Rule Verifier of NeuFuz, which is another very important feature. This reduces memory requirement and increases execution speeds — two very desirable features for many applications. Some accuracy might be lost by the optimization process and one can make some trade-offs between accuracy and cost.


Figure 3  Learning mechanism of NeuFuz. The net is first trained with system input-output data. Learning takes place by appropriately changing the weights between the layers. After learning is completed, the final weights represent the rules and membership functions. The learned neural net, as shown above, can generate output very close to the desired output. Equivalent fuzzy design can be obtained by using generated fuzzy rules and membership functions as described in Section 5.


Figure 4  Neural network structure to learn membership functions.

Generating Assembly and C Code

After a satisfactory solution is obtained, NeuFuz can be used to either automatically convert the solution to an embedded processor’s assembly code or generate ANSI C-code (Box 4 of Figure 2). Various options can be provided to optimize the code for accuracy, speed, or memory.

Nonlinear Membership Functions

NeuFuz uses nonlinear membership functions as opposed to membership functions of fixed geometric shapes (triangular, trapezoidal). Nonlinear membership functions can represent more system knowledge than the conventional membership functions (triangular, trapezoidal). This enables representation of a good part of the system knowledge in membership functions and, thus, reduces the number of rules (and hence cost) needed to solve the problem.


Previous Table of Contents Next

Copyright © CRC Press LLC