Monday, December 24, 2007

Artificial Intelligence (Or Ignorance)

I have a deep passion for artificial intelligence theories as a software developer and architect. This passion existed as a child, and was one of the emotions that drove me to becoming what I am today. Hollywood and science fiction movies/novels helped this motivation. Now, after many years of being in the industry, I have a deep understanding of our technical capabilities as a human race of today's times.

I want to share some of my thoughts about this topic to anyone who may be interested.
As a child, I remember watching Arthur Clarke's 2001 (a Space Odyssey) in absolute amazement. The special effects blew me away. But being sort of a strange child, I was more fascinated with the way the computer, HAL 9000, could carry on a conversation with a person. I wondered if a computer could actually do this, and if it could, how fun it would be. I had similar feelings of awe from 2010, The Explorers, Tron, etc.

I was so enthralled that my dad purchased a desktop computer for me, a Leading Edge (very expensive at the time), and hired a personal computer teacher to teach me how to program in GW-Basic. I was about 11 years old at the time. I struggled with trying to understand the most basic programming concepts. However, just like any concept that we learn, I had moments of clarity where the light bulb would go off. Even so, I desperately tried to communicate with alien lifeforms by typing in silly commands and hoping the combinations would somehow magically do something.

Unfortunately, no response should have been my sign that there is no such thing as magic. Today, I am all to well aware of this fact. Sometimes I wish I could believe in magic again because of the fun and deep imaginary thoughts that would occur. Logic now rules my thoughts. Don't get me wrong, I love and treasure logic. It is one of the few things in life that can always be trusted and consistent. I use my imagination now in other ways, such as trying to invent, come up with new processes and ways of doing things, etc.

I said all of that to lead up to the fact that artificially intelligence is one subject that somehow squeezes in between logic and imagination for me. I know what is possible today, with our current knowledge and understanding. However, I also know what may be possible in the future.

As of right now, don't expect to be carrying on a free form conversation about various topics with a computer any time soon. We are so far away from having that type of intelligence in software. Not only has no one been able to create a program that even comes close to mimicking HAL in 2001, but our current hardware limitations would make the computer too slow to even be useful.

So how can we get to the point where we have a computer behave like HAL? Inventions. We need lots of inventions of technologies and theories that have yet to be discovered. Here are a few ingredients that will be needed (keep in mind I'm talking about HAL quality here):
  1. A program that has a huge dictionary of "words" and definitions.
  2. A program that can understand concepts from these definitions (this is a huge challenge to over come). This statement is so profound that many won't understand why this is so important.
  3. A program that can begin to relate the concepts to each other and form a greater understanding. Again, extremely difficult task.
  4. The ability to determine good information from bad information based on source and reliability. Another very difficult task (are you starting to see a pattern?).
  5. The ability to apply "fuzzy logic" and rankings to possible answers instead of having a "definite" answer like 99% of programs do today. This has been studied to death so it probably has the most progress.
  6. Extremely stable and reliable base libraries for the core functions of the program. These libraries must have gone through years and years of rigorous testing from any possible angle with zero defects (yeah right). Believe it or not, this will be one of the easier tasks.
  7. The concept of sub-conscious vs. conscious would have to be implemented in the program. This concept is easy to understand. It is similar to an Operating System and a User Application. But the concept must be implemented with a huge amount of safety mechanisms (crashing and infinite loops are not allowed), priorities (sub-conscious always overrides conscious), multi-tasking, event notification (from sub-conscious to conscious), etc.
  8. Atomic computing (or similar technology) to parallel process a huge amount of instructions at once. This probably needs the most inventions.

An so on... This is just a very small list of over all requirements. Each of these would have many details.

I wish I could be the bearer of good news. Alas, I must face reality and say that we are perhaps 100+ years away from having a program behave like HAL. I do want to say it is possible, just don't get your hopes up for seeing this in your lifetime...