Saturday, May 28, 2011

Fuzzy Markup Language

Giovanni Acampora describes the Fuzzy Markup Language (FML) in a series of articles. FML is a XML-based method for describing fuzzy logic systems. Fields in the schema specify the fuzzy knowledge base, which consists of the fuzzy variables and their membership functions, and the fuzzy rule base. The schema also allows for the specification of the inference and defuzzification method to use, and the type of fuzzy system (Zadeh-Mamdani or Takagi-Sugeno-Kang). Finally, it supports distributed fuzzy rule systems, that is, the user can specify the IP address of machines on which parts of the fuzzy system should run.

The major advantage of using XML to describe a fuzzy system is interoperability. All that is needed to read an XML file is the appropriate schema for that file, and an XML parser. This makes it much easier to exchange fuzzy systems between software: for example, an application could extract fuzzy rules from a neural network (like the EFuNN and SECoS rule extraction algorithms that exist) which could then be read directly into a fuzzy inference engine or uploaded into a fuzzy controller. Also, with technologies like XSLT, it is possible to compile the FML into the programming language of your choice, ready for embedding into whatever application you please.

Although Acampora's motivation for developing FML seems to be to develop embedded fuzzy controllers for ambient intelligence applications, FML could be a real boon for developers of fuzzy rule extraction algorithms: from my own experience during my PhD, I know that having to design a file format and implement the appropriate parsers for rule extraction and fuzzy inference engines can be a real pain, taking as much time as implementing the rule extraction algorithm itself. I would much rather have used something like FML for my work.

Such standard, XML-based file formats would be useful for other areas of computational intelligence: a standard XML format for ANN, for example, would be fairly simple to implement and also very useful. I could imagine, for example, training a MLP, saving it in an XML-based format, then using XSLT to transform it to C++ and uploading it into an embedded controller. Conventional, static-architecture ANN like perceptrons, MLP, or SOM could easily be represented in XML.

I will be watching for further developments in this area of technology: I've had quite enough of designing my own file formats!