Cpp - Open Neural Network v. alpha0.5
Educational purporse - for now. The purpose is only to keep growing an open source community on machine learning.
C++ Project that can build a simple multi layer Neural Network able to handle XOR logic problem: an non linear classification problem.
It uses a supervised learning, actually a Back Propagation training methods that tells where to seek the "needle" according to a set of training. It compares a bunch of Expected Outputs and Actual Outputs to get a "Layer Error". It's the usual form of a Neural Network.
Need the implementation of a Genetic Algorithm to create a reinforcement training. It could be less efficient than a back propagation learning but would better handle others problems like solving sudoko, or optimizing space in a limited space backpack by example.
No additional libraries used except from the std ones. I added a personal Randomize Class that computes a unique int or float between a given range.
What is a Neural Network?
The project is separated into 4 classes that create the Neural Network (network.h): a bunch of connected (connection.h) neurons (neuron.h) organized by a layer (layer.h). The Neural Network can handles differents layers: X neurons *literal asterisks* X connections; and communicates between these layers to train them (back propagation learnin).
If you want to learn more about Neural Network, you better read this great article of Sach Barber: AI : Neural Network for beginners
What to do next?
A bunch of articles to give ideas on how to optimize and improve this neural network:
- cuDNN Deep Neural Network Library by nVidia
- Efficient mapping of the training to a CUDA based-cluster
- Neural Network for SARAH (french)
- SARAH Documentation (english)
- AI Life
- Deep learning with image recognition