UQAM INF4230 1
Réseaux de neurones artificiels
Hiver 2017 – INF4230 - UQAM
UQAM INF4230 2
Plan
• Introduction
• Architectures• Le perceptron
• Réseau de neurones multicouches
• Apprentissage • Apprentissage avec un perceptron
• Apprentissage avec un MLP: Rétro-propagation du gradient de l’erreur
• Introduction à l’apprentissage profond: Réseaux de neurones convolutifs
UQAM INF4230 3
Introduction
• Comment fait-on pour raisonner, parler, apprendre... ?
• Comment créer une intelligence artificielle ? • 2 approches priorisées…
• Approche cognitiviste vs Approche connexionniste.
• Cognitivisme: Analyse logique des tâches relevant de la cognition humaine. Reconstitutionpar programme. Approche privilégiée par l'Intelligence Artificielle symbolique.
• Connexionnisme: Étudier comment le cerveau humain fonctionne. C'est cette approche quia conduit à l'étude des réseaux de neurones formels. Démarche consistant à vouloir rendrecompte de la cognition humaine par des réseaux de neurones.
UQAM INF4230 4
Introduction• Réseau de neurones artificiel: unités de calcul élémentaires interconnectées.
Un modèle de calcul inspiré du cerveau humain.
• Analogie avec neurones naturels
• 10 milliards de neurones
• 60 milliards de connexions (synapses)
• Un synapse peut être inhibant ou excitant
• Un nombre fini d’unités de calcul élémentaires (neurones).
• Liens pondérés passant un signal d’un neurone vers d’autres.
• Plusieurs signaux d’entrée par neurone
• Un seul signal de sortie
Cerveau humain Réseau neurones artificiel (RNA)
Cerveau humain RNA
Cellule (soma) Neurone
Dendrites Entrée (input)
Synapses Poids (weight)
Axone Sortie (output)
UQAM INF4230 5
Le Perceptron
• Perceptron = réseau de neurones monocouche.
• Chaque entrée 𝑥𝑖 est plus ou moins valorisée vis à vis du neurone par le biais d'un poids 𝑤𝑖.
• La i-ème information qui parviendra au neurone sera donc en fait 𝑤𝑖 ∗ 𝑥𝑖.• Le neurone artificiel va effectuer une somme pondérée de ses entrées plutôt que de
considérer séparément chacune des informations.• La variable net, représente cette somme pondérée.
UQAM INF4230 6
Le Perceptron
• Les paramètres d’un neurone:
• Biais ou seuil : Entrée qui permet d’ajouter de la flexibilité au réseau en permettant devarier le seuil de déclenchement du neurone.
• Entrées : Directement les entrées du système où peuvent provenir d’autres neurones.
• Poids : Facteurs multiplicateurs qui affectent l’influence de chaque entrée sur la sortiedu neurone.
• Fonction d’activation : Intègre toutes les entrées et le biais et calcul la sortie duneurone.
• Sortie : Valeurs distribuées vers d’autres neurones ou valeurs de sortie du système.
UQAM INF4230 7
Le Perceptron
• La fonction d’activation f
• La fonction d'activation, ou fonction de transfert, est une fonction qui doitrenvoyer un réel proche de 1 quand les "bonnes" informations d'entrée sontdonnées et un réel proche de 0 quand elles sont "mauvaises".
)()(
sinon1
0 si1)(
1
1
n
i
ii
n
i
ii
xwsignnetf
netnetf
xwnet
UQAM INF4230 8
Le Perceptron
• Il y a bien sûr beaucoup de fonctions d'activations possibles. Toutefois dans la pratique il y en a principalement 2 qui sont utilisées :
• Les 2 fonctions de transfert les plus utilisées• La fonction de Heaviside: ∀𝑥 ∈ 𝑅, 𝑓 𝑥 = 1 𝑠𝑖 𝑥 ≥ 0, 0 𝑠𝑖𝑛𝑜𝑛
• La fonction sigmoïde: ∀𝑥 ∈ 𝑅, 𝑔 𝑥 =1
1+ 𝑒−𝑥
UQAM INF4230 9
Le Perceptron
• Exemple: Fonction signe[McCulloch-Pitts, Exemples]
xi wi xi wi
x y x+y-2 x+y-1
1 1 0 1 1 1
1 0 -1 -1 0 1
0 1 -1 -1 0 1
0 0 -2 -1 -1 -1
UQAM INF4230 10
Les réseaux multicouches
• Réseaux de neurones multicouches ou Multilayer Perceptron (MLP).
• Au moins 2 couches: Une couche cachée et une couche de sortie.
• Une couche = un groupe de neurones sans connexion les uns avec les autres
• 2 types de réseaux multicouches• Réseaux de neurones récurrents: avec cycle
• Réseaux de neurones à propagation en avant: sans cycle
UQAM INF4230 11
Apprentissage dans les réseaux de neurones
• Comment un RNA apprend ?• Les liens entre les neurones ont des poids numériques.
• Un poids reflète la force, l’importance, de l’entrée correspondante.
• La sortie de chaque neurone est fonction de la somme pondérée de ses entrées.
• Un RNA apprend en ajustant ses poids itérativement jusqu’à ce que les sorties soient enaccord avec les sorties attendues (ou réelles).
UQAM INF4230 12
Apprentissage dans les réseaux de neurones
• Protocole d’apprentissage:
• Les données d’apprentissage sont présentées séquentiellement => l’apprentissage estdonc incrémental.
• Chaque étape emploie une donnée d’entrée pour modifier les poids de toutes lesconnexions.
• La suite des données utilisées peut être construite par un tirage aléatoire avec remisedans l’ensemble des exemples ou par plusieurs passages successifs de la totalité de cetensemble.
• Le nombre total de données utilisé pour l’apprentissage est en général bien supérieur aunombre d’exemples.
UQAM INF4230 13
Apprentissage dans les réseaux de neurones
• Apprentissage avec un perceptron:
)()(1
1
n
i
ii
n
i
ii
xwsignnetfy
xwnet
Paramètres
xi : entrée
wi : poids (nombre réel)
c : pas (ou taux) d’apprentissage : 0 ≤ c ≤1
d : sortie désirée
Algorithme d’apprentissage: Règle de
delta
Pour chaque donnée d’entraînement,
incrémenter le poids wi par :
wi = c(d-y)xi
UQAM INF4230 14
Apprentissage dans les réseaux de neurones
• Apprentissage avec un perceptron:
• La mise à jour des poids d’une itération à une autre ce fait comme suit:
𝑤𝑖𝑗+1
= 𝑤𝑖𝑗+ ∆𝑤𝑖
= 𝑤𝑖𝑗+ 𝑐(𝑑 − 𝑦)𝑥𝑖
• Une valeur de c proche de 0 implique une modification légère des poids.
• Une valeur de c proche de 1 implique une plus grande modification des poids.
• En pratique, on diminue graduellement la valeur au fur et à mesure desitérations.
• C’est un paramètre spécifié par l’utilisateur.
UQAM INF4230 15
Apprentissage dans les réseaux de neurones
• Algorithme d’apprentissage du perceptron:
• On note S la base d ’apprentissage.
• S est composée de couples (x, d) où : x est le vecteur associé à l ’entrée (x0, x1, ..., xn) et d la sortiecorrespondante souhaitée.
• On cherche à déterminer les coefficients (w0, w1, ..., wn).
• Initialiser aléatoirement les coefficients wi.• Répéter :
• Prendre un exemple (x, c) dans S• Calculer la sortie y du réseau pour l ’entrée x• Mettre à jour les poids :
• Pour i de 0 à n :• wi= wi+ c∗(d −y) ∗xi
• Fin Pour• Fin Répéter
UQAM INF4230 16
Apprentissage dans les réseaux de neurones
• Exemple: Modélisation d’une fonction booléenne avec un perceptron
• Comment a-t-on obtenu ce résultat ?
UQAM INF4230 17
Apprentissage dans les réseaux de neurones
• Exemples d’application
1
c = 0.2
wi = c (d-y)xi
x1 x2 d
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1
7.0 7.0 -1
2.8 0.8 1
1.2 3.0 1
7.8 6.1 -1
1. Initialisation : w = [w1, w2, w3] = [.75, .5, -.6]
2. f(net) = sign(.75×1+.5×1-.6×1)=sign(.65)=1;
w = 0.2(1-1)X= 0; donc w est inchangé.
3. f(net) = sign(.75×9.4+.5×6.4-.6×1)=sign(9.65)=1;
w = -.4X; donc w = w -.4 [9.4, 6.4, 1] = [-3.01, -2.06, -1]
…
500. w = [-1.3, -1.1, +10.9].
Équation de la ligne séparant les données : -1.3x1 + -1.1x2+10.9 = 0.
UQAM INF4230 18
Apprentissage dans les réseaux de neurones
• Exemples d’application
1Après 10 itérations :
x1 x2 d
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1
7.0 7.0 -1
2.8 0.8 1
1.2 3.0 1
7.8 6.1 -1
UQAM INF4230 19
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)
Exercice 1:Soit la fonction logique suivante:•f(x1=0,x2=0) = 0•f(x1=1,x2=0) = 1•f(x1=0,x2=1) = 1•f(x1=1,x2=1) = 1
1) De quelle fonction s’agit-il ?2) À l’aide du réseau donné, trouver les poids w1 et w2. On prendra la fonction de
Heaviside définit ci-dessous comme fonction de transfert:f(x) = 1 si x > 0f(x) = 0 sinon
UQAM INF4230 20
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)
Exercice 2:Soit la fonction logique suivante:
•f(x1=0,x2=0) = 0
•f(x1=1,x2=0) = 0
•f(x1=0,x2=1) = 0
•f(x1=1,x2=1) = 1
1) De quelle fonction s’agit-il ?
2) À l’aide du réseau donné, trouver les poids w1 et w2. On prendra la fonction deHeaviside définit ci-dessous comme fonction de transfert (seuil=0) :
3) Pourquoi ca ne marche pas ?
UQAM INF4230 21
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)
Exercice 3:Soit la fonction logique suivante:
•f(x1=0,x2=0) = 0
•f(x1=1,x2=0) = 0
•f(x1=0,x2=1) = 0
•f(x1=1,x2=1) = 1
4) Essayez avec cette nouvelle architecture.
UQAM INF4230 22
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)
Exercice 4: apprentissage de paritéConsidérons un afficheur numérique à sept segments et formons un perceptron donnantla parité du chiffre écrit, à savoir 0 s'il est pair et 1 sinon.
UQAM INF4230 23
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)
Exercice 4: apprentissage de paritéOn commence par coder chaque chiffre en une liste de sept 0 ou 1 selon les segmentsallumés, liste qui constituera les neurones d'entrée du perceptron.
• On procède ensuite à l'apprentissage.
UQAM INF4230 24
Apprentissage dans les réseaux de neurones
• Exemples d’application (À vous de jouer)Exercice 4: apprentissage de parité
• Il est intéressant de remarquer qu'un poids synaptique négatif fort a été attribué au5ème segment.
• A posteriori, on peut constater que l'activation de ce segment influence fortement laparité du chiffre considéré : l'apprentissage a induit un début d'intelligence artificiel.
UQAM INF4230 25
Apprentissage dans les réseaux de neurones
• Si nous avions plusieurs classes ?
• La règle delta reste la même.
UQAM INF4230 26
Apprentissage dans les réseaux de neurones
Limites d’un perceptron
• Un perceptron peut-il apprendre les fonctions ET et OU?• Oui.
• Un perceptron peut-il apprendre la fonction XOR ?• Non.
• Parce qu’un perceptron peut apprendre seulement des données linéairementséparables.
• L ’algorithme peut converger vers plusieurs solutions (selon les valeurs initialesdes coefficients, la valeur de ε, l ’ordre de présentation des exemples).
• La solution n ’est pas robuste : un nouvel exemple peut remettre en cause leperceptron appris.
UQAM INF4230 27
Apprentissage dans les réseaux de neurones
(0,0)
(0,1) (1,1)
(1,0)x1
x2
ET OU XOR
x1
x2
x1
x2
UQAM INF4230 28
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches
Propagation des activations vers l’avant (Forward Activiation)
Propagation des erreurs vers l’arrière (Backward propagation)
)()(1
1
n
i
ii
n
i
ii
xwsignnetfy
xwnet
UQAM INF4230 29
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: prise de décision
Chaque neurone du RNA a pour sortie :
𝑛𝑗 = 𝑔(
𝑖 ∈𝑒𝑛𝑡𝑟é𝑒𝑠 𝑗
𝑤𝑖,𝑗 ∗ 𝑛𝑖)
𝑛𝑗 = 𝑔(𝑖𝑛𝑗)
Avec g comme fonction d’activation.
UQAM INF4230 30
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: prise de décision
Exemple: calcul de la sortie
UQAM INF4230 31
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: prise de décision
Exemple: calcul de la sortie
Source: http://www2.ift.ulaval.ca/~lamontagne/ift17587/modules/module3/réseauxNeurones.pdf
UQAM INF4230 32
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Apprentissage
• La généralisation de la règle delta aux réseaux à couches cachées s’appellerétro-propagation du gradient de l’erreur.
• Elle consiste à propager l’erreur à travers le réseau dans le sens inverse de lapropagation des activations.
• Cette technique permet de calculer la modification des poids des connexionsentre les couches cachées.
• Elle tente de réduire la différence entre les sorties du réseau et les sortiesdésirées. Minimiser l’erreur du réseau.
UQAM INF4230 33
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Apprentissage
• Algorithme de rétro-propagation du gradient de l’erreur.
• Initialiser les poids à de petites valeurs aléatoires• Habituellement entre -0.05 et 0.05
• Tant que la condition d'arrêt n'est pas atteinte• Pour chaque exemple d’entrainement
Calculer les sorties du réseauPour toutes les unités de sortie i, calculer l’erreur:
• ∆𝑖= 𝑔′ 𝑖𝑛𝑖 ∗ 𝑑𝑖 − 𝑦𝑖Pour toutes les unités cachées j, calculer l’erreur:
• ∆𝑗= 𝑔′ 𝑖𝑛𝑗 ∗ σ𝑊𝑗,𝑖∆𝑖Mettre à jour tous les poids 𝑊𝑗,𝑖
• 𝑊𝑗,𝑖 = 𝑊𝑗,𝑖 + 𝑐 ∗ 𝑥𝑗 ∗ ∆𝑖
UQAM INF4230 34
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Apprentissage
• Neurones dans la couche de sortie :
wki = - c(di-yi)×yi(1-yi)xk
• Neurones cachés :
wki = - cyi(1-yi)Σj(-deltaj×wij)xki
avec deltaj= c(di-yi)×yi(1-yi)
Voir, le manuel de référence (Stuart et Russel), pages 745-746.
Luger. Artificial Intelligence, 4th Ed., 2002
yi=g(neti) =1
1+e-λneti
n
j=1
neti = Σ wjixji
g ’(neti)= λ× g(neti) × (1-g(neti))
UQAM INF4230 35
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Exemple
UQAM INF4230 36
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Exemple
UQAM INF4230 37
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Exemple
UQAM INF4230 38
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Exemple
UQAM INF4230 39
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Condition d’arrêt
• Le nombre d’itérations est importants car:• Si trop faible, l’erreur n’est pas suffisamment réduite
• Si trop grand, surapprentissage!
• Il y a plusieurs conditions d’arrêt possibles• Après un certain nombre fixe d’itérations
• Lorsque les poids se stabilisent
• Lorsque l’erreur dans les sorties des exemples descend en dessous d’une certaine borne
UQAM INF4230 40
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Problème du XOR
Avec la fonction signe comme fonction d’activation.
Source : A. Cornuéjols, L. Miclet, Y. Kodratov. Apprentissage artificiel: Concepts et algorithmes, Eyrolles, 2002.
I1 I2 O
0 0 0
1 0 1
0 1 1
1 1 0
UQAM INF4230 41
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Problème du XOR
• Le neurone 3 réalise un OU logique
• Le neurone 4 réalise un ET logique
• Le neurone 5 réalise OU exclusif
UQAM INF4230 42
Apprentissage dans les réseaux de neurones
Réseau de neurones multicouches: Limitations
• Fonctionnement «inexpliqué» -> Boîte noire
• Une fois l’entraînement terminé, il est difficile de comprendre le réseau deneurones dans sa globalité. (Pourquoi les poids?)
• Possibilité de «sur-apprentissage».
• Absence de garanties
• Il n’est pas certain qu’une nouvelle donnée soit classée correctement.
• Gourmand en temps d’exécution.
UQAM INF4230 43
Apprentissage dans les réseaux de neurones
Outils
• Weka: http://www.cs.waikato.ac.nz/ml/weka/
• SPMF: http://www.philippe-fournier-viger.com/spmf/
• Etc.
UQAM INF4230 44
Apprentissage profond
Pourquoi l’apprentissage profond ?Les motivations principales pour étudier les algorithmes d’apprentissage pour desarchitectures profondes sont les suivantes :
• Le manque de profondeur peut être nuisible.• Le cerveau a une architecture profonde.• Les processus cognitifs semblent être profonds.
Une observation (comme une image) peut être représentée de différentes façons parun vecteur de données en fonction de :
• l’intensité des pixels dont elle est constituée ;• ses différentes arêtes ;• les différentes régions de forme particulière ;• etc.
UQAM INF4230 45
Apprentissage profond
Plusieurs architectures de réseaux de neurones profonds
• deep neural networks
• deep belief network
• Stacked Autoencoder Network
• convolutional deep neural networks
UQAM INF4230 46
Apprentissage profond
Architecture des convolutional deep neural networks
4 opérations de bases• Convolution
• Fonction d’activation: Non Linearity (ReLU)
• SubSampling ou MaxPooling
• Classification
UQAM INF4230 47
Apprentissage profond
Architecture des convolutional deep neural networks
UQAM INF4230 48
Apprentissage profond
Architecture des convolutional deep neural networks
- Les filtres
- Les features Map
UQAM INF4230 49
Apprentissage profond
Architecture des convolutional deep neural networks
UQAM INF4230 50
Apprentissage profond
Architecture des convolutional deep neural networks : Vue globale
UQAM INF4230 51
Apprentissage profond
Domaines d’application• Classification d’images• Reconnaissance des caractères.• Traitement du langage naturelle• Classification de texte.• Etc.
Voir d’autres application live: http://machinelearningmastery.com/inspirational-applications-deep-learning/
UQAM INF4230 52
Apprentissage profond
Outils:
• Deeplearning4j: https://deeplearning4j.org/
• Etc.
Sites intéressants pour débutants:
http://neuralnetworksanddeeplearning.com/chap6.html
https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
https://smcgro.wordpress.com/2016/02/12/convolutional-neural-networks-from-scratch/