Vous êtes sur la page 1sur 8

Rapport de TP3 : Construire le Perceptron

multicouche sous keras.

Encadré par :

 M. IBN ELHAJ

1
Objectif : Le perceptron multicouche (multilayer perceptron MLP) est la deuxième grande
famille de réseaux de neurones. Il organisé en plusieurs couches au sein desquelles une
information circule de la couche d'entrée vers la couche de sortie uniquement ; il s'agit donc
d'un réseau à propagation directe (feedforward). Dans ce TP, on veut réaliser le perceptron
multicouche sous keras, puis nous testons un exemple.

A) MLP pour une classification binaire : :

Pour réaliser le TP, on a utilisé keras, cette dernière est une librairie Python qui encapsule l’accès aux
fonctions proposées par plusieurs librairies de machine learning, en particulier Tensorflow. De fait,
Keras n’implémente pas nativement les méthodes. Elle sert d’interface avec Tensorflow simplement.
Elle nous facilite grandement la vie en proposant des fonctions et procédures relativement simples à
mettre en œuvre.

2
1. Le code :

Après exécution on obtient le résultat suivant :

3
2. Les étapes, les observations et les interprétations :
Dans l'exemple suivant, nous allons utiliser Keras pour créer un réseau de neurones dans le but de
créée une classification binaire.

Nous utilisons Keras pour importer les données dans notre programme. Les données sont déjà
divisées en ensembles de training et de test.

4
Le modèle attend des lignes de datasetsavec 20 variables (l'argument input_dim = 20).La première
couche cachée a 64 nœuds et utilise la fonction d'activation relu.La deuxième couche cachée a 64
nœuds et utilise la fonction d'activation relu.La couche de sortie a un nœud et utilise la fonction
d'activation sigmoïde :

Puisque nous essayons de prédire une classification binaire , nous utilisons binarycrossentropy
comme fonction de perte. Nous mesurerons les performances du modèle en utilisant accuracy :

Le processus de formation se déroulera pendant un nombre fixe d'itérations à travers l'ensemble de


données appelé epochs, que nous devons spécifier en utilisant l'argument epochs. Nous devons
également définir le nombre de lignes datasets qui sont prises en compte avant la mise à jour des
pondérations du modèle à chaque époque, appelée batch size et définie à l'aide de l'argument
batch_size.

Pour ce problème, nous allons exécuter pour un petit nombre d'époques (20) et utiliser un size batch
relativement de 128 :

On evalue notre modèle sur les training datasets à l'aide de la fonction model.evaluate() de notre
modèle et transmettez-lui les mêmes entrées et sorties que celles utilisées pour entraîner le modèle.

5
3. Réponses aux questions :

1) le rôle de l’ajout de : model.add(Dropout(..)) :


En passant 0,5, chaque neurone caché est mise à 0 avec une probabilité de 0,5. En d'autres
termes, il y a un changement de 50% selon lequel la sortie d'un neurone donné sera forcée à
0. Donc Dropout permet de rétablir aléatoirement les fractions des unités d’entrées à 0 pour
chaque mise à jour pendant le temps d’entrainement ce qui aident pour empêcher un
modèle de sur-ajuster.

2) En augmentant le nombre d’epochs la valeur des pertes (loss) diminué à chaque nouvelle
epoch. Pourtant l’acucracy ne change pas et reste autour de la valeur 0.8xxx comme le
montre la figure suivante :

Pour le cas d’epochs=5000:

3) Sur Keras on trouve un ensemble d’optimizer(SGD , rmsprop,Adagrad, adam ….)


On remplace notre optimizer ‘rmsprop’ dans le code par ‘adam ‘ ; ‘ adam’
On obtient alors :

 rmsprop : est un algorithme d'optimisation qui accélère la descente de gradient, il est utilisé
pour entraîner des modèles à base de réseaux de neurones profonds.
 adam : c’est une version très populaire de gradient descente, il s’agit de l’optimizer le plus
utilisé (surtout pour les réseaux de neurones) en raison de son efficacité et de sa stabilité, il
donne des résultats optimal.

6
B) MLP pour une régression pour la prédiction des prix des maisons  :

1. Le code :

2. Les étapes, les observations et les interprétations :


Dans cette section, nous allons créer un modèle de réseau neuronal de base pour le problème de
régression.

Commençons par inclure toutes les fonctions et tous les objets dont nous aurons besoin :

Nous pouvons maintenant charger les données à partir d'un fichier dans le répertoire local.
L'ensemble de données n'est en fait pas au format CSV dans le référentiel UCI Machine Learning, les
attributs sont plutôt séparés par des espaces. Nous pouvons le charger facilement en utilisant la
bibliothèque pandas. Nous pouvons ensuite diviser les attributs d'entrée (X) et de sortie (Y) afin qu'ils
soient plus faciles à modéliser avec Keras et scikit-learn:

7
Ensuite nous définissons la fonction pour créer le modèle de base à évaluer. Il s'agit d'un modèle
simple qui a une seule couche cachée entièrement connectée avec le même nombre de neurones
que les attributs d'entrée (13). Le réseau utilise de bonnes pratiques telles que la fonction
d'activation du redresseur pour la couche cachée. Aucune fonction d'activation n'est utilisée pour la
couche de sortie car il s'agit d'un problème de régression et nous souhaitons prédire des valeurs
numériques directement sans transformation :

Puis, nous créons une instance et lui transmettons le nom de la fonction pour créer le modèle de
réseau neuronal ainsi que certains paramètres à transmettre ultérieurement à la fonction fit () du
modèle, tels que le nombre d'époques et la taille du lot. Ces deux paramètres sont définis sur des
valeurs par défaut sensibles.

La dernière étape consiste à évaluer ce modèle de référence. Nous utiliserons une validation croisée
10 fois (n_splits=10) pour évaluer le modèle :

L'exécution de ce code nous donne une estimation des performances du modèle sur le problème des
données non envoyées. Le résultat indique l'erreur quadratique moyenne, y compris l'écart moyen et
l'écart type (variance moyenne) dans les 10 plis de l'évaluation de validation croisée :

L'erreur quadratique moyenne est négative car scikit-learn s'inverse de sorte que la métrique est
maximisée au lieu d'être minimisée.

Vous aimerez peut-être aussi