php-ml/docs/machine-learning/neural-network/multilayer-perceptron-classifier.md
David Monllaó e83f7b95d5 Fix activation functions support (#163)
- Backpropagation using the neuron activation functions derivative
- instead of hardcoded sigmoid derivative
- Added missing activation functions derivatives
- Sigmoid forced for the output layer
- Updated ThresholdedReLU default threshold to 0 (acts as a ReLU)
- Unit tests for derivatives
- Unit tests for classifiers using different activation functions
- Added missing docs
2018-01-09 11:09:59 +01:00

1.7 KiB

MLPClassifier

A multilayer perceptron (MLP) is a feedforward artificial neural network model that maps sets of input data onto a set of appropriate outputs.

Constructor Parameters

  • $inputLayerFeatures (int) - the number of input layer features
  • $hiddenLayers (array) - array with the hidden layers configuration, each value represent number of neurons in each layers
  • $classes (array) - array with the different training set classes (array keys are ignored)
  • $iterations (int) - number of training iterations
  • $learningRate (float) - the learning rate
  • $activationFunction (ActivationFunction) - neuron activation function
use Phpml\Classification\MLPClassifier;
$mlp = new MLPClassifier(4, [2], ['a', 'b', 'c']);

// 4 nodes in input layer, 2 nodes in first hidden layer and 3 possible labels.

Train

To train a MLP simply provide train samples and labels (as array). Example:

$mlp->train(
    $samples = [[1, 0, 0, 0], [0, 1, 1, 0], [1, 1, 1, 1], [0, 0, 0, 0]],
    $targets = ['a', 'a', 'b', 'c']
);

Use partialTrain method to train in batches. Example:

$mlp->partialTrain(
    $samples = [[1, 0, 0, 0], [0, 1, 1, 0]],
    $targets = ['a', 'a']
);
$mlp->partialTrain(
    $samples = [[1, 1, 1, 1], [0, 0, 0, 0]],
    $targets = ['b', 'c']
);

You can update the learning rate between partialTrain runs:

$mlp->setLearningRate(0.1);

Predict

To predict sample label use predict method. You can provide one sample or array of samples:

$mlp->predict([[1, 1, 1, 1], [0, 0, 0, 0]]);
// return ['b', 'c'];

Activation Functions

  • BinaryStep
  • Gaussian
  • HyperbolicTangent
  • Parametric Rectified Linear Unit
  • Sigmoid (default)
  • Thresholded Rectified Linear Unit