OpenAI
|
OpenAI |
 |
An open source approach to creating advanced tools for Artificial Intelligence development.
 |
|
|
 |
 |
 |
|
Elsewhere on the Web
|
Nevrax.org
<Sluggish Downloads
|
|
 |
| |
|
Open source philosophy is slowly entering the AI
world. Proprietary, closed software solutions ruled this area for a
long time, but the success of Linux and other similar projects
convinced people that the open source approach is the way to go. I
already described some really unique and interesting AI related
projects that you can join. What follows is a description of the <OpenAI project (mirror site on Sourceforge), focused on creating configuration and communication standards for both new and traditional AI tools, some of which are described below. The implementations created by the OpenAI team will be done in both Java and C++. The project is in its infancy stages and the team is looking for core developers, application developers who can make use of the OpenAI Engine and those who are just interested and would like to contribute.
Now for a description of the tools that (so far) make up the OpenAI Engine:
Neural Network
The OpenAI neural network architecture is very abstract. It's
essentially just a way of allowing modular learning algorithms, input
functions, transfer functions, etc. to be assigned to the network and
layers. The primary goal was to not constrain the user/programmer in
any way. However, it's still being tested and improved: your feedback
will help further development.
The following items are completely modular with an example in parentheses:
Architecture (MultiLayerFeedForward)
Error Function (MeanSquareError)
Input Function (DotProduct)
Learning Algorithm (Back Propagation)
Transfer Function (Sigmoid)
Other features:
Both configuration and persistence of the Neural Network will be realized through the use of XML.
The Neural Network has a CORBA interface that allows creation, configuration, iteration and retrieval of results.
Finite State Machine
While the Finite State Machine may be a simple concept, it is a pretty
powerful and useful one. OpenAI implementation allows developers to
extend the States and Transitions to suit their needs. In addition,
and event-based notification system gives the ability to track changes
in State and changes to the FSM's configuration.
Applications for this package would include creating parsers for
formal languages, itineraries for mobile agents, or wizard-like user
interfaces that advance according to the user's input. One of the
commercial products already makes use of this wizard capability.
Core Functionality:
Machine - The FSM itself. You set the start state for the Machine and give it inputs to determine the next State.
State - A literal state for the Machine. The API provides a
method to add transitions to other States given that a particular Condition is met.
Condition - A condition that must be met to transition the Machine
from one State to another.
Extensions:
In addition to the Core, the API gives the developer the ability to
monitor both Machine- and State-level events. These events include the
entering and exiting of a state, the changing of the start state, and
the changing of the flag that indicates that an end state has been
reached.
The FSM API also provides some common Conditions:
AnyCondition - Will match any input into the machine.
BooleanCondition - Will match a boolean passed into the
machine if the desired value of true of false is met.
ComparableCondition & EqualsCondition - Two flavors of testing to see if a particular input into the machine is equal to the desired object.
Genetic Algorithm
The Genetic Algorithm library is intended to be an easily extensible
object-oriented implementation requiring as little programming for
the algorithm as possible yet still providing flexibility, power, and
performance.
The Genetic Algorithm allows for multiple 'Worlds' to be created and
evolved. Each world is a solution model and houses the population
objects that make up the current solution to the problem. The
population objects can be constrained with different population
criteria to choose which groups are chosen for survival.
Intelligent Mobile Agent System
The agent system is still in development but the specifications are available for most of the system.
The agents are threads, and will be mobile. The agents allow for
different decision mechanisms (finite state machine, neural network,
Bayesian network, etc.). The system will support encryption of
different levels: SSL and possibly kerberos authentication will be
used. The agents will have the ability to "find each other" and
communicate either directly or through a shared messaging system.
The system will allow for survival of agents across reboots and
network difficulties. Persistence will be done through XML or an
agent specific markup language.
That's about it for our first look at the OpenAI project. For more
information, several mailing lists/IRC channels listed at the
project's home page are bringing
developers together: join them for a productive discussion and
exchange of fresh ideas. The development team can be contacted via e-mail at [email protected]