## Artificial Intelligence Technology Reviews

### Written by Stéphane Richard (Mystikshadows)

### INTRODUCTION:

Artificial Intelligence is still a fast growing science. Today, more and more applications of A.I. are created and there's just no telling what the future holds for it. No matter how you slice and dice it, Artificial intelligence has evolved greatly over the past 20 years or so. Today you can find highly specialized fields of A.I. that have very specific applications. This brought me to wring this article whihc aims at giving you the most widespread A.I. technologies with their descriptions along with some reference links for each of them so you can learn more about them and see where they might fit in your projects. Here is the list of technologies we will be covering in this article.

Knowledge Tree Architecture Learning Machine Architecture Process Of Elimination Decision Making Engine Expert Systems Fuzzy Systems | Case Based Reasoning System Support Vector Machines Neural Networks Bayesian Networks Behavior Based Artificial Intelligence Evolutionary Computation

As you'll see here, there's atleast one good purpose for each of these A.I. systems I'll describe here. These fields can be used in anything from games to real simulations to anything inbetween as well as domain specific applications. So have a read, you just might find something interesting here.

### Knowledge Tree Architecture:

What It Is:

Knowledge Trees are, as the name says, more of a data structure than an actual A.I. Engine per se. However, when such a structure is devised and implemented, it makes it easy, with minimal code, to interrogate the knowledge in such a way to answer questions. The general idea behind this structure is that you go up the hierarchy to determine the knowledge element's classification and go down the hierarchy to determine a knowledge element's information contents. You can say that a knowledge tree and it's functionality is more of a search algorithm than an A.I. specific engine however if the tree is organized the right way, the responses you may get might surprise you.

One of the classic example if this type of organization is of course the Life classification tree (the Taxonomy chart) where plant, insect and animal life are grouped under their species groups in order to make the information about a specific lifeform easy to follow down the hierarchy towards the specific details of the given lifeform. With this type of structure you can easily know that a dog barks, has 4 legs, by going down the tree right down to a dog's specific information. Going up the tree will tell you such things that a dog is a canine which is a mammal, which is an animal lifeform, and so on and so forth. It's one of the oldest form of knowledge organization for the purposed of later retrieval of that information there is. It's also one of the best one when it comes to organizing a vast amount of knowledge.

Where you can learn more:

- Tree Search Algorithms
  This reference has information on the many ways you can search a knowledge tree. There are more than one way to do so. For example: The * A* search, Best-first search, Bidirectional search, Breadth-first search, Depth-first search, Depth-limited search, Floyd-Warshall algorithm, Iterative deepening depth-first search and the Uniform-cost search. Find out more by clicking on the link above.
- The Tree Of Life
  Here's a complete example of the classic life taxonomy clart classification system. From there you can gain access to all information about any specific life form be it plants, insects, humans, apes, reptiles, you name it.

### Learning Machine Architecture:

What It Is:

Another one of the classic A.I. fields. One of the first Learning Machines applications was a program that could "learn" to play chess and get better at it with every game it played by somehow saving moves and strategies that it tried that worked. Today, this field pushed itself quite forward where this knowledge can also be statistically and mathematically evaluated to determine the best possible moves based on the current position of the player's pieces and the location of the enemy pieces. Today, a real A.I. based Chess program is quite hard to beat as it can anticipate the player's actions alot more accurately.

Chess playing is not the only field where machine learning can be useful. This technique is still used in many simulation based projects to anticipate reactions to decisions/moves made by one of the elements of the equation. All in all, learning machines are problably the most widespread older A.I. engines you can find.

Where you can learn more:

- The Wikipedia on Machine Learning
  You'll find that wikipedia is your friend when it comes to A.I. research. This is where Machine Learning is detailed along with a wide range of information and links.
- The UCI Machine Learning Group
  This group has great information on the subject of machine learning as well as a derived field of application called data mining. More links are available at the wikipedia link above.

### Process Of Elimination:

What It Is:

This Technique is based on the classic detective Sherlock Holmes. Essentially you define a conclusion by defining all possible exceptions and alternatives and proving them wrong. Once all the of the alternatives have been proven wrong, the one and only remaining alternative therefore must absolutely be right. Of course, in such a system, the more alternatives you can prove wrong (hence enter in the system) the more valid you make the right alternative. Depending on the domain in which you elaborate the system, making sure all alternatives are present and accounted for can become tedious due to the amount of data you need to enter for the alternative.

One of the best system to use to implement this type of A.I. application is of course Prolog (also known today as Visual Prolog). Prolog is just the language to implement process of elimination systems of all types. Whether it's a very small system or a big complex one. Just keep in mind that this specific type of A.I. application can only be as accurate as the data it works with. The more complete dataset the more precise the conclusion the system will arrive at.

