Re: [stack] Evolutionary Programming
"chris glur" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
> The idea is to write a program that writes Joy programs, > tests them for fitness against samples of the task data, > where the task is do something like handwriting recognition. --snip-- >3. Execute each generated program on the test data and measure >fitness based on the results. Save the programs with the highest >fitness rating and discard all the rest. Having just read 75% of 'The collapse of chaos' by Cohen & Ian Stew[au]rt I'm less believing than when I read of some claimed successes in this scheme previously. I see now that my previous extention of neural-nets concepts, where the state space searched is continuous and 'hill climbing' is aimed at; is completely misplaced. The author starts by looking at Mandelbrot fractals ..etc. where even with infinitesimal errors the output is still unpredictable. Ie. effectively discontinuity. >Sticking closely to the evolutionary paradigm can mean that >one must start with truly simple versions of the task, such >as distinguishing between two values of a variable. If we >start with samples of the full task, such as recognizing full >documents of text correctly, we won't be able to provide any >fitness tests that are both meaningful and useful, and it could >be billions of years before anything works. Narrowing the task >down to something completely simple allows for some fitness to >be discovered early on (then we increase the difficulty of the >task a little). OK, this sound plausible. But then only the micro-modules evolve, and the intelligent human uses them to build the complete algorithm. Or you can automate the combinations of the modules, but the human has designed the initial intelligent module partitioning first. >It's interesting that Joy code is more like the genetic code >of DNA than ordinary programming languages are, in that DNA >doesn't have much in the way of syntax, and it doesn't have >any explicit looping or other typical control constructs. I suspect these claims are mostly intuitive ? IMO 'looping' can only apply in a digital computer. Whereas DNA is digital, I think the functions which it 'controls' are analog-like. Ie. "DO x UNTIL enough". So you could say 'the molecules of water evaporated until the cup was dry", but it that really 'looping'. I suspect that the 'divide by zero' is only one of [possibly infinite] many discontinuities in the scheme, as I understand your description of it. You can simulate an analog-system in your output, but your input is discontinuous/chaotic ? OTOH you could simulate all the analog-processes, with your digital computer ? Can you give any mathematical insight into why: run M*N should be closer to a goal than run N ? It seems like one of these schemes which sound plausible on a first superficial consideration, but fails on deeper analysis. An fascinating can-O-worms ? It would be nice to be able to consult biologist-Cohen & mathematician-Stewart on this ? == Chris Glur.