libgnn : The Gradient Retropropagation Machine Library. A demonstration of a what can be accomplished by GRM-based design.

Download the source code and get the documentation. Also, check out grm: neural networks for your command line!

Towards Elegance

One of the mayor efforts and advances in Strong AI investigation is the development of Neural Networks.

Nowadays, Neural Networks have become one of the most flexible and powerful tools to model continuous systems.

We provide a flexible, modern and unified scheme for them: Gradient Retropropagation Machines.

The grm command line tool.

grm is a command line tool that runs custom neural networks or GRM's on the command line. You provide a simple text file with your desired architecture, and grm interprets it, trains it, and stores its parameters. Running neural nets never were so simple!

1. Train your specified network with your custom training set. grm optimices the network's parameters and stores/updates them.

2. Evaluate new input examples using the tuned parameters.

Available Building Blocks

Some example architectures

These are some classic architectures, depicted and with its corresponding grm-specification.

    serial(
        weight(3, 4),
        logistic(4),
        weight(4, 3),
        logistic(3)
    )
    serial(
        prototype(2, 4),
        gaussian(4),
        weight(4, 4),
    )

Test Sets

The following are training sets for test purposes. You can play with different architectures to check its performance. Some of the original sets have been slightly adapted to work correctly with grm.

The Breiman Base: Very tricky set of waveform data, with 40 inputs, where the last 20 are noise features.

Ionosphere: This radar data was collected by a system in Goose Bay, Labrador. This system consists of a phased array of 16 high-frequency antennas with a total transmitted power on the order of 6.4 kilowatts. See the paper for more details. The targets were free electrons in the ionosphere. "Good" radar (target=1) returns are those showing evidence of some type of structure in the ionosphere. "Bad" (target=0) returns are those that do not; their signals pass through the ionosphere.Very tricky set of waveform data, with 40 inputs, where the last 20 are noise features. [Source: Space Physics Group]

Iris Plants Database: This is perhaps the best known database to be found in the pattern recognition literature. Fisher's paper is a classic in the field and is referenced frequently to this day. (See Duda & Hart, for example.) The data set contains 3 classes of 50 instances each, where each class refers to a type of iris plant. One class is linearly separable from the other 2; the latter are NOT linearly separable from each other. Predicted attribute: class of iris plant. [Source: R.A. Fisher]

Wine recognition data: These data are the results of a chemical analysis of wines grown in the same region in Italy but derived from three different cultivars. The analysis determined the quantities of 13 constituents found in each of the three types of wines. [Source: Forina, M. et al, PARVUS - An Extendible Package for Data Exploration, Classification and Correlation.]

Servo Data: Ross Quinlan: This data was given to me by Karl Ulrich at MIT in 1986. I didn't record his description at the time, but here's his subsequent (1992) recollection: "I seem to remember that the data was from a simulation of a servo system involving a servo amplifier, a motor, a lead screw/nut, and a sliding carriage of some sort. It may have been on of the translational axes of a robot on the 9th floor of the AI lab. In any case, the output value is almost certainly a rise time, or the time required for the system to respond to a step change in a position set point." [Source: Karl Ulrich (MIT) in 1986]

Requirements

In order to compile grm, you need a working libgnn installation. Otherwise, download the executable binary for your platform.