Where you can learn more:

- The Visual Prolog Website
  If you're curious about Prolog, this website offers a personal edition of Visual Prolog that you can download. It is a complete I.D.E. that allows you to edit, test and compile your Prolog based applications.
- The Prolog learning Resources
  Since learning Prolog is an experience on its own. here's a link with alot of learning material of all types to help you get started the right way.

### Decision Making System:

What It Is:

We can define a decision making system as an application that can come to a decision, a choice between two or more alternatives (conclusions). The means by which the system can arrive at that decision is where the science lies in this type of A.I. application. The main idea behind decision making can be pushed all the way to actually making a decision. It seems however that Decision Support Systems are the most used types of decision making systems. Basically help the user arrive at his own conclusions based on what the support systems yields as results.

One of the most widespread of these tools is of course the "Monte Carlo Method". This method is often used in business when evaluating risks of failure of projects and/or investments strategies. But it doesn't stop there. Monte Carlo excels when the need to calculate results based on many variables (that are hard to calculate) are involved. For example, Integral calculations. But there are also other fields where the Monte Carlo Method can be applied. As you'll see when you take a look at the links below.

Where you can learn more:

- The Wikipedia on Decision Making
  As you'll see here, the wikipedia has a wide range of information and links on the subject. Take the time to see what is in there, decision making can really be used in a wide range of fields, some of which you might not have thought about.
- The Monte Carlo Method
  The Monte Carlo Method was and is so used that a whole wikipedia page has been created. Still today, Monte Carlo is one of the most general purpose analysis method used and as you'll see when you read up on it, there's many reasons why.

### Expert System:

What It Is:

Expert System is a class of A.I. that has been developed back in the 70s by researchers in artificial intelligence. This concept serves to simulate how an expert in a given field would act or react to a given situation that requires his expertise in the field. Contrary to popular beliefs, Expert Systems are not meant to replace the experts but rather work with the expert on a given situation. It's common practice that the expert be present to change and adapt the expert system depending on what new technologies and theories arise in his particular field of expertise.

Expert systems are used all over the place in car diagnostics, medical field, and so many other fields. Expert Systems are designed to work with a wide range of domain specific data in the field. As such, and because of the vast amount of related data needed by an Expert System, it's usability is usually restrained to a very specific area of expertise. If it wasn't, the amount of research, analysis, calculations and processing needed would become quickly overwhelming.

Where you can learn more:

- The Wikipedia on Expert System
  Always the best first place to look for information on Expert Systems. You'll find a wealth of information and links there to help you get an even bigger understanding of the this specific A.I. field of application.
- RuleWorks Knowledge Management
  This website offers a complete cross-platform rule based development system combined with one of the most powerful high level rules-based languages and fastest inference engine.

### Fuzzy Systems:

What It Is:

Fuzzy Systems (Fuzzy Logic itself) is a science that deals with uncertainty. It is designed to reason approximately rather than precisely. Fuzzy systems are probably the most wide spread of the A.I. systems yet it is also one of the most contraversial. For example, statisticians reject it because they claim that probability is the only sure means of defining uncertainty. Nonetheless, Fuzzy logic has it's share of userbase and so far has proven itself amongst all the uncertainty based domains.

Fuzzy logic is widely used to control household applications like a washing machine (to determine the load size and adjust the washing cycle accordingly) or even a refrigerator. The best area where fuzzy logic is used is in high-performance error correction to improve information reception over a limited-bandwidth communication link affected by data-corrupting noise. For example Two decoders may analyse the data in parallel, arriving at different results for the values intended by the sender. Each can then use as additional data the other's likelihood results, and repeats the process to improve the results until a consensus is reached as to the most likely values.

Where you can learn more:

- Wikipedia - Fuzzy Logic
  This will explain, in even more details, what exactly this technology is. It also offers many links to other places with plenty examples of application on this A.I. field.
- Image Classification Based On Fuzzy Logic
  A 6 page PDF that defines how fuzzy logic is used in GIS (Geographical Information Systems) applications. And what it actually helps determine from the image.
- Application Of Fuzzy Logic in CA/LGCA Models
  CA/LGCA (Cellular Automata/Lattice Gas Cellular Automata) Models are used in the medical field to analyse models of epidemic spreading for example.

### Case Based Reasoning Systems:

What It Is:

