Neural FAQ

  1. What exactly is Neural?

  2. Is this Artificial Intelligence?

  3. What are Neurons in this program?

  4. Does this program learn from events?

  5. What are Clusters?

  6. What is the Trigger?

 

1) What Exactly is Neural?

Neural is a decision engine that uses multiple inputs and a probability calculation to select a single output that then may be applied to multiple other items.  The biological analog would be a neuron in the mammalian brain where multiple dendrites provide input into the core of the neuron, known as the Soma, where all the inputs are evaluated and a single output is generated which travels down the Axon until it reaches the various terminal buttons, at which point this output signal is passed on to become inputs to additional dendrites for the next group of neurons.

In similar fashion, Neural uses as it's inputs a variety of HAL data elements plus a trigger, that when triggered cause Neural's logical equivalent of the Soma, it's decision engine, to evaluate all the possible inputs and decide whether to output a signal or not, and when the decision is to do so, the output signal is passed along to various other HAL data elements thus potentially becoming inputs to the next Neurons in the path.

2) Is this Artificial Intelligence?

No, not exactly.  Or, sort of.  But it does borrow some ideas from simple AI software systems.  Essentially, it utilizes a "decision engine" whereby numerous possibilities are given "weights" and a choice is made among the various possibilities.  A randomization function ensures that while weights strongly influence the output, a given output is not assured.  Any possibility with a non-zero weight has some probability of being chosen.  The exact probability depends on the weights of all the possible choices.

3) What are Neurons in this program?

Neurons are essentially database entries.  Upon receiving a trigger, the database is scanned and all related expressions evaluated.  The values thus generated are then passed to the decision engine, and one possible output is selected.

4) Does this program learn from events?

Not necessarily, although it can be structured so that the selection of one output can provide feedback into the probabilities that determine the next decision.  In this sense, a rudimentary form of learning can occur.  More properly, it might be claimed that this constitutes a form of "Fuzzy Logic" where any given output choice is not fixed, but rather probabilities shift based on many different events.

5) What are Clusters?

Clusters are groups of Neurons that share a single trigger.  A cluster may have as few as one (but WHY?) or as many as desired individual Neurons.  In practice the ideal number of neurons in a cluster is around a dozen, give or take.  The largest Cluster in my development configuration is 3 dozen, and the smallest is 3 Neurons.  The main constraint is really just how long the program should be allowed to process a trigger. 

Ideally, a Trigger event should take much less than one second to process.  As the size of the database becomes larger and larger, the execution time becomes longer and longer.  Smaller is better, but there is no obvious arbitrary limit beyond which the program breaks down.

One future enhancement being considered is dividing the database structure into multiple files, with one data set per cluster.  That would make very large Neuron sets perform better.  But so far the current architecture seems to deliver excellent performance, so such an enhancement is not deemed necessary.

6) What is the Trigger?

The Trigger is generally a HAL Action, but it can also be many other things such as a scheduled event, or a call from another, unrelated program.  The trigger is essentially a DOS Command line call to the program which passes some parameters, such as Cluster number.  When a HAL Action is used as a trigger, it takes the form of a "Run Program" action.