Monday 8 April 2019

GAs a Solution Solution

No, not a typo. GAs have typically been set to work to generate a solution to a fixed problem.

My idea is to create a solution that generates solutions eg.

Using the MNIST dataset of hand written digits, you could breed a network that recognises digits by breeding networks until the connections and weights define a network that can solve the problem and you could optimise it for the least number of connections and nodes. This, however, is not a general solution to building recognition networks. This is very specific to the set of data shown. What would be more useful and interesting would be to define a set of rules that can be applied to build a network based on the data set in real time. A GA solution that can create a network that adapts to the data supplied. Maybe the network could be applied to shape recognition or general hand writing to text conversion.

One of my early areas of interest, was using a GA to create a compression algorithm. I succeeded in creating compressed versions of image files, but each compression was specific to the file and took many generations to breed. A better use of GAs, and similar to that described above, would be to have the GA find a generic compression solution. This would require a data set that consisted of multiple files of different types to compress, and two parts to the process, a compression cycle where the individual can see the source file and develop a compressed data set, and a decompression cycle where the source file is not available and must be reconstructed.

Digital Genes

In living things, genes generate the structures of life using a set of basic building blocks that can be combined and tweaked in multiple ways to create the structures required to allow the creatures survive in the environment.

In GA algorithms, the digital gene sequence needs to be translated into a function that performs successfully in the problem space. The question is, what are the basic building blocks that should be used and how should they be combined and tweaked ?

In living things, the protein is the smallest unit that is combined and tweaked. What is the GA version of this ?

My current thought is that these basic units could be discovered using GAs. By setting the problem environment to a random state, various combinations micro units could be used to create functions, and scored based on the amount of change they cause to the environment state ,either positive or negative, thereby creating a set of building blocks that are not inert (are reactive) when used to try and solve a problem.

The micro units would be functions like boolean conditions, boolean functions, arithmetic operations, storage of values and retrieval.

If this proves unsuccessful, I may try using functions as the GA alternative to proteins.