Quote: "What is the next step in this ANNE project?"
Two phases, probably at once, so no updates for a little while.
Phase 1: Update ANNE for more efficient memory use using memblocks.
Phase 2: Update ANNE to allow multiple Neural Nets to operate at once.
I am particularly excited about this second phase because it will allow a new level of "intelligence" to be added to a single entity. Take this simple demo as an example. Instead of all of the bot's functions (input, forward movement, & backward movement) being handled by a single neuron cluster, multiple neuron clusters can be created. Different functionalities can be handled by smaller, more efficient clusters. Or, multiple AI entities could be created for the same program (right now, only one ANNE per program allowed).
Quote: "What I mean is, how do you handle the amount of error (I think in ANNE it is the score) when adjusting the weight applied to the charge?"
The error correction is one of the "genes" within each neuron's "dna". When a charge comes into a neuron, it is filtered through the function below. The Curve value adjusts the number of standard deviations in the distribution model that is the result of the calculation in the function. The Curve value is also one of the "genes" within each neuron that is monitored and modified by the INeurons. End result; Error Correction is a "learned" attribute. Each situation in which the ANNEngine could be placed is different, so the Error Correction would be different as well.
`Sigmoidal(value#,curve#): This formula returns a value between 0 and 1 (exclusive) in an "S" shaped curve.
`The larger the curve# value, the more streched out the curve. Negative curve# values may used, inverting the "S" shaped output.
Function Sigmoidal(value#,curve#)
`the sigmoidal formula. Graph this on a spreadsheet to see how it works.
result#=1.0/(1.0+2.04541^-((value#)/(curve#*.1)))
`The result# is a value between >0 and <1. Curve is the number standard deviations in a normal distribution.
Endfunction result#
Quote: "What I mean is, is can you use one neural network or many at once."
Currently, only one at a time. When I rewrite ANNE to use memblocks, each memblock will be a single neural net.
Quote: "The other part is, if you have one neural network, then how can you handle multiple problems? Are there only a fraction of the neurons working on one problem when there is another fraction working on another?"
At any given moment, there is no way to tell. The entire neural net works together. Let's say an input neuron passes a charge through a chain of neurons. One of those neurons in the chain is neuron #403. Not only could another chain of neurons pass through #403, but the same chain could loop back around and pass right back through #403.
When neurons link to each other, there are really no restrictions. Initially, the only requirement is that a newly created neuron can only link to existing neurons. So neuron #403 cannot initially link to neuron #557. However, when being "trained", the neuron tries out different links, so at some point, neuron #403 can link to neuron #557.
The can create loops. There is nothing preventing #403 from linking to #557 and #557 from linking to #403 (larger or more complex looping is possible). This can provide a continuous charge within the loop. However, the charge is probably not stable and will either grow to its maximum values, or it will dwindle and fade away.
There are three factors that should minimize the out-of-control charge growth from occurring too often. The first is a Resistance gene within each neuron. When a charge is coming into a neuron, it is divided by the resistance value (which has a minimum setting of 1.0). The second factor is a Dissipation gene that lowers the neuron's stored charge each frame. And the third factor is the sigmoidal calculation. Once an incoming resisted charge falls below the sigmoidal curve's center point, the incoming charge is reduced to nearly 0.
Quote: "Is there a way to make the neural network as perfect as possible? (Error free) Would you have to adjust something?"
Probably not. Learning is a trial and "error" process.
ANNE could be far more efficient and learn considerably faster. But for now, computers are too limited.
Open MMORPG: It's your game!