TP1_Perceptron
TP1_Perceptron
TP1_Perceptron
Objectif :
Ce TP a pour objectif d’introduire les bases de la théorie des réseaux de neurones et d’introduire
le cas particulier du perceptron. Nous allons examiner l'algorithme Perceptron, qui est le réseau
de neurones à une seule couche le plus élémentaire utilisé pour la classification binaire.
I. Travail à faire :
1. Algorithme :
Pour l'algorithme de base du perceptron vu dans le cours :
2. Dataset :
Essayons de comprendre l'algorithme Perceptron en utilisant les données suivantes comme
exemple motivant.
from sklearn import datasets
Il y a deux classes, rouge et bleue, et nous voulons les séparer en traçant une ligne droite entre
elles. Ou, plus formellement, nous voulons apprendre un ensemble de paramètres wi pour
trouver un hyperplan optimal (ligne droite pour nos données) qui sépare les deux classes.
1
3. Implémentation :
Nous pouvons visuellement comprendre le Perceptron en regardant la figure ci-dessous. Pour
chaque exemple d’apprentissage, nous prenons d'abord le produit scalaire des caractéristiques
et paramètres d'entrée,w. Ensuite, nous appliquons la fonction d’activation pour faire la
prédiction (y_hat).
Input features
Activation function
X
𝑤0 (bias)
𝑛
𝑤1
X 𝑤𝑖 𝑥𝑖 ŷ
𝑤2 𝑖=0 prediction
X
1. Coder la fonction d’activation de Heaviside :
𝟏 𝒔𝒊 𝒙 > 𝟎
∀𝒙 ∈ 𝑹, 𝒈(𝒙) = {
𝟎 𝒔𝒊𝒏𝒐𝒏
def acti_func(z):
...
# X --> Inputs.
# y --> labels/target.
# lr --> learning rate.
# epochs --> Number of iterations.
# Training.
for epoch in range(epochs):
2
# looping for every example.
for idx, x_i in enumerate(X):
# Calculating prediction/hypothesis.
y_hat = acti_func(np.dot(x_i.T, w))
# Incrementing by 1.
...
return w, n_miss_list
# X --> Inputs
# w --> parameters
# Plotting
...
II. Exercice2
1. Dataset :
Considérons le data set 𝑆 = {(𝑥, 𝑦)}250
𝑖=1 composé de 250 points xi = (x1, x2) et leur classes yi.
Les premières 125 xi sont classées yi = −1 et sont générées selon une distribution
gaussienne 𝑥𝑖 ∼ 𝑁(𝜇1 , σ2 ), où
1
−1
𝜇1 =[ ]
0
Les dernières 125 xi sont classées yi = 0 et sont générées selon une distribution gaussienne 𝑥𝑖 ∼
𝑁(𝜇2 , σ22 ), où
3
1
𝜇1 =[ ]
0
Après faire mélanger le dataset, on va le diviser en train and test sets, contenant 80 % et 20 %
du dataset (utiliser des méthodes de shuffling et de splitting existantes).
2. Implémentation :
Afin d'étudier l'impact de la variation de σ12 et σ22 sur les performances du système, nous
stockons l'erreur sur plusieurs expériences (prendre nb expérience = 30). Puis on calcule la
moyenne et la variance des erreurs stockées. Pour chaque σ12 et σ22 ∈ [0.01, 0.1, 0.5, 0.7]
4
calculez la moyenne et la variance puis tracez les résultats en utilisant
matplotlib.pyplot.errorbar.