I've been thinking a bit about the use of computer learning (and classification) algorithms to design mechanical and electrical systems (and also computer science systems).
My curiosity was first piqued when I read about some of Jason Lohn's work at NASA's Evolvable Systems Group. The electrical engineering projects were interesting for me, particularly the evolved antenna designs (because of their aesthetics).
The two left antennas are the ST5-3-10 and ST5-4W-03. They were designed for the Space Technology 5 Project (ST5) by using evolution/genetic algorithms. It is curious since the computer-generated designs have higher gain, fewer matching requirements, more uniform coverage, and a 40% shorter design cycle compared to conventionally designed antennas for the project! The two right antennas were designed using evolutionary algorithms when mission requirements were altered. Conventionally, the entire design cycle would have to be repeated, at substantial cost and delay (basically double the initial efforts). However, the evolutionary algorithms resulted in substantial savings in both.
This curious UHF helical antenna was designed for the Mars Odyssey Spacecraft. Its evolutionary design resulted in a product that had the same technical specifications of the conventionally designed antenna, but occupying 1/4 the volume (a big deal on spacecraft). You can read more the evolved antenna designs from the group's website, or a pair of papers here and here (both local copies). Antenna design has largely been a "black-art," trial-and-error process (at least from my perspective), so this is a very cool application!
The NASA group also uses evolution algorithms to design MEMS resonators, fault-tolerant FPGA circuits (such as a fault-tolerant 3-bit multiplier), and even analog circuits.
The circuit above shows a circuit for an evolved 85 dB amplifier. Basically, they use a genetic algorithm (with SPICE as the evaluator) to successively evolve a better circuit.
All of these developments are great achievements, and interesting applications of "computer learning algorithms." But how much faith can we really have in the designs?
Now in general, I figure "computer learning algorithms" include genetic algorithms, cellular automata, hidden Markov models, neural networks, among many, many others. These algorithms are applied to a number of applications across a many disciplines. But the problem (at least from my perspective) is that they lack determinism. By the very nature of their design (at least in most instances), the human observers remain unaware of the underlying low-level functioning of the system (particularly at intermediate steps). Rather, we rely on known evaluation functions/simulators (such as the SPICE circuit simulator, or RF simulations) to evolve/learn the design. Then we test an actual prototype to verify the design. We may even subsequently analyze the design and learn some new deterministic insight (hey, why not).
So why the skepticism with lack of determinism -- especially if the design passes simulation and physical testing? Well, the first reason is that it is often impossible to perform comprehensive testing for large systems (both 'good' system states as well as spurious ones such as noise, feedback, brown-outs, etc). Now, I will concede that most of these problems can be handled by a human expert analyzing the system (in a deterministic way) after the learning algorithm. But I think the major problem are the number of non-experts who do not perform the post-learning analysis, but rather use the algorithms in a "black-box" fashion. These programmers see the tools as a "quick" solution where you throw data in and an answer magically pops out.
Well, what happens when non-experts apply learning algorithms to critical (meaning lives at stake) applications (such as bridge or aircraft design)? Yikes.
I suppose I'm being a bit rough on the machine learning algorithms -- they are a great tool. They produce interesting, thought-provoking results that teach us a lot. However (particularly for a non-expert such as myself), I think they should be used cautiously... I believe I'm going to try to focus on deterministic methods henceforth.
**The inspiration for this rant began when Matt Reynolds asked me "Why use hidden Markov models?" in regard to my recent publication of Hambone. The most direct answer, of course, is that Dr. Thad Starner wanted us to use GT2K, a hidden Markov model toolkit, and that the related work authors used a hidden Markov model to perform their classification. Since I am not a machine learning person (though some of the co-authors are), the "black-box" approach (again, from my perspective and given my background) didn't necessarily sit well with me. Of course, I would have preferred to use PCA (principle component analysis) to determine a more deterministic classification method, but time just wasn't permitting... And such is life...