If you enjoy this project, feel free to give it a star âïž!
The goal of this project is to build a multi-layer perceptron (MLP) from scratch to create a model that predicts the outcome of a breast cancer diagnosis.
The multilayer perceptron is a feedforward network (meaning that the data flows from the input layer to the output layer) defined by the presence of one or more hidden layers, as well as an interconnection of all the neurons of one layer to the next.
The diagram above represents a network containing 4 dense layers (also called fully connected layers). Its inputs consist of 4 neurons and its output consists of 2 (perfect for binary classification). The weights of one layer to the next are represented by two-dimensional matrices noted Wlj lj+1 . The matrix Wl0l1 is of size (3, 4) for example, as it contains the weights of the connections between layer l0 and layer l1. The bias is often represented as a special neuron which has no inputs and an output always equal to 1. Like a perceptron, it is connected to all the neurons of the following layer (the bias neurons are noted blj on the diagram above). The bias is generally useful as it allows one to âcontrol the behaviorâ of a layer.
The perceptron is the type of neuron that the multilayer perceptron is composed of. It is defined by the presence of one or more input connections, an activation function, and a single output. Each connection contains a weight (also called a parameter) which is learned during the training phase.
Two steps are necessary to get the output of a neuron. The first one consists in computing the weighted sum of the outputs of the previous layer with the weights of the input connections of the neuron, which gives
The second step consists in applying an activation function on this weighted sum. The output of this function is the output of the perceptron and can be understood as the threshold above which the neuron is activated (activation functions can take many forms, and you are free to choose whichever one you want depending on the model to train. Here are some of the most frequently used ones to give you an idea: sigmoid, hyperbolic tangent, and rectified linear unit).
- Clone the repository
git clone https://github.com/MatLBS/multilayer_perceptron_42.git
cd multilayer_perceptron_42- Create a virtual environment and install dependencies
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txtpython srcs/describe.py dataset/data.csv
python srcs/histogram.py dataset/data.csv
python srcs/mlp_training.py --file dataset/data.csv --layer 24 24 --epochs 2000 --batch_size 32 --learning_rate 0.001
You can predict the test data and evaluate your model by running below command.
python srcs/mlp_predict.py mlp_weights.npz mlp_topology.json dataset/data.csvSi tu apprĂ©cies ce projet, nâhĂ©site pas Ă lui donner une Ă©toile âïž !
Lâobjectif de ce projet est de construire un perceptron multicouche (MLP) âfrom scratchâ pour crĂ©er un modĂšle capable de prĂ©dire lâissue dâun diagnostic du cancer du sein.
Le perceptron multicouche est un rĂ©seau âfeedforwardâ (ce qui signifie que les donnĂ©es circulent de la couche dâentrĂ©e Ă la couche de sortie) dĂ©fini par la prĂ©sence dâune ou plusieurs couches cachĂ©es, ainsi que par lâinterconnexion de tous les neurones dâune couche Ă la suivante.
Le schĂ©ma ci-dessus reprĂ©sente un rĂ©seau contenant 4 couches denses (ou âfully connectedâ). Ses entrĂ©es sont constituĂ©es de 4 neurones et sa sortie de 2 (parfait pour une classification binaire). Les poids dâune couche Ă lâautre sont reprĂ©sentĂ©s par des matrices notĂ©es Wlj lj+1. Par exemple, la matrice Wl0l1 est de taille (3, 4), car elle contient les poids des connexions entre la couche l0 et la couche l1.
Le biais est souvent reprĂ©sentĂ© comme un neurone spĂ©cial qui nâa pas dâentrĂ©e et une sortie toujours Ă©gale Ă 1. Comme un perceptron, il est connectĂ© Ă tous les neurones de la couche suivante (les neurones de biais sont notĂ©s blj sur le schĂ©ma ci-dessus). Le biais est gĂ©nĂ©ralement utile car il permet de âcontrĂŽler le comportementâ dâune couche.
Le perceptron est le type de neurone qui compose le perceptron multicouche. Il est dĂ©fini par la prĂ©sence dâune ou plusieurs connexions dâentrĂ©e, dâune fonction dâactivation et dâune seule sortie. Chaque connexion possĂšde un poids (aussi appelĂ© paramĂštre) qui est appris lors de la phase dâentraĂźnement.
Deux Ă©tapes sont nĂ©cessaires pour obtenir la sortie dâun neurone. La premiĂšre consiste Ă calculer la somme pondĂ©rĂ©e des sorties de la couche prĂ©cĂ©dente avec les poids des connexions dâentrĂ©e du neurone, ce qui donne :
La seconde Ă©tape consiste Ă appliquer une fonction dâactivation sur cette somme pondĂ©rĂ©e. La sortie de cette fonction est la sortie du perceptron et peut ĂȘtre comprise comme le seuil au-delĂ duquel le neurone sâactive (les fonctions dâactivation peuvent prendre diffĂ©rentes formes, et tu es libre de choisir celle qui te convient selon le modĂšle Ă entraĂźner. Voici quelques-unes des plus utilisĂ©es : sigmoĂŻde, tangente hyperbolique, et rectified linear unit).
- Clone le dépÎt
git clone https://github.com/MatLBS/multilayer_perceptron_42.git
cd multilayer_perceptron_42- Crée un environnement virtuel et installe les dépendances
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txtpython srcs/describe.py dataset/data.csv
python srcs/histogram.py dataset/data.csv
python srcs/mlp_training.py --file dataset/data.csv --layer 24 24 --epochs 2000 --batch_size 32 --learning_rate 0.001
Tu peux prédire les données de test et évaluer ton modÚle en lançant la commande suivante :
python srcs/mlp_predict.py mlp_weights.npz mlp_topology.json dataset/data.csv