Rhayader comprises multiple Machine Learning engines, allowing you to compose them using Rhayader Combinators. TBD
Spiking NEAT is an enhancement of the NEAT algorithm to leverage **Izhikevich Logistics** as the activation function. This will require several iterations to converge on the activation, and the resultant spike trains shall be encoded.
- We have some default extensions set up in the Cabal file.
- During the initial handshake, SN will send to the Dealers(s) the initial Population ID(s)
- The Dealer will start streaming to SN.
- SN (the Router) will receive this stream, and give it to the population(s) for
result evaluations
- SN, asynchronously, will send this result vector back to the Dealer
- The dealer – during the training phase – will compute the error vectors
- The Dealer will send the error vectors back to SN
- Upon receiving the error vector, SN will evolve the population, along with a new population number.
- The Delear will receive the updated population ID(s) and discard the old ones.
Sequence Diagram (not to e confused with Sequence IDs!)
| Step | SN Router | Data Client | Eval Client | Go to? |
|---|---|---|---|---|
| 0 | Start SN | after SN, Start Client | ||
| 1 | prep initial PopIDs | <– send StartStrean | ||
| 2 | send PopIDs –> | recd PopIDs | ||
| 3 | get data | |||
| 4 | recd Payload | <– Payload Stream(w/PopIDs) | ||
| 5 | Result vectors –> | –> | recd Result Vectors | |
| 6 | compute errors | |||
| 7 | recd error vectors | <– | <– send error vectors | |
| 8 | Evolve populations | |||
| 9 | new PopIDs –> | recd PopIDs update | ||
| 10 | if not done | Goto 3 | ||
| 11 | tidy up resources | <– otherwise send EndStream |
Since we will initially train on the crypto market, we will look at multiple time periods. Like 5-minute, 10-minute, 30-minute, 1-hour, 1-day, etc. Why not have a different population for each? And we can allow cross-breeding among populations. A critter that does well in one time period is likely to also do well in an adjacent time period. So multiple result vectors will be sent back to the Dealer, one for each time period. Error vectors will then be sent to SN for evolution.
- There is no need to send all of the population error vectors back right away, since what might be done on the 5-minute klines may not be complete on the 15-minute klines.
The Eval Client, while could be a part of the Data Client, is made a sperate module for scalabiliy purposes. Since the clients can be written in any language, the intent is to offer the greatest flexibility possible.
