Vous êtes sur la page 1sur 65

Chapitre III :

les réseaux de neurones sous matlab


1

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024


3.1/
Le neural network toolbox ( boite a outils) offre un
environnement permettant de concevoir et d’
implémenter des réseaux de neurones avec des
algorithmes et des modèles pré-entrainés et des
applications.
La boite a outils englobe des fonctions prédéfinies
qui facilitent la programmation d’un réseau de
neurones sous matlab et permettent d’effectuer des
classifications des données, des images…, et de
créer des architectures de réseaux complexes.
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 2
3.2/ Fonctions d’activations :
Plusieurs fonctions d’activation sont inclues dans cette
boite a outils, les plus utilisées sont :
i. Fonction seuil :
 La fonction prédéfinie dédiée a la création de la
fonction mathématique seuil est : hardlim
 La syntaxe est : a=hardlim(n)
Exemple :
n= -5:0.1:5; a= hardlim(n);plot(n, a,’c+’);
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 3
La fonction prédéfinie hardlim , limite la sortie du
neurone a zéro , si l’argument d’entrée n est inferieure a
zéro, ou a un si n est supérieure ou égale a zéro.
 toutes les fonctions de transfert mathématiques peuvent
être réalisées avec des fonctions du même nom dans la
boite a outils neural network toolbox.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 4


ii. Fonction signe :
 Une fonction spécifique permettant la création de
la fonction d’activation signe est :
hardlims
 La syntaxe est : a=hardlims(n)
 Exemple :
n=-5:0.1:5
plot(n, hardlims(n),’r-’)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 5


iii. Fonction linéaire:
 La fonction prédéfinie : purelin
 La syntaxe est : a=purelin(n)
 Exemple:
n=-5:0.1:5; a=purelin(n); plot(n, a,’c-’)
 les fonctions de transfert de ce type sont utilisées
pour les approximateurs linéaires dans les filtres
linéaires.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 6


iv. Fonction sigmoïde:
 La fonction prédéfinie est : logsig
 Syntaxe est : a=logsig(n)
 Exemple:
n=-5:0.1:5; a=logsig(n); plot(n,a,’r-’);
 la fonction de transfert sigmoïde illustrée ci-dessus
prend l’entrée qui peut avoir n’importe quelle valeur
comprise entre plus et moins l’infini et borne la sortie
dans la plage 0 a 1.
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 7
v. Fonction tangente hyperbolique :
 La fonction d’activation la tangente hyperbolique est
décrite par l’ équation ci dessous :

 Une fonction prédéfinie dédiée a cette fonction


mathématique est définie par : tansig
 La syntaxe est : a=tansig(n)
Exemple :
n=-5:0.1:5; a=tansig(n); plot(n,a,’c-’)
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 8
3.3/ Calcul de la sortie d’un simple neurone :
 a fin de calculer la sortie d’un neurone, il suffit de saisir les
valeurs des poids synaptiques ainsi que le biais, et calculer par la
suite le potentiel d’activation et définir a la fin la fonction de
transfert. Dans ce qui suit un exemple illustratif:
 %définition des poids
w=[4 -2];
%le biais
b=0
%fonction d'activation( la fonction seuil)
func=@hardlim
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 9
%définition des entrées
p=[2 3];
%calcul du potentiel d'activation du neurone
potentiel=p*w'+b;
% calcul de la sortie
y=func(potentiel)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 10


3.4/ Calcul de la sortie d’un réseau a une
couche:
i. Représentation matricielle :
La représentation sous forme matricielle est très utilisée
pour mettre en œuvre un réseau de neurone .
P
w n
R×1 S×1
S×R ∑ f
1
b
Cours_Technologie_Cognitive S×1 Enseignante: ben abdallah 1/3/2024 11
Avec :

p= ,

R= le nombre d’entrées


S= le nombre de neurones
 Notez que les indices des lignes sur les éléments de la
matrice W indiquent le neurone de destination du poids. Et
les indices des colonnes indiquent quelle entrée est la
source pour ce poids.
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 12
ii. Exemple d’application
a1
∑ f
w11

p1 b1
w21 a2
∑ f
w22
w12 b2
w31
p2 a3
∑ f
w32

b3

Figure. Réseau a une couche


Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 13
iii.Programmation sous matlab:
%calcul de la sortie d'un réseau a une couche
%définir les entrées
p=[1 ;-1];
%définir la matrice des poids
w=[2 1 1;0 2 3];

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 14


%définir les biais
b=[1;2;3];
%calcul du potentiel d'activation
n=w'*p+b;
%calcul des sorties
a=logsig(n)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 15


