Project Definition - kwsaxman/NeuralNetworks GitHub Wiki
Welcome to the NeuralNetworks wiki!
Git: https://github.com/kwsaxman/NeuralNetworks.git
Abstract
Create a framework to create neural networks capable of solving simple math problems. The framework should be provided with specific input and output. The framework will create a neural network which will produce the specified output when given the corresponding input. The framework should first be made to solve a small subset of math problems, but then it should be expanded to solve a larger variety of problems.
Design
The design consists of the following components
- Neural Networks - Nodes, edges
- Test Framework - Tests Networks for accuracy/correctness
- Evolutionary/Learning Algorithm - Modifies Networks to improve accuracy/correctness
- Compression Algorithm - Simplifies Networks that are too big. Removes redundancies. Driver
Neural Networks
Resembles logic circuits. Consists of Nodes and edges. Two types of nodes, AND (+) and NOT (-). Nodes can also be either starting, ending, or middle nodes.
Test Framework
Fairly simple framework to check how close a network is to a correct answer. Should provide more feedback than just “right” or “wrong”. Some kind of accuracy score should be used to determine if one Network was closer to being correct than another.
Evolutionary/Learning Algorithm
TBD - this is where the success/failure of this project lies. Could use known machine learning techniques.
Compression Algorithm
Searches for unnecessary complexity and removes it. Two types of compression, lossy and lossless. Lossless compression will not affect the output of the Network. Lossy compression should only affect output to a minimal degree. Networks which have been Lossy Compressed, can be put through the test framework again and can differ in accuracy score by a specified degree.
Driver
The driver should and input file and output file. The initializes a neural network. Runs the network through the test framework. If the network does not complete the tests with a high enough accuracy score, apply the evolutionary algorithm. Repeat this process until a high enough accuracy score is achieved.