A machine learning framework based on Anti-Hebbian and Hebbian (AHaH) neural plasticity. This project is an archive of code referenced from our 2014 paper: AHaH Computing–From Metastable Switches to Attractors to Machine Learning.
The AHaH! project is a set of tools that can be used to solve a wide range of artificial intelligence and machine learning problems. All key functionality is based on operations that can be attained through use of an Anti-Hebbian and Hebbian (AHaH) Node. An AHaH Node is a perceptron neuron operating the AHaH plasticity rule. The AHaH Node has been mapped to physical memristor circuitry and NPU development is ongoing. By restricting machine learning algorithms to functions that can be attained with the AHaH Node, the AHaH! software provides a bridge between the CPU of today and the NPUs of tomorrow.
The AHaH Node is universal. Its attractor states are universal logic gates and optimal classification boundaries. It can operate in supervised, semi-supervised or unsupervised modes and has shown solutions to classification, unsupervised feature extraction and clustering, motor control, and combinatorial optimization. Capabilities such as tracking of non-stationary statistic and unsupervised healing have also been demonstrated. The AHaH node is a "building block" from which a universe of machine learning capabilities are now emerging. Currently the AHaH! project has specific modules targeting the following areas of machine learning:
- Metastable Switch Memristor Model
- Functional and Circuit-based AHaH Node Models
- Supervised and Unsupervised Classification
- Unsupervised Feature Extraction and Clustering
- Unsupervised Robotic Actuation
- Combinatorial Optimization
- Signal Prediction and Forecasting
All software is copyright (c) 2013 M. Alexander Nugent Consulting and licensed under the M. Alexander Nugent Consulting Research License Agreement.
See LICENSE.txt for more details.
Some source files for working with the MNIST data in the module 'ahah-samples' (MnistManager.java, MnistDbFile.java, MnistImageFile.java, and MnistLabelFile.java) are copyright alex pankov and we've included the source code in compliance with the 'Artistic License'. (https://code.google.com/p/mnist-tools/ß)
AHaH! is built with Maven.
cd path/to/ahah-parent
mvn clean install
mvn license:check
mvn license:format
mvn license:remove
mvn javadoc:aggregate
All the sample applications that are part of the AHaH! project can be run from the command line, and a Java JRE version 6 or higher is needed. For each sample app, a description, tips for running the app, and the argument list is given in the corresponding source code. Each app is configured to take a list of parameters which you can use to tweak and experiment with. The default argument values are in parentheses.
Please email M. Alexander Nugent Consulting at i@alexnugent.name for any questions or licensing inquiries.
Project Site: http://knowm.org/open-source/ahah/
Example Code: http://knowm.org/open-source/ahah/ahah-example-code
Change Log: http://knowm.org/open-source/ahah/ahah-change-log
Java Docs: http://knowm.org/javadocs/ahah/index.html