Showing posts with label AI. Show all posts
Showing posts with label AI. Show all posts

Friday, January 22, 2016

Artificial Intelligence Simplified: Understanding Basic Concepts

I am officially a published author!


I co-authored a book called Artificial Intelligence Simplified: Understanding Basic Concepts.  My expertise is not in AI, but I am skilled at bringing technical content to more general audiences.  So my co-author Binto George wrote the text, and I helped transform it into an informal, tutorial-style overview of the basics.

The book grew from what was originally going to be a chapter in a larger volume that touches on many different areas of computer science.  Our philosophy was that learning in context was more effective, so each chapter was going to have its own motivating question.  For example, in my first chapter on data representation (which will likely make it into a book of its own), my question was "How did photography go digital?"  The AI chapter's context was healthcare, which we decided to stick with in the expanded stand-alone book version.  The result is an introductory book that discusses the main ideas of the field in the context of a few problems found in healthcare, such as scheduling surgeries for an operating room.

Here's some info from the back cover of the book.  Go check it out on Amazon (Canada, US).  There's a cheaper student version floating around as well.
Artificial Intelligence concepts explained using real-life examples. No complicated math or jargon.  
Have you ever wondered what Artificial Intelligence, or AI, is all about? Let us guide you through the key concepts of AI with our friendly, tutorial-style explanations. We use everyday language and concrete examples in the context of healthcare to ensure things don’t get too abstract. Whether you’re a complete beginner who’s curious about AI, a student who’s intimidated by the technical nature of traditional textbooks, or even a robotics enthusiast who just wants to get started with AI, this book is for you.

Wednesday, July 22, 2015

Keynotes and Inspirations at Foundations of Digital Games 2015

I had a great time at this year's Foundations of Digital Games, but it was the talks and the hallway track with narrative folks that really left me inspired.  In this post I'll summarize the first three keynotes and some inspiration I got from one of them; you can check out my raw talk notes and the proceedings for more details.  The sketch notes I'm including are all by Chris Martens, a fellow narrative PhD candidate (though she'll be done soon!).

Tom Forsyth's Keynote

The first keynote of the conference was given by Tom Forsyth, who worked at Valve and then Oculus VR.  Tom highlighted some of the challenges we face when designing all-new experiences for virtual reality.  For example, motion sickness comes from there being an imbalance between what your eyes see and what your ears feel, so having players move up stairs causes issues (elevators are apparently much better).  It's also important to avoid most cinematography techniques, and to use an eye blink transition whenever possible.

[raw talk notes]


Sketch note by Chris Martens, via Twitter

Robin Hunicke's Keynote

The next day we heard from Robin Hunicke, who produced Journey and is seriously inspirational.  She began by talking about Wattam and its designer Keita's inspiration for the game.  The zaniness levels of that game are right up my alley, making me want to get a PS4 even more...

Most of Robin's talk was about her inspiration for Luna, which as she puts it, was kind of a beast.  She talked in depth about the inspiration noted on the game's website: "origami, shadow boxes, abstract sculpture and minimalist illustration."  Near the beginning of the design process, she apparently spent six months alone in her apartment, folding paper.  It turned out that folding paper digitally wasn't very fun, but that didn't mean some of the lessons learned from origami couldn't apply to a game's design.  Luna looks wonderfully whimsical, and I am hoping I was mistaken about it being a VR game (or at least, not VR-exclusive) because I would really like to try it.

[raw talk notes]


Sketch note by Chris Martens, via Twitter

R. Michael Young's Keynote

The first academic keynote of the conference, R. Michael Young is in charge of the Liquid Narrative Group at NCSU.  He described some of the main areas his group looks at in the world of narrative after reminding us that "narrative is big. Really big."

The systems his group builds are evaluated based on whether they produce narratives that can be understood by humans in particular ways.  They break narrative down into story (everything that happens inside the story world), discourse (the choices the author makes in how to tell the stories; what goes into the telling), and interactivity (what happens when a player goes into the role of a character? How do we design the story and discourse?).

The group's most used tool seems to be artificial-intelligence-based planners.  Planning looks at how to automatically sequence actions in the face of a novel set of environmental goals.  In narrative, this might mean anything from having characters scheme to achieve their own goals, to authors planning to mislead then reveal.  Stories are broken down into the smallest possible units (such as individual actions), then built back up.  Many problems arise from the use of standard planners, which often tell uninteresting stories.  One of the ways to improve the outcomes is the group's current work in progress that attempts to express character traits through the action sequences created.

