Basic Configuration

The HLAM package uses a central configuration object to setup and store networks. This will be referred to as the app structure. The app structure contains the initial configuration of a learning environment, as well as the resulting network after running the algorithm.

Examples of configurations and useful training and test data sets are available in example/networks.mat.

Type of Learning Algorithm

Two essentially different learning methods are available. Offline learning processes a complete set of data in one go. Online learning feeds one sample at a time to the network using a different adaption strategy.

Data Sample Specification

Data sets are organized in N x D matrices containing N samples of D dimensions, i.e. samples are handled as row-vectors. The meaning of components may differ within a sample and must be specified using the app.dataSample substructure.

Important note: While outputIndices specifies indices regarding the actual sample, discreteOutputIndices specifies indices of outputIndices.

E.g., consider the following setup:

dataSample.outputIndices         = [ 2 4 5 ];
dataSample.discreteOutputIndices = [ 1   3 ];

Here, only the results in components 2 and 5 of a sample will contain integer values.

Network Configuration

Further details are configured using the app.netInfo substructure.

SVM Domain

Using support vector domains requires additional settings:


If smoothing is activated, additional flags are available:

Expert Evaluation

Online Learning

A few settings are only used for online learning.

Selection Criterion Functions


During online learning, experts may repeatedly be fused and redundant models removed. The algorithm's behaviour can be controlled by using a specific selection criterion.

Several criteria are already supplied in the 'criteria' subdirectory, such as:

Implementing your own Selection Criterion

You can provide your own selection criterion by simply using a function handle to your own implementation.

To integrate seamlessly, your function is required to take the app structure as an argument and return an N x 2 matrix of pairs of expert ids that are selected to be fused.

Generating the Network

After configuring the app structure, you can finally create the network using problem specific training data. Obviously, this data must conform to your data sample specification (see above).

app = generateNet(app, trainData);

This will leave your settings untouched and add the following fields to the app structure:

The network is described by the following fields of the app.net substructure:



The Expert Structure

An expert structure contains several fields describing the expert.

In case the expert structure resulted from fusing two experts, the expert.neuron and expert.domainModel fields are replaced by the fields expert.neurons and expert.domainModels respectively.

Center Domain

No specific fields are set for experts using an center domain model.

Hyper-Ellipsoid Domain

The following fields provide detailed information about the domain model if the expert uses an hyper-ellipsoid domain.

SVM Domain

The following fields provide detailed information about the domain model if the expert uses an SVM domain.

Evaluating an Experiment

After constructing the net using specific training data, you may want to evaluate its quality using appropriate test data. To evaluate your experiment, call

ex = evaluateExperiment(app, testData);

or, to have the results plotted,

ex = evaluateExperiment(app, testData, 1);

Note: Only the first two components of the gating input data and the neurons will be used in the plot. Also, if the app structure has been configured to use the offline algorithm, it is required to have app.image.width and app.image.height set to reasonable values which will affect the display.

The resulting ex structure contains several fields describing the results.

Note: It should be obvious that the ex structure contains all relevant information about your experiment. Thus, it is the only variable you need to save in case you want to continue working with this experiment.

Approximation Error

Several fields containing statistical information about the net's approximation error are available.

Note: ex.nMSE is only available if exactly one target ouput index is set in the data sample specification (one-dimensional output).

Usage of Experts

The number of experts that have been activated for any individual sample can be retrieved from the matchingExpertsPerSample vector:

The number of times each individiual expert has been activated can be retrieved from the usageOfExperts.hits vector:

Finally, several fields containing global statistical information about the experts' usage are available.