INF1421 Corrige Module5 V3

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

— Pour x2 :

Z = x21 ∗ w10 + x12 ∗ w10 + x13 ∗ w30 + b0


Z = −0.2, ce qui n’est pas plus grand que 0, alors, f (x2 ) = 0.
Puisque la prédiction est fausse, alors nous devons mettre à
jour les poids.

w00 = w + η ∗ (d − y) ∗ x
Module 5 - Réseaux de neurones w100 = −0, 3 + 0, 1 ∗ (0 − 1) ∗ 1 = −0, 2
w200 = −0, 2 + 0, 1 ∗ (0 − 1) ∗ 1 = −0, 1
Exercices - Corrigé
w300 = −0, 2 + 0, 1 ∗ (0 − 1) ∗ 1 = 0
Exercice 1
b0 = 0, 4 + 0, 1 ∗ (0 − 1) ∗ 1 = 0, 5
On possède l’ensemble d’entraînement suivant :
— Pour x3 :
xi yi
[3, 2, 1] 0 Z = x31 ∗ w100 + x32 ∗ w100 + x33 ∗ w300 + b00
[1, 1, 1] 1
[1, 2, 3] 1 Z = 0.1, ce qui est plus grand que 0, alors, f (x3 ) = 1.
Ce qui est correct, alors aunue mise à jours des poids n’est
1. La simulation de l’algorithme du perceptron est la suivant : requise.

— Pour x1 : 2. La simulez de l’algorithme du perceptron sur cet ensemble de


données en utilisant le logiciel R :
Z = x11 ∗ w1 + x12 ∗ w2 + x13 ∗ w3 + b
Z = 0.5, ce qui est plus grand que 0, alors, f (x1 ) = 1. 1 perceptron <- function (x , y , lr ) {
2 # initia lisation du vesteur poids
Puisque la prédiction est fausse, alors nous devons mettre à 3 poids <- c (0.5 ,0 ,0 ,0)
jour les poids. 4 # Boucle pour les d o n n e s d ’ e n t r a n e m e n t
5 for ( j in 1: length ( y ) ) {
6 z <- 0
w0 = w + η ∗ (d − y) ∗ x 7 for ( i in 1:3) {
8 # P r d i r e le " label " binaire
0 9 z <- z + poids [ i +1] * as . numeric ( x [i , j ])
w1 = 0 + 0, 1 ∗ (0 − 1) ∗ 3 = −0, 3 10 }
11 z <- z + poids [1]
w20 = 0 + 0, 1 ∗ (0 − 1) ∗ 2 = −0, 2 12 if ( z <= 0) {
13 ypred <- 0
0 14 } else {
w3 = 0 + 0, 1 ∗ (0 − 1) ∗ 1 = −0, 1 15 ypred <- 1
16 }
17 for ( i in 1:3) {
18 poids [ i +1] <- poids [ i +1] + lr * ( y [ j ] - ypred ) * as . numeric (
0
b = 0, 5 + 0, 1 ∗ (0 − 1) ∗ 1 = 0, 4 x [i , j ])

Dernière mise à jour le 2 novembre 2018. 1


19 } w21 (nouveau) = 0, 6 + 0, 2 ∗ (0, 5 + 0, 6) = 0, 82
20 poids [1] <- poids [1] + lr * ( y [ j ] - ypred )
21 # afficher le poids w31 (nouveau) = 0, 1 + 0, 2 ∗ (0, 5 + 0, 1) = 0, 22
22 print ( poids )
}
23
24 }
w32 (nouveau) = 0, 5 + 0, 2 ∗ (0, 2 + 0, 5) = 0, 64
25
26 x <- matrix ( c (3 ,2 ,1 ,1 ,1 ,1 ,1 ,2 ,3) , ncol = 3 , nrow = 3) w51 (nouveau) = 0, 8 + 0, 2 ∗ (0, 5 + 0, 8) = 1, 06
27 y <- c (0 ,1 ,1)
28 w52 (nouveau) = 0, 2 + 0, 2 ∗ (0, 2 + 0, 2) = 0, 28
29 err <- perceptron (x , y ,0.1)

Exercice 2

1. Calculer la distance euclidienne entre les entrées et les poids :

D1 = Σ(X − w1)2 = (0, 5 − 0, 3)2 + (0, 2 − 0, 7)2 = 0, 29


D2 = Σ(X − w2)2 = (0, 5 − 0, 6)2 + (0, 2 − 0, 9)2 = 0, 5
D3 = Σ(X − w3)2 = (0, 5 − 0, 1)2 + (0, 2 − 0, 5)2 = 0, 25
D4 = Σ(X − w4)2 = (0, 5 − 0, 4)2 + (0, 2 − 0, 3)2 = 0, 02
D5 = Σ(X − w5)2 = (0, 5 − 0, 8)2 + (0, 2 − 0, 2)2 = 0, 09

Alors le neurone gagnant est le neurone numéro 4.

2. La valeur du poids mise à jours pour le neurone numéro 4 est calculé


à l’aide de la fonction suivante :

w(nouveau) = w(ancien) + a(x + w(ancien))

Alors :

w41 (nouveau) = 0, 4 + 0, 2 ∗ (0, 5 + 0, 4) = 0, 58

w42 (nouveau) = 0, 3 + 0, 2 ∗ (0, 2 + 0, 3) = 0, 4

3. Les valeurs mises à jours pour les autres neuronnes :

w11 (nouveau) = 0, 3 + 0, 2 ∗ (0, 5 + 0, 3) = 0, 46


w12 (nouveau) = 0, 7 + 0, 2 ∗ (0, 2 + 0, 7) = 0, 88

Dernière mise à jour le 2 novembre 2018. 2

Vous aimerez peut-être aussi