The Problem with Genetic Algorithms? They're Too Cute
Posted 19 Feb 2008 at 17:00 UTC by steve
A McGill Daily
article offers a high-level overview of Genetic Algorithms (GAs) and
the advantages brought to scientific problem solving by applying
nature's method. The traditional problem solving method used by
Scientists was described by
Richard P. Feynman in a Southparkesque-way:
1) Write down the
problem. 2) Think really, really hard. 3) Write down the solution..
Genetic Algorithms offer an advantage over this method in that they aren't
limited by human preconceptions about how a problem should be solved.
However, the article describes the downsides of GAs too. They may offer
multiple solutions, leaving you to guess which is best and they may
require excessive trial-and-error knob-twiddling. According to Doina
Precup of McGill University, the biggest problem is that the beauty of
the technique can blind people to the drawbacks; "They’re too cute.
Genetic algorithms don’t get bonus credibility just because that’s what
Perhaps if she had a GA to control the GA and reduce her workload that would solve her problem and then GAs wouldn't have any downsides? That would be cute!
I guess this is the first time that I will have to agree about GAs! There are downsides to GAs but I at least give it some cred. Not that I think GAs equal life, the universe and everything, but they are handy tools and they can offer solutions that are better than you'd come up with given the same amount of time. However, they're still work to setup and use, but they can be very handy.
"Cute" is not really a word I'd use for them, tho, unless the software gui had my little ponies skins on it or something?
Some coworkers are using machine learning for large classification
problems. It is very difficult to get good results even in the
completely supervised case with an abundance of data. This explains why
there are contests like the Netflix Prize.
So I would modify Feynman's steps for machine learning to be:
- Write down the problem
- Think about it but not too much, not solving in closed form
- Run experiments, more impressive if this is "machine learning"
- Pick a solution (not "the" solution as there are many)
WHaving something that can make designs you wouldn't think of does sound usefull, but I'm pretty sure if that if you give different people a general enough problem and have them work seperatly, they'll all most likely have very different answers, so I don't really see "not like anything a human would make" as signifigant as it might sound, since you could probably also say humans can reach solutions no GA could ever make.
More importantly, I don't know why I would just have something generated for me without trying first, because I like designing things. I'd rather make an attempt at making something, then maybe have a GA (or some freinds) tweak around with it to see if they can improve it.
Uses, posted 21 Feb 2008 at 13:40 UTC by c6jones720 »
I inherited a program that contained a GA for navigation and path planning. It was used successfully in robot navigation. I thought it was an intersting approach to solving the problem but never quite got my head around exactly how it worked.
The "problem" with GAs is you really have to know the question. For example, you wish to make that path-finding robot. A robot that makes random turns will eventually get to its destination. So you have to identify and quantify the factors to maximize or minimize them. Fewest turns? Shortest time? Smallest drain on the batteries? Which (or which combination) supports your objective?
Every time I think about using a GA I always find I have to really think about the question and what "success" means as a set of quantifiable, significant factors. You might say the rest takes care of itself. :)
P.S. The next challenge is how to make a GA of a GA. Imagine a genetically programmed robot that improves itself or shares with others (control program breeding in a swarm). This is the next thing I want to work on. If I can figure out how "happy" or "healthy" a robot is then it can "breed" with other robots to continually improve. This also allows for adaptation. For example, I tear off its lawn cutting appendage and put a sweeper there. How does it adapt to that and immediately begin to optimize its job with its new actuator? Or I add a sensor? Or a wheel breaks? Great, now I'm not going to be able to sleep tonight.... :)