Pr: Ismaili Alaoui El Mehdi Filière: Master IAAD
Apprentissage profond
Concepts fondamentaux d’un réseau de neurones: TD/TP
Exercice 1
Soit un réseau composé de 2 entrées x1 et x2 considérées comme des neurones et d’un
neurone de sortie. La base d’apprentissage est décrite par la table ci-dessous:
Conditions initiales : β = +1, les poids et le seuil sont nuls.
1. Rechercher les valeurs de poids qui résolvent le problème.
Exercice 2
Soit un réseau composé de 2 entrées et d’un neurone de sortie et la base d’apprentissage
décrite par la table ci-dessous:
z: La somme pondérée.
a: La sortie du neurone a = σ(z)
1. Entraîner ce réseau sans biais.
— Préparer les données.
— Initialiser les poids aléatoirement.
— Créer un modèle basé sur la fonction sigmoïde (f (x) = 1+e1−x ).
— Définir la fonction d’erreur basée sur la classification biclasse.
loss = N1 N d d
P
i=1 (−yi log(ŷi ) − (1 − yi ) log(1 − ŷi ))
— Mettre à jour les poids.
— Définir la fonction de prédiction.
2
— Entrainer le perceptron.
— Afficher le score et la matrice de poids obtenue.
— Tracer l’hyperplan (Frontiere de décision).
2. Même question mais avec le biais.
Exercice 3
Soit un réseau composé de 2 entrées et d’un neurone de sortie et la base d’apprentissage dé-
crite comme suit : Nous allons générer nos propres données en utilisant la fonction make_blobs
du module sklearn. Cette fonction permet de simuler des clusters dans un Dataset.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
Nous allons créer un Dataset de 100 exemples à 2 features, en simulant 2 clusters.
nb_obs = 100 # Nombre d’observations
dim = 2 # Dimensionnalité des données
k = 2 # Nombre de regroupement
seed = 0 # Racine pour la génération aléatoire contrôlée
X,y=make_blobs(n_samples=nb_obs, n_features=dim,centers=k , random_state=seed)
y= y.reshape((y.shape[0], 1))
print(’dimensions de X:’, X.shape)
print(’dimensions de y:’, y.shape)
plt.scatter(X[:,0], X[:, 1], c=y)
plt.show()
1. Entraîner ce réseau.