[raw talk notes]


Sketch note by Chris Martens, via Twitter

Inspiration

Michael's distinction between story and discourse got me thinking about my own thesis project (read a somewhat out-of-date description here).  I realized that a large part of what I'm doing feels more like discourse than story.

It felt even more clear to me when I thought about Mieke Bal's definitions of story and fabula from Narratology: Introduction to the Theory of Narrative.  A fabula is "a series of logically and chronologically related events that are caused or experienced by actors" while a story is "a fabula that is presented in a certain manner."  Most of the techniques I am working on actually don't affect the fabula so much as the way the fabula is experienced.

One of the areas I struggled with in my thesis proposal was justifying why I didn't want to use planners.  There are some definite reasons that were easy to articulate, such as difficult authoring.  However, I also had this unarticulated understanding that planners weren't quite right for the design approach I took, but wasn't sure exactly why.

By thinking about story and fabula, I was able to realize that I'm not trying to arrange actions into a story so much as allow navigation through a set of coarser story pieces featuring fixed actions.  I want players to be able to explore a mostly fixed fabula in different ways, leading to different interpretations of it.  In the process, the resulting story should still have a sense of (but not necessarily actual) coherence.

As a result of this insight and another cool idea that came up during the conference, my thesis project's focus is tightening up very nicely.  I'll share more about that sometime in the future.

Wednesday, June 17, 2009

Becoming Viral with The Sims 3

I don't know how I missed this until now, but I just stumbled upon some of the best video game-related writing I have seen online. Written in blog form, Alice and Kev by game design student Robin Burkinshaw is, on the surface, nothing more than a record of what is happening to two characters she created in EA's recently released The Sims 3. But start reading from the beginning, and you'll soon find you can't stop!

The concept is something that was apparently done in previous versions of the game:
This is an experiment in playing a homeless family in The Sims 3. I created two Sims, moved them in to a place made to look like an abandoned park, removed all of their remaining money, and then attempted to help them survive without taking any job promotions or easy cash routes. It’s based on the old ‘poverty challenge’ idea from The Sims 2, but it turned out to be a lot more interesting with The Sims 3’s living neighborhood features.
I am totally flabbergasted at the story that unfolds from there. I haven't played the game yet, so I can't say whether it's some kind of coincidence that the characters have evolved the way they have, or if the artificial intelligence is really that realistic. (I'd love to get into the guts of that AI engine.) Of course, most of the credit goes to Robin, who really brings the characters to life with her words and carefully selected game screen shots.

I don't want to give the plot away so far, so you'll have to go read it. But I do want to comment on the concept. Some comments on the blog entries wondered whether this is actually a viral marketing campaign on behalf of EA. Although I doubt that was the intention, this is certainly having a similar effect. I know I sure want the game now!

Beyond that, this is turning out to be a viral marketing campaign for Robin herself. This is exactly the kind of publicity anyone with aspirations in technology usually only dreams about. If there aren't a dozen game design companies, big or small, that are now wondering when Robin graduates, I will be surprised. Kudos!

Tuesday, January 20, 2009

What if Computer Science Had Never Improved?

There's a commercial on the radio around here that asks "What if [some thing or service] had never improved? [Clip of said thing or service not improving.] Here at [their insurance company], we believe insurance can be better."

The most recent edition wonders what music would be like if it hadn't 'improved' since the Baroque period. A man with a rock star British accent yells through the microphone, "Hello Sudbury! Are you ready to.. soNAta?" Harpsichord music follows.

It so happens that I think modern rock concerts are not an improvement over classical music, but it got me thinking about our field of computer science. What if certain areas had never advanced? Are there some areas that are still stuck in the technological stone age?

The first example that jumped into my mind was that of compilers. Imagine what software development would be like if we still had to write our computer programs in assembly code. No fancy objected-oriented paradigms, no interpreted languages, and no simple procedural code! Only the likes of memory addresses and processor instructions. For all but the most ambitious, this sounds like torture. Fewer people would be capable of working in development, fewer large software products would be created, and many other areas of computer science would likely never progress, or do so excrutiatingly slowly.

There's no doubt that computer graphics have come a long way since the early days, growing from text-based terminals to the rich graphical user interfaces of today. If it wasn't for the advances in this field, I believe that computers would never have become accessible to the masses. The ability to display anything the heart desires on a computer screen unlocks so much potential for making interfaces that make sense to everyone, young or old. Modern graphics bring us entertainment, productivity, and everything in between.

