Université Batna2, Département d’informatique
Master1, Intelligence artificielle et multimédia
TP 1 perceptron
1. Ecrivez un programme qui génère des points aléatoires dans [0; 1]2. Pour chaque point,
la sortie est 1 si x1 + x2 - 1 > 0 et -1 sinon. Ces points seront stockés dans deux fichiers :
un pour l'ensemble d'apprentissage, et un pour l'ensemble de validation.
Utilisez le format suivant : x1 x2 label
Par exemple :
0.325203 0.768230 1
0.798440 0.821647 1
0.364784 0.417401 -1
0.241603 0.605979 -1
0.653170 0.488392 -1
……
2. Construire un perceptron capable de séparer les données de la question1. Pour cela :
2.1. Créer une structure Neurone, contenant le biais (réel), la sortie (entier) et le tableau de
poids (réels).
2.2. Définir une constante correspondante au pas d'apprentissage α à 0.01.
2.3. Ecrire une fonction initialisant un neurone :
- Le biais (b ou w0) est initialisé à 0.5.
- les poids (wi, i=(1 ; n) où n est le nbre d’exemples) sont initialisés aléatoirement entre
0 et 1.
2.4. Ecrire une fonction qui calcule la sortie du neurone :
- 𝜑 = ∑𝑝𝑜𝑢𝑟 𝑐ℎ𝑎𝑞𝑢𝑒 𝑒𝑥𝑒𝑚𝑝𝑙𝑒 𝑤𝑖 . 𝑥𝑖 + 𝑏
- avec wi le poids du ième attribut et xi la valeur du ième attribut pour l'exemple courant.
- Si 𝜑 > 0 la sortie y du neurone est 1 sinon -1.
2.5. Ecrire une fonction de mise du neurone (mise à jour du biais et du vecteur de poids). La
fonction prend également en paramètre un exemple. Pour la mise à jour nous calculons ce
qui suit :
- b = b + α * (label – sortie_c) * X0.
- pour chaque attribut (Xi) : wi = wi + α * (label – sortie_c) * Xi
2.6. Programme principal :
- Initialiser le neurone.
- Pour 100 itérations :
o NombreDerreurs = 0
o Pour chaque exemple :
Calculer la sortie du neurone.
Si la sortie calculée est différente du label: incrémenter le
NombreDerreurs et mettre à jour le neurone.
Afficher le nombre d'erreurs.
3. Observer la courbe d'évolution du nombre d'erreurs.
3.1. Varier le nombre d'exemples et comparer.
3.2. Commenter l'impact du pas d'apprentissage α (en le faisant varier).
3.3. Modifier les données : pour chaque point généré, rajouter une condition : x2 doit en plus
être supérieur à 0.5 et refaire la question 1
3.4. Regarder également le nombre d'erreurs en généralisation (utiliser un ensemble d’exemples
de test qui n’a pas servi à l’apprentissage et calculer l’erreur totale).
2020