AI The Old Way
A decade ago, when my main thought was in developing characters and functionality in video games, the thought process I went through essentially was cheating. If I wanted a character to get through a set of hallways and ensure he always got through, I could simply have him always turn left, building a map along the way including all of the areas where he ran into a wall. I could make it more interesting by inserting patterns that looked intelligent, but were really pre-programmed behaviors - for instance, turning right on occasion until getting back to a known location and continuing the iteration, or maybe pacing back and forth along certain doorways, or even finding an easy to defend area and staying put.AI Outside the Box
Now I don't think of artificial intelligence in terms of a given task - but instead as a set of arbitrary tasks comprised based on a set of arbitrary data, providing an arbitrary result set based on the best possible results.Programming with a task in mind is cheating. You know what your data looks like. You know what the result set you are looking for should be - or at least should appear to be. We're never going to get anywhere if we continue along that path - at least nowhere quickly. This kind of thinking is good for developing potentially important algorithms - decision making formulas that bring about high probability results or perhaps quicker results than a full analysis would take.
But we have the tools to do better. Arbitrary recursion is an inherent part of virtually every programming language with any amount of popularity today, and most languages have the capability of developing or enhancing functions from within the code base and then executing those functions. We typically think about this functionality in terms of string handling or perhaps to transform data sets, but why not take it a step further and build something that will keep building upon itself.
In an ideal world, the software would act like a child. Obtaining and retaining data - keeping some of it long term and some of it short term. Identifying patterns within the data that is retained and learning how certain things relate to each other. Some things relate abstractly, some things relate directly. Some things are seemingly unrelated but play a part in our decision making process (the subconscious relationships). Some observations and formulations are more appropriate in certain situations than in other situations.
Think about a few things...
- arbitrary functionality
- arbitrary analysis
- indiscriminate data model development
- success recognition
- training, observation, re-analysis
- idle time thought processes
It's really a matter of mapping out your own thought processes and putting them down. The biggest problem is in understanding that the data we put through our bodies every day does not necessarily fit within a fixed model, but rather an organic one. Organic means there are regular shaped models to be observed and optimized, but it also means that any one model will not be sufficient - so along the lines of arbitrary code, think along the lines of arbitrary storage as well. Don't forget to forward think in terms of adaptability to other types of tasks, enhancement as research accumulates, and of course, keeping the whole think simple enough that you can understand your own thought processes later.
AI Outside the Box Interaction