3.5/ Calcul de la sortie d’un réseau
multicouche : Un réseau peut avoir plusieurs couches ,
chaque couche possède une matrice de poids synaptiques
W et un vecteur de biais b et un vecteur de sortie a.
i. Exemple :
∑ f w14
w11
p1 b1
∑ f
w21 w46
w24 y
∑ f b4
∑ f
w22 w25
w12 w56
b2
p2 w31
w35 ∑ f b6

w32 ∑ f b5

Cours_Technologie_Cognitive b3
Enseignante: Figure . Réseau multicouche
ben abdallah 1/3/2024 16
les couches d’un réseau multicouche jouent des rôles
différents. Les réseaux a plusieurs couches sont assez
puissants.
Par exemple un réseaux de deux couches ou la première
couche intègre des fonctions d’activations sigmoïde et la
deuxième couche intègre des fonctions d’activations linéaire
peut être entrainer pour se rapprocher de n’importe quelle
fonction.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 17


ii. Programmation sous matlab:
%calcul de la sortie d'un réseau multicouche
%définir les entrées
p=[1 ;-1];
%définir les poids de la couche1
w1=[2 0;1 2 ;1 3];
%définir les biais de la couche 1
b1=[1;2;3];

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 18


%définir les poids de la couche2
w2=[2 0 1;1 2 1];
%définir les biais de la couche 2
b2=[0;0];
%définir les poids de la couche3
w3=[2 0];

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 19


%définir les biais de la couche 3
b3=[1];
%calcule de la sortie
a=purelin(w3*(logsig(w2*(logsig(w1*p+b1))+b2))+b3)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 20


3.6/ Création d’un simple perceptron :
i. Fonction prédéfinie : perceptron
Les réseaux de perceptron peuvent être créés avec la
fonction prédéfinie : perceptron
Ces réseaux peuvent être initialisés et entrainés. La
fonction intègre l’algorithme du perceptron et la
fonction d’activation par défaut est la fonction seuil.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 21


syntaxe : net = perceptron
Exemple :
%création du perceptron
net=perceptron;
%configuration du perceptron
net=configure(net,[0;0],0);
%définir les poids et le biais
net.b{1}=0
net.IW{1,1}=[1 -0.8]
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 22
%définir les entrées
p=[1;2];
%définir la sortie désirée
t=[1];
% calcul de la sortie réelle
a=net(p);
%calcul de l'erreur
e=t-a;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 23


 la fonction d’activation seuil donne a un perceptron la
capacité de classer les vecteurs d’entrée en divisant
l’espace d’entrées en deux régions, une région ou le
perceptron est actif et une autre ou le perceptron est
inactif.
%saisie des entrées –sorties
x=[0 1 0 1;0 0 1 1];y=[0 0 0 1];
% classification des entrées dans l’espace des entrées
plotpv(x,y)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 24


ii. Création d’un simple perceptron avec la fonction
d’activation linéaire.
Fonction : newlin
 la fonction prédéfinie qui permet de créer un simple
perceptron avec une fonction d’activation linéaire : newlin
Syntaxe : net=newlin(P,T)
Avec : P :Une matrice qui contient la valeur minimale et la
valeur maximale des éléments d’ entrée
T : Nombre de neurones

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 25


exemple :
%fonction newlin
%création du perceptron
net=newlin([1 3;1 3],1)
net.IW{1,1}=[1 2];
net.b{1}=0;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 26


%définir les entrées
P=[1 2 2 3;2 1 3 1];
%calcul de la sotie
sortie=sim(net,P)
%calcul de la sortie avec net
y=net(P)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 27


iii. Fonction prédéfinie : newp
Un perceptron peut être crée avec la fonction :newp
La règle d’apprentissage par défaut étant la règle du
perceptron.
La fonction d’initialisation par défaut initzero, est utilisée
pour remettre les valeurs initiales des poids a zéro.
 La syntaxe est la suivante :
net = newp(P,T,TF,LF)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 28


