Why use it

A regular neural network is quite capable of learning i/o mappings, but you have no control over the features that it learns per hidden layer.

This is usually okay, since most of the time, u don’t really care what the learnt features are, the network is allowed to decide the features, and they usually don’t have an explainable meaning.

But sometimes, you care.

Sometimes you need a system that doesn’t decide it’s features, you do.

This is what a Neuro-Fuzzy System is, a system that learns i/o mappings, and you explicitly decide what features it learns and uses (usually to make them explainable, or more “human” readable).

You basically create a system that starts with a set of fuzzy features (e.g., Tall/Short and Young/Old), derives other features from them (using logic rules) (e.g., Games/Mugs), and keeps doing this until deriving the output features (e.g., High/Low).

As u may have noticed, we usually don’t get fuzzy logic variables as input and instead get a continuous/crisp version of them (e.g., we don’t get Tall/Short, we get a crisp Height variable as input).
This is why we need to fuzzify the crisp input variables first.

It also is usually the case that we expect a crisp value as an output (e.g., we’re not interested in how High or Low the spending is, we want to know how much it is).
In which case, we de-fuzzify the output fuzzy variables into a crisp one.

This diagram shows the entire process.


How to Fuzzify

Take the “Height” crisp variable as an example,

We basically assign a triangular/trapezoidal curve to each fuzzy variable.
(they both get a trapezoid here since they are at the edges).

We normally need to find the four (a, b, c, d) anchor points that make the most sense, for each shape.

However, we can constraint the shapes a little to reduce the amount of variables to optimize, by assuming the following,

  • Shape Restriction
    • We exclusively use Left and Right Shoulders for the extreme edges, and standard Triangles for everything in the middle.
  • Perfect Overlap
    • Every membership function perfectly hands off to its neighbor
      (the peak of one triangle is the exact starting point of the next).
  • Evenly-spaced peaks
    • Peaks are evenly spaced.

This way, the only variable that determines the entire shape is its “peak-wise” distance

… every crisp input variable has its own “peak-wise distance”, denoted as for the -th variable.

The System uses a neural network to search for its optimal value, by interpolating between values within a window that u specify.


How to combine features

We convert logical connectives into mathematical ones.

  • A AND B becomes min(A, B)
  • A OR B becomes max(A,B)

If a fuzzy variable implies another one (e.g., Tall implies Games), the consequent takes on the value of the antecedent (e.g, Games = 0.6 when Tall = 0.6)


How to de-fuzzify


Related Notes

ThumbnailNote