From 3599367ce8673876c276f1cfa3bfc2af265e68bb Mon Sep 17 00:00:00 2001 From: Arkadiusz Kondas Date: Sun, 14 Aug 2016 19:14:56 +0200 Subject: [PATCH] Add docs for neural network --- README.md | 5 +++- composer.json | 2 +- docs/index.md | 3 ++ .../classification/k-nearest-neighbors.md | 6 ++-- .../neural-network/backpropagation.md | 29 +++++++++++++++++++ .../neural-network/multilayer-perceptron.md | 29 +++++++++++++++++++ mkdocs.yml | 3 ++ 7 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 docs/machine-learning/neural-network/backpropagation.md create mode 100644 docs/machine-learning/neural-network/multilayer-perceptron.md diff --git a/README.md b/README.md index 07ce099..ea1ff4f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ![PHP-ML - Machine Learning library for PHP](docs/assets/php-ml-logo.png) -Fresh approach to Machine Learning in PHP. Algorithms, Cross Validation, Preprocessing, Feature Extraction and much more in one library. +Fresh approach to Machine Learning in PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feature Extraction and much more in one library. PHP-ML requires PHP >= 7.0. @@ -62,6 +62,9 @@ Example scripts are available in a separate repository [php-ai/php-ml-examples]( * [Classification Report](http://php-ml.readthedocs.io/en/latest/machine-learning/metric/classification-report/) * Workflow * [Pipeline](http://php-ml.readthedocs.io/en/latest/machine-learning/workflow/pipeline) +* Neural Network + * [Multilayer Perceptron](http://php-ml.readthedocs.io/en/latest/machine-learning/neural-network/multilayer-perceptron/) + * [Backpropagation training](http://php-ml.readthedocs.io/en/latest/machine-learning/neural-network/backpropagation/) * Cross Validation * [Random Split](http://php-ml.readthedocs.io/en/latest/machine-learning/cross-validation/random-split/) * [Stratified Random Split](http://php-ml.readthedocs.io/en/latest/machine-learning/cross-validation/stratified-random-split/) diff --git a/composer.json b/composer.json index 041f818..eeccc53 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "type": "library", "description": "PHP-ML - Machine Learning library for PHP", "license": "MIT", - "keywords": ["machine learning","pattern recognition","computational learning theory","artificial intelligence"], + "keywords": ["machine learning","pattern recognition","neural network","computational learning theory","artificial intelligence"], "homepage": "https://github.com/php-ai/php-ml", "authors": [ { diff --git a/docs/index.md b/docs/index.md index 6b0ce8c..1a38642 100644 --- a/docs/index.md +++ b/docs/index.md @@ -62,6 +62,9 @@ Example scripts are available in a separate repository [php-ai/php-ml-examples]( * [Classification Report](machine-learning/metric/classification-report/) * Workflow * [Pipeline](machine-learning/workflow/pipeline) +* Neural Network + * [Multilayer Perceptron](machine-learning/neural-network/multilayer-perceptron/) + * [Backpropagation training](machine-learning/neural-network/backpropagation/) * Cross Validation * [Random Split](machine-learning/cross-validation/random-split/) * [Stratified Random Split](machine-learning/cross-validation/stratified-random-split/) diff --git a/docs/machine-learning/classification/k-nearest-neighbors.md b/docs/machine-learning/classification/k-nearest-neighbors.md index 3d5aa27..2de597c 100644 --- a/docs/machine-learning/classification/k-nearest-neighbors.md +++ b/docs/machine-learning/classification/k-nearest-neighbors.md @@ -2,7 +2,7 @@ Classifier implementing the k-nearest neighbors algorithm. -### Constructor Parameters +## Constructor Parameters * $k - number of nearest neighbors to scan (default: 3) * $distanceMetric - Distance object, default Euclidean (see [distance documentation](math/distance/)) @@ -12,7 +12,7 @@ $classifier = new KNearestNeighbors($k=4); $classifier = new KNearestNeighbors($k=3, new Minkowski($lambda=4)); ``` -### Train +## Train To train a classifier simply provide train samples and labels (as `array`). Example: @@ -24,7 +24,7 @@ $classifier = new KNearestNeighbors(); $classifier->train($samples, $labels); ``` -### Predict +## Predict To predict sample label use `predict` method. You can provide one sample or array of samples: diff --git a/docs/machine-learning/neural-network/backpropagation.md b/docs/machine-learning/neural-network/backpropagation.md new file mode 100644 index 0000000..8c9b560 --- /dev/null +++ b/docs/machine-learning/neural-network/backpropagation.md @@ -0,0 +1,29 @@ +# Backpropagation + +Backpropagation, an abbreviation for "backward propagation of errors", is a common method of training artificial neural networks used in conjunction with an optimization method such as gradient descent. + +## Constructor Parameters + +* $network (Network) - network to train (for example MultilayerPerceptron instance) +* $theta (int) - network theta parameter + +``` +use Phpml\NeuralNetwork\Network\MultilayerPerceptron; +use Phpml\NeuralNetwork\Training\Backpropagation; + +$network = new MultilayerPerceptron([2, 2, 1]); +$training = new Backpropagation($network); +``` + +## Training + +Example of XOR training: + +``` +$training->train( + $samples = [[1, 0], [0, 1], [1, 1], [0, 0]], + $targets = [[1], [1], [0], [0]], + $desiredError = 0.2, + $maxIteraions = 30000 +); +``` diff --git a/docs/machine-learning/neural-network/multilayer-perceptron.md b/docs/machine-learning/neural-network/multilayer-perceptron.md new file mode 100644 index 0000000..c1c0eef --- /dev/null +++ b/docs/machine-learning/neural-network/multilayer-perceptron.md @@ -0,0 +1,29 @@ +# MultilayerPerceptron + +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 + +* $layers (array) - array with layers configuration, each value represent number of neurons in each layers +* $activationFunction (ActivationFunction) - neuron activation function + +``` +use Phpml\NeuralNetwork\Network\MultilayerPerceptron; +$mlp = new MultilayerPerceptron([2, 2, 1]); + +// 2 nodes in input layer, 2 nodes in first hidden layer and 1 node in output layer +``` + +## Methods + +* setInput(array $input) +* getOutput() +* getLayers() +* addLayer(Layer $layer) + +## Activation Functions + +* BinaryStep +* Gaussian +* HyperbolicTangent +* Sigmoid (default) diff --git a/mkdocs.yml b/mkdocs.yml index 057a1a1..4fa6c21 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,6 +18,9 @@ pages: - Classification Report: machine-learning/metric/classification-report.md - Workflow: - Pipeline: machine-learning/workflow/pipeline.md + - Neural Network: + - Multilayer Perceptron: machine-learning/neural-network/multilayer-perceptron.md + - Backpropagation training: machine-learning/neural-network/backpropagation.md - Cross Validation: - RandomSplit: machine-learning/cross-validation/random-split.md - Stratified Random Split: machine-learning/cross-validation/stratified-random-split.md