The Internet is an obvious example. Remember what web pages looked like in 1995? Plain, non-interactive, and not always entirely useful. Today we are treated to rich, interactive applications, secure online shopping and banking, and about a zillion ways to connect with friends and family from all over the world. Heck, I was even able to watch President Obama's inauguration thanks to the advent of streaming video! The Internet and its related entities permeate our everyday lives so deeply that I'm not sure we remember what it was like to have to see the bank teller, or pay exuberant long-distance fees to contact anyone outside your own town.

What about those areas that haven't broken a lot of ground? I'd like to suggest that artificial intelligence is such an area of computer science. Sure, lots of really great research has come out in the name of AI, but let's go back to the beginning and ask ourselves whether these advances are actually solving the original problem. The field of artificial intelligence was supposed to capture, model, and mimic the intelligence of human beings. This was, still is, and perhaps always will be an impossible task. Many techniques are able to somewhat mimic intelligence levels much lower than our own, or even small particular areas of the way we think, but basically the field seems to have branched away from its original vision. So, in that sense, it never really did progress, though what it has accomplished instead is still wonderful and valuable.

Just like the sonata in Sudbury, some may argue that certain areas of the world of computing may have been better off had they stayed the same. Similarly, maybe the direction AI has taken is indeed a much greater accomplishment that I'm giving it credit for. I suppose that, in the end, it comes down to personal taste and opinion. What I do know for sure is that I can't even imagine where the field is going to be in 100 years, and what commercials we could possibly be making about it then.

Thursday, September 4, 2008

Making Games Think

This article was originally written for NerdGirls.com.

As more women than ever before begin to find themselves interested in video games, it’s likely that many women are also wondering, “What is it that makes games think?” For many games, from adventure and role playing genres to challenges like chess, game developers need to incorporate techniques that allow help a computer to think for itself in a timely fashion. Some of these techniques will be revealed below as light is shed on what gives games brains.

First, let’s reflect on why having good artificial intelligence (also known simply as AI) can be so important for a game to be fun. Many board games and first person shooters can’t be played without an actual opponent, but a human contender is not always available. This makes providing an opponent controlled by AI an important option. Adventure and role playing games don’t usually involve a real opponent, but there are always bad guys that have to fight back realistically. Make them too hard, and the player will die too often. Make them too easy, and you take away all the challenge. In sports games, announcers have to make sense when describing the plays you make. Choppy or confusing voice-overs would take a lot away from the realistic nature of the simulation. Even with these few examples, it’s already clear how important AI can be in making a game more realistic and more entertaining.

How does a computer - which can do calculations and perform basic instructions really really fast but can’t do anything we don’t tell it to - think? Well, it can’t. It can only simulate the kind of intelligence we possess as humans. In games, the basic steps to looking smart are:

1. Sense what’s happening in the game.
2. Decide the best course of action based on the information available.
3. Perform the best action.

After the state of everything happening in a game is put together for examination, it can be used to figure out what action could be taken so the game appears intelligent. It’s this second step that we’ll talk about here, looking at some different ways to make this decision.

Let’s see how this is applied to the game of checkers, where we are playing a computer opponent. We’ll say that we just made a move and the computer must decide what it should do next. The first step is to sense what the current state of the game is. In checkers, this means looking at each square on the board to see if there is a black or white checker on it, or none at all. Now the computer knows what moves are available to it, based on the rules of checkers. Pretending to take each one of those moves, the computer then branches out and checks what moves are available next. It can repeat this several times before times or memory runs out. After looking through these scenarios, the computer can use some form of evaluation (given to it by the programmer, of course) to decide which outcome would be the best. The more scenarios the computer has time to look through, the more likely it can choose a path that will allow it to win. This strategy is known as “state based search” and was used to help IBM’s Deep Blue beat a reigning world chess champion.

For games that have to manage autonomous enemies or friendly characters, state based search doesn’t quite sound like the right solution. Instead, something called a finite state machine might be used for adventure, shooter, or role playing games. This structure has ‘islands’ that represent various states that a character might be in. For example, one island might represent the ‘asleep’ state, another the ‘fighting’ state, and another still the ‘wandering’ state. Then there are ‘shipping channels’ set up between the islands, but you can only get on a particular ship when a certain event happens. So let’s say that an enemy is currently in the wandering state, and after sensing that you, the hero, have become close to him, the shipping channel from the wandering state to the fighting state is opened up. Now the enemy ‘changes islands’ and ends up in the fighting state until something allows him to leave it. While in that state, the actions he takes will be predefined for the fighting state. In this way, the decisions that a particular character can make after sensing the state of the game are coded into this islands and shipping lanes map.