avec :
P :Une matrice qui contient la valeur minimale et la valeur
maximale des éléments d’ entrées
T : Nombre de neurones
TF :Fonction de transfert , (default = 'hardlim’).
LF :Règle d’apprentissage, (default = 'learnp’).

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 29


 La règle d’apprentissage du perceptron n’est capable
d’entrainer qu’une seule couche de neurones. Ainsi on ne
considère normalement qu’un seul réseau de couches . Cette
restriction impose des limites au calcul qu’un perceptron
peut effectuer.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 30


iv. Règle d’apprentissage du perceptron :
 La règle d’apprentissage du perceptron est réalisée par la
fonction prédéfinie : learnp
La règle d’apprentissage du perceptron learnp calcule les
modifications souhaitées des poids et des biais en fonction du
vecteur d’ entrée et de l’erreur associée.
Syntaxe de la fonction :
dw= learnp(W,P,[],[],[],[],E,[],[],[],[],[])

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 31


%fonction learnp
%création du perceptron
net=newp([-2 2;-2 2],1)
%définir les poids et le biais
w=[1 -0.8];
net.IW{1,1}=w;
net.b{1,1}=0;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 32


%définir les entrées et la sortie cible
p=[1;2];
t=[1]
%simulation de la sortie
a=sim(net,p)
%calcul de l'erreur
e=t-a
%calcul de dw
dw=learnp(w,p,[],[],[],[],e,[],[],[],[],[])
w=w+dw

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 33


v. La simulation du comportement d’un réseau: la
fonction sim
Pour montrer comment fonctionne la simulation nous
allons examiner un exemple simple :
Supposons que nous prenons un perceptron avec un seul
vecteur d’ entrée a deux éléments on définit le réseau comme
suit :

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 34


Exemple 1 :
net=newp([-2 2;-2 2], 1)
net.IW{1,1}=[-1 1]
net.b{1}=[1]
p=[1;1]
a=sim(net,p)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 35


Exemple 2 :
%new perceptron exemple
net=newp([-2 2 ;-2 2],1);
%initialisation des poids et du biais
net.IW{1,1}=[-1 1];
net.b{1}=1;
%définir les entrées
p=[1;1]
%calcul de la sortie
a=sim(net,p)
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 36
Exemple 3 :
%définir la base d'apprentissage
x=[[1;1] [0;1] [0;0]]; y=[1 -1 -1];
%définir le perceptron avec la fonction
%d'activation et la règle
%d'apprentissage
net=newp(x,y, 'hardlims','learnp')

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 37


%définir le nombre d‘ itérations
net.trainParam.epochs=5;
%définir les valeurs initiales des poids
w=[0.2 0.2];
net.IW{1,1}=w
%définir le biais
net.b{1}=[-0.5]

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 38


%apprentissage
net=train(net,x,y)
%affichage des nouvelles valeurs mis a jour
w1=net.IW{1,1}
net.b{1}
view(net)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 39


Si la fonction sim et la fonction learnp sont utilisées a
plusieurs reprises pour présenter des entrées au
perceptron et pour modifier les poids et les biais en
fonction de l’erreur , le perceptron finira par trouver des
valeurs de poids et de biais qui résolvent le problème.
Chaque traversée a travers tous les vecteurs d’entrées et
cibles d’entrainement est appelée une passe.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 40


La fonction train réalise une telle boucle de calcul, a
chaque passage, la fonction parcourt la séquence spécifiée
d’entrées calculant la sortie , l’erreur et l ’ajustement du
réseau pour chaque vecteur d’ entrée dans la séquence, au
fur et a mesure que les entrées sont présentées.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 41


3.7/ Fonctions d’apprentissage :
i. La fonction prédéfinie : train
 Une fonction prédéfinie permettant de faire apprendre
au réseau une base d’apprentissage selon une règle pré-
choisie .

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 42


Syntaxe :
[NET] = train(NET,X,T)
Avec :
NET : l’architecture choisie du réseau
X: vecteur entrée
T: vecteur sortie désirée

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 43


Exemple :
%création du perceptron
net=newp([-2 2;-2 2],1);
%choix du nombre d‘ itérations
net.trainParam.epchos=10;
%vecteur d'entrée
P=[[2;2] [1;-2] [-2;2] [-1;1]]

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 44


%vecteur sortie désirée
T=[0 1 0 1]
% apprentissage
net = train(net, P,T);
% les nouvelles valeurs des poids
net.IW{1,1}
net.b{1,1}

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 45


La fonction train ne garantie pas toujours que le
réseau résultant fait son travail.
Les nouvelles valeurs des poids et des biais doivent
être vérifiées en calculant la sortie du réseau pour
chaque vecteur d’entrée, pour voir si toutes les cibles
sont atteintes .
Si un réseau ne fonctionne pas correctement , il peut
être entrainé davantage.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 46


ii. La fonction prédéfinie : adapt
 Permet d’adapter un réseau linéaire a une base
d’apprentissage et calcule l’erreur a la sortie.
 Syntaxe [net, a, e]=adapt(net,P,T)
avec: P: vecteur d’entrée, T: sortie cible
a: sortie du réseau .
e: erreur a la sortie .

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 47


L’adaptation d’un réseau linéaire peut être effectuée
en utilisant la fonction train ou adapt , bien que train
soit généralement la meilleure option, car elle a accès
a des algorithmes d’apprentissage plus large.
La fonction adapt fait appel a la fonction train et la
règle de l’adaline qui est la règle d’apprentissage par
défaut des poids et des biais.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 48


Exemple :
%fonction adapt
%création du perceptron
net=newlin([-1 1;-1 1],1)
%definir les poids et le biais
net.IW{1,1}=[0 0];
net.b{1}=0;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 49


%définir les entrées
P=[[1;2] [2;1] [2;3] [3;1] ];
%définir la sortie cible
T=[4 5 7 7]
%adaptation du réseau
[net,a,e]=adapt(net,P,T)
%affichage de la sortie réelle
disp(['a= ',num2str(a) ,' e= ',num2str(e) ])

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 50


3.8/ Création et apprentissage d’un réseau
multicouche:
i. Initialisation des poids d’un réseau :
 La fonction prédéfinie init permet d’initialiser les
valeurs du biais et des poids.
 Elle est utilisée pour mettre les pondérations et les biais
du réseau a leurs valeurs d’origine.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 51


Syntaxe : net=init(net)
Exemple :
% entrées
x = [0 1 0 1; 0 0 1 1];
% Sortie cible
t = [0 0 0 1];
%creation du perceptron
net = perceptron;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 52


%configuration du perceptron
net = configure(net,x,t);
%initialisation des poids et du biais
net.IW{1,1}=[1 .2]
net.b{1}=.5
% apprentissage du réseau
net = train(net,x,t);

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 53


%Affichage des nouvelles valeurs des poids
net.IW{1,1}
net.b{1}
%mise a zero des poids et du biais
net = init(net);
%affichage des nouvelles valeurs
net.IW{1,1}
net.b{1}

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 54


ii. Apprentissage d’un réseau multicouche :
 la première étape de l’ apprentissage d’un réseau de
rétroaction consiste a créer l’objet réseau. La fonction
newff Crée un réseau de rétroaction, elle nécessite quatre
entrées et renvoie l’objet réseau.
Syntaxe : net = newff(P,S,TF, BTF)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 55


La première entrée est la matrice des valeurs minimales et
maximales de chacun des éléments du vecteur d’entrée.
La deuxième entrée est un vecteur qui contient les tailles
de chaque couche.
La troisième entrée est une matrice de cellules contenant
les noms des fonction de transfert a utiliser dans chaque
couche.
Le quatrième argument contient le nom de la fonction
d’apprentissage a utiliser.

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 56


Exemple 1:
%fonction newff
net=newff([-1 2;0 5],[3,1],{'tansig','purelin'},'traingd');
%initialisation du réseau
net=init(net)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 57


%définition du vecteur entrée
p=[1;2];
%calcule de la sortie
a=sim(net,p)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 58


La commande précédente crée un réseau a deux couches.
Il y a un vecteur d’ entrée avec deux éléments. Les
valeurs du premier élément d’entrée sont comprises entre
-1 et 2. les valeurs du deuxième élément du vecteur
d’entrée sont comprises entre 0 et 5.il y a 3 neurones
dans la première couche et un neurone dans la deuxième
couche ( couche de sortie). La fonction de transfert dans
la première couche étant la tangente hyperbolique et la
fonction de transfert de la couche de sortie est linéaire.
La fonction d’apprentissage étant la descente du
gradient.
Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 59
Exemple 2:
%fonction newff
%définition des entrées
p=[-1 -1 2 2 ;0 5 0 5];
%sortie cible
T=[-1 -1 1 1];
%création du réseau
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingd');

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 60


%visualisation du réseau
view(net)
%initialisation du réseau
net=init(net)
%définition des paramètres d'apprentissage
net.trainParam.lr=0.05;
net.trainParam.epochs=300;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 61


%apprentissage du réseau
[net,tr]=train(net,p,T)
%calcule de la sortie
a=sim(net,p)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 62


Exemple 3:
%fonction newff
%définition des entrées
p=[-1 -1 2 2 ;0 5 0 5];
%sortie cible
T=[1 1 -1 -1];
%création du réseau
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainbfg');

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 63


%visualisation du réseau
view(net)
%initialisation du réseau
net=init(net)
%définition des paramètres d'apprentissage
net.trainParam.lr=0.05;
net.trainParam.epochs=300;

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 64


%apprentissage du réseau
[net,tr]=train(net,p,T)
%calcul de la sortie
a=sim(net,p)

Cours_Technologie_Cognitive Enseignante: ben abdallah 1/3/2024 65

Vous aimerez peut-être aussi