weakai
I have been experimenting with various weak AI algorithms. In this repository, I will implement what I have learned and document the sources of my knowledge. Ideally, some day, there will be an accompanying strongai repository, but let's not get ahead of ourselves.
What's included
Here are the packages I've created for AI:
- neuralnet - a Go library for feed-forward neural networks.
- Uses my autofunc package for back-prop.
- Uses my sgd package for training.
- rnn - a recurrent neural network library based on neuralnet.
- boosting - AdaBoost and (more generally) gradient boosting.
- idtrees - identification trees and random forests.
- svm - an implementation of Support Vector Machines, complete with my own solver. I am no expert at numerical analysis or quadratic optimization, but my solver works fairly well on medium-sized problems.
- rnf - Radial Basis Function networks based on neuralnet.
- rbm - Restricted Boltzmann Machine sampler and trainer.
- evolution - a simplistic, not particularly practical implementation of artificial evolution.
- demos - mostly older demos of the stuff in this repository. See the projects below for more interesting demos.
Projects which use this
Many of my projects use this repository. This list is not in any particular order, and is likely incomplete at any given time.
- char-rnn - train RNNs to create text
- seqtasks - benchmarks for comparing RNNs
- neuralstruct - attach data structures to RNNs
- hessfree - Hessian Free optimization
- whichlang - classify programming languages
- samepic - tell if images are of the same thing
- spacesplice - add spaces to text whichhasnospaces.
- haar - visual object detection
- speechrecog - general RNN-based speech recognition
- cubewhisper - speech recognition for Rubik's cube moves
- mnistdemo - MNIST classifiers in action
- svm-playground - SVMs in action
- statebrain - trainable Markov models (basically, inefficient HMMs)
- humancube - generate partial, human-like Rubik's cube solutions
- sentigraph - graph sentiment over a piece of text
- batchnorm - Batch Normalization for ANNs
- imagenet - ImageNet fetching and classification
- algebrain - neural attention to learn very basic algebra
- hebbnet - experiments with Hebbian learning as a recurrent architecture
- poeturn - taking turns writing poetry with an RNN
- gans - generative adversarial networks and experiments
- Used in mustachemash to learn about faces
- chatbot - RNN to have IM conversations (fails Turing test)
- neuraltree - experimental tree-based neural architecture
Sources
- SVMs, ANNs, idtrees, boosting, minimax, constraints, object recognition, and kNN
- Convolutional networks
- Restricted Boltzmann Machines
- Recurrent Neural Networks
Older demos
Here are some of the first demos I made while learning AI
- objectrecog - an implementation of correlative object recognition. First, you show it an object from your webcam, then it finds that object in other pictures. This works surprisingly well for face tracking. This is a web application intended for desktops, since it does not support touch screens and most mobile devices do not support the
getUserMedia()
API. - hopfield - a graphical (HTML) demonstration of Hopfield networks.
- mapcolor - four-color a map of the USA using a constraint search. This is a Go program that modifies an SVG of the USA and outputs the result.
- nearestneighbors - a simple search engine that uses Nearest Neighbors. The search engine itself is far from useful, but at least it demonstrates a technique of Nearest Neighbors learning.
- minimax - checkers AI that uses the minimax algorithm. This is an HTML+CSS+SVG+JavaScript application.