I’ve been working with a BitArray pattern recognition system for sound processing. I implemented a genetic algorithm with a single-point mutation ability and tested that algorithm against a data set of sounds ( me talking and a recording of violins playing. The idea is to detect me talking over the violin noise, with the hope of eventually being able to tell speech from noise apart. )
It didn’t work at all. I could create semi-optimal ( aka local minima ) solutions that could mostly guess me talking vs the violin, but not always. There was a global solution — by pure chance I hit it a few times where the system worked correctly. ( about 1/10 of the time, I hit the correct global optima, 9/10 I hit a local optima ).
I wanted to see if I could evolve the local optima detectors to the global. With a SNIP mutation, it didn’t work ( though I hypothesized it should work some of the time. The global optima is a single bit, bit 47, being false in the encoded samples. )
I calculated from this the number of mutations to get to global optima from all suboptimal solutions. I calculate at least 4 to around 7 serial snips, with add/deletion being far more valuable than transpose.
Cost tracking indicates that the global optima takes 318,000 if/then tests to achieve in a good case. ( 500 sample points in the space — small data… )
I have no idea what gradient descent would take here. But, I now know an appropriate DNN topography to guess correctly. 25 samples in input layer, 25 neurons + bias, and 1 output neuron should simulate my genetic selector. Then I can tell what is more efficient. I’m suspecting that poly-snip genetic would work, along with 25 neuron DNN. I’ll have to impliment both and see which is more efficient DNN or Genetic?