Those are just a couple of ways to add a bit of intelligence to video games these days. You can learn about these two and more at such sites as The Game AI Page, AIGameDev.com, and Game/AI. If it turns out you’re interested in this, there’s still lots more to figure out so it’s a worthwhile subject to learn about in school!

Tuesday, August 12, 2008

Creature Evolution Fourteen Years Ago

In July I talked about using evolutionary artificial intelligence to create realistic animations. If you found that interesting, then this video from 1994 is a must-see.



Karl Sims,a graduate from MIT who studied computer graphics and life sciences, used Darwinian evolution to come up with the block creatures in the video, along with their behaviors. As Karl says on his site about the project:
A population of several hundred creatures is created within a supercomputer, and each creature is tested for their ability to perform a given task, such the ability to swim in a simulated water environment. Those that are most successful survive, and their virtual genes containing coded instructions for their growth, are copied, combined, and mutated to make offspring for a new population. The new creatures are again tested, and some may be improvements on their parents. As this cycle of variation and selection continues, creatures with more and more successful behaviors can emerge.
The last challenge shown in the video involves two creatures battling it out over a green block. Whichever is closest to the block at the end of the simulation is declared the winner. Some of the strategies for winning are actually pretty impressive, including what looks like actual hand-to-hand combat. Remember, this was done in 1994, when the beta for Windows 95 was released and Netscape was just founded.

You can read more about the technical aspects of this evolution system in Karl's paper here.

Saturday, July 19, 2008

Artificial Intelligence in Animation

How timely stories found on the mental_floss blog can be! It was only a week ago that I wrote about some of the exciting applications the concept of evolution can have in computing. Around the same time, I found a story about a TED Talk called Simulating Humans.

If you didn't see the movie on that page yet, take a few minutes to watch it in its entirety. It's both amazing and amusing to see how researchers have used evolution to teach a stick man how to react to various stimulus (such as being pushed over).

The first results show the stick man learning to walk, and the first attempts are just plain hilarious. Many face plants ensue. But after several generations, things start to improve, and finally the stick man can walk in a straight line, more or less like you and I.

Next, the stick man was shown to wobble and brace himself for a hard landing after being pushed from the side. It was amazing how natural it looked. I don't think it would be possible to spend enough time animating this behaviour by hand and have it look as real, though perhaps a pricey motion capture system could do the trick.

Finally, on a whim, they decided to see how well their technology would work for a famous stunt that has James Bond jump off a dam and get caught by a bungee on the way down. The animated version performed very well! This means that dangerous and expensive stunts may be replaced by animations that look just as natural.

This kind of technology could be applied to everything from big film productions to video games to medical simulation. That last one piqued my interest. Apparently one of the upcoming projects was to give software to surgeons who could then using the walking stick man to predict the outcome of surgery performed on, say, children with cerebral palsy.

Friday, July 11, 2008

Evolution is Exciting

I suppose you've all heard about Spore by now. Many of you have probably already tried out the Creature Creator, too, since the full game isn't available yet. I haven't download it yet, and will probably just wait until I can get the full deal. There are also many other related projects to play with while we wait.

And if you don't know what's Spore's all about yet, the important piece of info is this: with Spore, you can "EVOLVE Your Creature through Five Stages - It’s survival of the funnest as your choices reverberate through generations and ultimately decide the fate of your civilization."

Sounds pretty cool. But while Will Wright had the insight and ability to turn evolution into a compelling video game, there are many more applications of the concept. Check out this article written by a friend and fellow Carleton U alumni, Elan Dubfrofsky. It's called The Ultimate Problemsolver: Computer + Evolution = Genius, and includes all kinds of interesting uses of evolution.

Take, for instance, the travelling salesman problem. It turns out it's not so easy to automatically figure out how to travel to an arbitrary number of cities, only once each except for a return home, in the shortest possible way. In fact, this problem is classified as NP-hard, and if the number of cities is large enough, only approximate solutions can be computed in any reasonable amount of time. But not to worry - by starting with some random solutions, mutating and recombining them, and finally filtering out the best solutions so far, we can eventually come up with a pretty darned good approximation of the best answer. We just need to give this process enough time. Ah, the beauty of evolution!

Another example that Elan points out is the design of an antenna for NASA, developed in 2006. Many very strange looking devices were suggested through this process of evolution, but once it was all said and done, the winning design really was the most fit for the job, consuming only a small amount of power and being easy to produce.