Case Based Reasoning Systems are applications designed to solve situations and problems based on similar past problems. For example, a computer technical support that fixed a printer that won't print based on other printers that weren't printing that he fixed is using case based reasoning. There are many other fields that use case based reasoning as well. Anything that can be solved based on other solutions to the same kind of problem that worked before can be thought of as case based reasoning.

In essence, Cased Based Reasoning Systems is based on a four step analysis method. The first step is "Retrieve" which means that when a situation occurs the first thing to do is to recall any and all past experiences that was of a similar nature that pertain to the current situation. The second step is "Reuse" which means that if the past situations were solved using a given suggestion, they should be applied here first to see if they will solve the current situation as it did the past one. The third one is "Revise" which is apply the passed solution to the current situation to see if it worked or not. The last step is "Retain" which means when the solution has been applied (adjusted if needed) to the situation and it worked, save it as a new case to add to the arsenal of past experiences to work with.

Where you can learn more:

- The Wikipedia On Case Based Reasoning
  Where would we be without our trusted wikipedia pages. As you'll see in this page, there's alot of situations and fields of expertise that can definitaly truely benefit from case based reasoning.
- Managing Multiply Case Bases: Dimensions and Issues
  Here is a paper that explains a derived science called Multiple Case Based Reasoning (a technique that gives a standard Case Base reasoning system the facilities for problem dispatching. See how this can be useful.
- Visualisation of Case Based Reasoning for Explanation
  This is a PDF file that explains in detailed an application of Case Based Reasoning. It is about 10 pages long and I think you'll find it quite interesting to see how and where Case based reasoning is used in this document.

### Support Vector Machines:

What It Is:

Support Vector Machines are defined as a set of related learning machine used mainly for classification and regression. A vector means that it works with a list of related elements or items that have to do with the give system to analyze. For example, sets of data that may need some form of classification before it can be processed in some way. SVMs are typically used in combination with other A.I. methods as their main purpose is to organize data (much like the knowledge Tree Architecture) but in lists of related classified items rather than a hierarchy or tree of items.

One of the fields that this method can be used for is GIS systems where perhaps longitudes and lattitudes may need to be geographically sorted out before one can apply any geographic based calculations or apply a dataset of elements over a specific geographical set of longitude and lattitudes. In that respect, there are of course many mathematical fields where such a technique can be applied for example to analyse the graph of a mathematical function or specific formula.

Where you can learn more:

- The Wikipedia On Support Vector Machine
  Once again the wikipedia has good information on Support Vector Machines. You'll see a very detailed explaining of what SVNs really are and how they are used.
- Support Vector Machines A Quick Tutorial
  This website is a tutorial on Support Vector Machines. It explains very well how to use this technique as well as gives you other ideas of application usage.

### Neural Networks:

What It Is:

This techniques was inspired entirely by the way neurons work in our brains. A Neural Network is nothing more than a much of neurons (nodes) interconnected to each other (exchanging information) in order to seamingly work as a group towards a final result. Each of these Units are so simple that their states are represented by a single numeric value. Each of the units generate their results based on their activation value. In the network, some of these units can weigh more than others (influence the outcome) and that influence is also represented by a numerical value. Needless to say that Neural networks since they start as very simple elements need to be trained into their application so to speak. Hence before a neural network can be used, it must be "educated" into what it is dealing with, how it will deal with it and what the output should be based on what they should do with these values.

One of the major fields of applications of neural networks is pattern recognition. For example, the ability to recognize a person in a photograph based on the evaluation of the distance between the eyes, the width of the mouth and nose, facial characteristics like scars (if any) and the likes. Needless to say that Finger Print recognition would be a good application of a neural network system. It's among the newest A.I. engines and more and more fields of application of neural networks are discovered as it's usages evolves and progresses.

Where you can learn more:

- The Wikipedia On Neural Networks
  This Wikipedia page explains Neural Networks in greater details and offers a vast amount of other readings and links to where you can see Neural Networks and how the are used.
- COmputational Intelligence Library
  This link gives you a complete, GPLed library for neural networks that you can of course freely use in your A.I. projects. Looking at how it was implemented (the source code) should give you a good idea of how it can be useful for you I believe.

### Bayesian Networks:

What It Is:

Bayesian Networks are best described as graphs. Calculated graphs that give you 2 types of information. The points (or nodes) on the graphs represents the variables themselves while the curves on those same graphs represent the dependance relations between the variables of the graph. Learning the structure of a graph, in the case of Bayesian Networks, is just as important as the data (nodes and curves) that were generated as it also describes the recipe, so to speak, that was used to generate the graph.

Bayesian Networks are used for modelling knowledge in such fields as gene regulatory networks, medicine, engineering, text analysis, image processing, data fusion, and decision support systems. with this wide range of applications, it goes without saying that like neural networks, a Bayesian networks need to be trained into it's field, however, the training principles differ from the list of numerical values needed by a neural network because numbers, formulas and rules can be used to train a Bayesian network.

Where you can learn more:

- The Wikipedia On Bayesian Networks
  Even reading about it in the wikipedia is somewhat mind boggling, it seems Bayesian networks are definitaly best explained by using examples rather than theory and definitions. Luckily, this wikipedia link offers some examples of them.
- Analysis of Survival Times Using Bayesian Networks
  Here is a PDF file that clearly describes a good usage of Bayesian Network implementations. This is basically a PDF version of a powerpoint presentation. Therefore it is rather simple in its contents which makes it easy to read even if it is about Bayesian networks.

### Behavior Based Artificial Intelligence:

What It Is:

This is a process by which a character (in a given seen) is predetermined to follow a specific set of rules as far as it's environment is concerned. The oldest of such example is the classic game of life where a dot lives as long as there isn't too many neighbours in which case it will die. But today things have evolved a whole lot in that field of Artificial Intelligence.
One of the best modern examples of this is a group of whales the travel from place to place, there is typically a leader in the group, if they detect a good enough concentration of plankton, they will dive to eat but if it's not a high enough concentration of food, they will typically just keep on travelling. The whole process involves setting things in regular motions and adding influencial parameters to the general formula. Needless to say that there are many domains where this technology can prove to be more than helpful and useful.

Where you can learn more:

- Wikipedia - Behavior Based A.I.
  This will explain, in even more details, what exactly this technology is. It also offers many links to other places with plenty examples of application on this A.I. field.
- Computer Visualization Of The Marine Environment
  If you want to see a complete application of this technology you can take a look at where the whole website is about fish schooling and other behavior based simulations.

### Evolutionary Computation:

What It Is:

Evolutionary Computation is a rather brand new field, technically a subfield of Artificial Intelligence itself. This can't be eplained in once sentence alone because Evolutionary Computation is really a set of sub technologies that can all be used with the goal of achieving Evolutionary Computing. Evolutionary Computation can be recognized by a list of criteria. These are: Iterative progress, growth or development, population based, guided random search, parallel processing and they are often biologically inspired. In other words, they are often simulation of real world biological evaluation and organization that can be observed in biology.

As you can imagine, one of the main fields of application of evolutionary computation is life and ecosystem simulation. The classic game of live can be thought of as the first Evolutionary Computation experiment in a way. Where Behavior Based A.I. focus on the intelligence of animals and how they respond to their surrounding in a present context. Evolutionary computation can be thought of as as how an organizm, life form, human, anything else that can evolve, adapts to it's current environment if a need to adapt is present. Sure some of this can be implemented in behavior based A.I. But Evolutionary Computation is idea when simulating organisms and other lifeforms that actually need to genetically mutate in order to really adapt to their surroundings. As you can see, this ends up being a very different type of application all together althought some mutations are caused by a reaction to an organism's environment and direct surroundings.

Where you can learn more:

- The Wikipedia on Evolutionary Computation
  The wikipedia is once again the best place to start providing alot of related information and references. It also provides a much more technical explanation of what Evulitionary Computation is all about.
- Evolutionary Computation Laboratory
  The Evolutionary Computation Laboratory at George Mason University consists of a group of faculty, students, and affiliated scientists and engineers who conduct theoretical and applied research in the area of Evolutionary Computation.
- EO Evolutionary Computation Framework
  From the website: "EO is a templates-based, ANSI-C++ compliant evolutionary computation library. It contains classes for almost any kind of evolutionary computation you might come up to - at least for the ones we could think of. It is component-based, so that if you don't find the class you need in it, it is very easy to subclass existing abstract or concrete classes. "

### IN CONCLUSION:

There's no doubt that Artificial Intelligence is a very broad domain that has many fields of applications. It's also no doubt that each of these fields of applications ramify themselves into even more sub fields. It would take a very big book to really cover everything you need to know in the field of Artificial Intelligence. What I hope to have gained with this articile is that I have made you curious enough to persue your quest for knowledge in the A.I. Field. One of the main reason each A.I. technologies I described here includes links to even more information about the technology.

I'm always open to discussions and answering questions, exchanging A.I. experiences and Method of operations with anyone, so if you have a question, if you know of a specific application of one of the fields mentionned here that I haven't specified, be sure to email me (see my email below) and let me know about it. I'll be happy to modify this article to reflect this new found information. Until next time, happy coding and learning (if you choose to further study one of these fields).

MystikShadows
Stéphane Richard
mystikshadows@gmail.com