Welcome to sofenn (sounds like soften)!
This package is a Keras/TensorFlow implementation of a Self-Organizing Fuzzy Neural Network. The sofenn framework
consists of two models:
(1) Fuzzy Network - Underlying fuzzy network whose parameters are optimized during training
(2) Self-Organizer - Meta-model that optimizes the architecture of the Fuzzy Network
Underlying neural network model that contains parameters to be optimized during training
Meta-model to optimize architecture of underlying fuzzy network
The model is implemented per the description in:
'An on-line algorithm for creating self-organizing fuzzy neural networks'
Leng, Prasad, McGinnity (2004)
Fuzzy Neural Network Architecture
Credit: Leng, Prasad, McGinnity (2004)
Input layer of network
Radial (Ellipsoidal) Basis Function Layer
-
each neuron represents "if-part" or premise of a fuzzy rule
-
individual Membership Functions (MF) are applied to each feature for each neuron
-
output is product of Membership Functions
-
each MF is Gaussian function:
-
output for Fuzzy Layer is:
-
- shape: (*, features)
-
- shape : (*, neurons)
Information flow of r features within neuron j
Credit: Leng, Prasad, McGinnity (2004)
Normalization Layer
-
output of each neuron is normalized by total output from previous layer
-
number of outputs equal to previous layer (# of neurons)
-
output for Normalized Layer is:
-
- shape : (*, neurons)
-
- shape : (*, neurons)
Weighting of ith MF of each feature
-
yields the "consequence" of the jth fuzzy rule of fuzzy model
-
each neuron has two inputs:
-
with:
-output for weighted layer is:
Final Output
-
output for fuzzy layer is:
for u neurons
-
final layer for regression problems
-
- shape : (*, neurons)
-
- shape : (*,)
Classification Output