I've even talked about evolutionary techniques earlier in this post. After reading Elan's article, you might enjoy the discussion about the state of artificial intelligence and the evolution of a virtual checkers player. Be sure to read through the comments as well!

So the next time you are working on an optimization problem, ask yourself if you might be able to evolve a good solution rather than trial-and-error your own. Or just wait for Spore and watch evolution in action while creating some silly looking creatures on the side.

Thursday, June 5, 2008

CS Unplugged

"Teach computer science... without a computer!"

CS Unplugged's home page tag line pretty much sums up the New Zealand-based project. I first encountered CS Unplugged on reddit, and got hooked from there. I had wondered if I'd be able to use any of the activities in my mini-course. In the end, I used no less than three of them!

The activities cover a fairly wide range of fundamental computer science concepts. The best part about them, though, is the head fake (if I may borrow Randy Pausch's term). You get kids to play these fun games or lead some zany discussions, so they're pretty much just having fun while learning (or at least being exposed to) some pretty tough concepts. True, some of the more keen students might ask, "So, what does this have to do with computers again?" But all is revealed in the end.

A great example is the activity on Finite State Automata, which I used during the artificial intelligence section of the mini-course. Several kids act as islands, and get printed cards that indicate where a ship may go. There are always two choices: choice A and choice B. The rest of the students start at the first island, and ask to travel along one of these choices. Their goal is to reach treasure island, while writing down the path(s) they used to get there. After everyone has had the opportunity to try it, the class can compare their maps and discuss what patterns of A's and B's can be used to get from start to finish. So while they think they're just going on a treasure hunt, they really just learned about how to find examples of accepted strings to finite state machines. Pretty cool eh?

I also tried the Human Computer Interaction and Turing Test activities during the mini-course. It was a bit harder to convince them of the relevance of the Chocolate Factory design discussion for HCI, but they seemed to enjoy these as well. If nothing else, they had some really good discussions about the topics, so perhaps they'll see the connection to computer science better later on and look back on their experience here.

You can see some of the events from around the world that used CS Unplugged material on this Google Map. My mini-course is on there - see if you can find it! I hope, in the near future, to be able to add more events to this map. In particular, our Women in Science and Engineering group hopes to work on some outreach programs for pre-university girls, so there's a huge opportunity to incorporate a few key CS Unplugged activities.

Thursday, January 3, 2008

Street Selection and Self-Organizing Maps

Maps have become an essential part of many of our lives, helping us to get from one place to another for centuries. With the widespread availability of relatively recent digital technologies, such as Google Maps, the need to display maps at different resolutions has never been greater.

Think of the kinds of features that are shown in this map of Canada:


View Larger Map

Not a lot is shown beyond a bit of water and some major political markings. When zooming into Ontario, bodies of water become more clear and major roads are now shown:


View Larger Map

Finally, much more detail, including local roads, is possible when looking at just the city of Ottawa:


View Larger Map

There is obviously some decision making happening behind the scenes in order to display the most important features for a particular level of zoom (or resolution, as it were).

Let's look specifically at road networks, ignoring the other features for this discussion. There are two levels of work to be done when determining what roads should be shown at a particular level of detail. This whole process is known as generalization, since we must decide what subset of all the available information will be shown.

The first step of generalization involves examining the model of the road network and using information about street connections, types, and so on to pick out the most important or relevant pieces to show.

Once we have the data that is to be visualized, the second step analyzes the geometric properties of the chosen roads and uses the results to simplify the graphical rendering of the roads. For example, a road with many small bends that can't be rendered onto the screen as such will be simplified to a straight line instead.

It is in the first step that self-organizing maps (or SOMs) can play a role. These maps are actually neural networks that are used to cluster and visualize data. To make a longish story short (and simplified), you create vectors with as many dimensions as you have numerical properties about each item you want to cluster. Using these numbers, the SOM sorts out the data so that items that are most alike end being "close" together. You might, for example, have a SOM that is represented by a two dimensional grid, and the input vectors will be organized into the cells based on their similarities.

In the case of selecting roads from a network, there are some obvious numerical values that can be used to describe each street for use in the SOM, such as length. There are, however, also some less obvious choices that seem to help categorize roads in a more useful way. A good list of attributes for each road is as follows:
  • Number of streets that intersect this one
  • A measure of closeness between this road and all others around it, using shortest path distances
  • A measure of betweenness, the proportion of shortest paths between all other roads that pass through this one
  • Length and width (i.e. number of lanes)
  • A numerical representation of the class of road (i.e. avenue, street, highway, freeway, etc)
  • Speed limit
Using these properties, roads can be clustered into a SOM. We can then pick a group of similar roads very easily. If we are careful about using the numerical properties so that when the value increases, so does the corresponding importance of the road, we can simply pick the SOM cells with the highest average values for the vectors stored within. These roads will be used in the map's final generalization.

For more information, please have a look at my final project for the GIS class I took in the fall semester. I implemented street selection using SOMs. The file includes my write-up of the project as well as the Java code used. Be sure to look at the README file if you plan to play with it as you will need to do a bit of work to set things up.

Thursday, September 27, 2007

Blondie24: Playing at the Edge of AI

Imagine this scenario: You have recently befriended a visitor from Mars. Martians have no knowledge of human culture, let alone any experience with our board games. But somehow your new pal has heard of checkers and desperately wants to learn how to play. So much so, in fact, that you question his "friendship" as he demands success while waving around his ray gun menacingly.

An uneasy situation to be sure, but what if in addition to having to teach the visitor far from home how to play checkers from scratch, eventually making him an expert player, the only information you were allowed to tell him is where the game pieces were allowed to be on the board and how they were allowed to be moved. After a series of games, you would tell him how many games he had won, but not which games they were.

Could you do it?

David B. Fogel faced this very same challenge, albeit without the Martians and ray guns. Instead, Fogel aimed to have a computer learn the game of checkers in this very same way. We all know how dense computers are -- they certainly won't do anything other than exactly what you tell them -- so we can see that this task is still daunting nonetheless.

In Blondie24: Playing at the Edge of AI, Fogel describes how he used evolutionary computing algorithms to have a computer teach itself checkers. In the process, he manages to give a good introduction and general review of the state of artificial intelligence, to provide interesting insight into what it truly means for software to act intelligent, and to detail how he and his colleague Kumar Chellapilla managed to evolve a neural network that could play checkers competitively with the experts.

If you have studied AI at all in the past, then you probably remember spending a lot of time on subjects like decision trees, expert systems, and search tree algorithms such as A*. Indeed, topics like these seem to be at the forefront of the field, and capturing human knowledge and reusing it in an effective way constitutes, for many, the essence of artificial intelligence.

But does the use of our own knowledge really demonstrate intelligence? As Fogel points out, not really. These kinds of programs are simply acting like we do. They make no contribution to understanding what intelligence really is, nor how it develops in the first place.

Fogel offers an alternative. He believes that mimicking what nature has done so well is the key to having software learn for itself; that is, we should be focusing on evolution.

And that's exactly what Fogel uses to create a checkers program that can win against very high ranking players. He sets up a neural network with a somewhat arbitrary configuration, using the piece placement on the squares of a checkerboard as inputs. Several networks are created with random weights between neurons; this becomes the first generation in the evolutionary process.

The networks play against each other based on the most basic rules of how pieces can move from particular squares and when the game is over. They don't know when they lose or win a game; instead, they are assigned a final score for the series of games they have played. Then the half of the generation with the lowest scores is thrown out. The better half is copied and slightly randomly mutated. This new set of neural networks becomes the next generation, and the process begins again.

I'm definitely simplifying things here (for one thing, the neural networks don't play checkers, but rather evaluate a particular board configuration), but suffice it to say that these neural networks, after many generations of evolution, could actually play checkers very well. This is quite remarkable if you think about it -- just from random mutation and survival of the fittest, we start with something more or less random that knows nothing about checkers, and eventually get something that can beat some of the best. Nowhere have we instilled our own human expertise or knowledge into the program like the creators of Chinook did, or those of Deep Blue in the case of chess.

If you are the least bit curious of the details on how Fogel and Chellapilla achieved this, I highly recommend reading his book. I couldn't help myself feeling at least as enthralled with the progress of the artificial checkers player as I have with any fictional protagonist. Fogel does a wonderful job of providing the necessary background of the field, and repeats the key points just enough so the reader doesn't get lost.

More importantly, I hope you can share in the excitement surrounding the possibilities of evolutionary computing. Though it's been around for decades, I'm not sure that it's been used to anywhere near its potential. As hardware speeds up and complicated problems can be evolved more efficiently, we might find ourselves being able to create something closer and closer to true intelligence.

If you ask me, this sounds a bit less frustrating (or dangerous) than trying to do the same with our extra terrestrial companions mentioned earlier...