Académique Documents
Professionnel Documents
Culture Documents
Apprentissage profond
Mohamed Néji
mohamed.neji@enetcom.usf.tn
Objectifs du cours
• Démystifier l’apprentissage automatique et profond.
2
Intelligence Artificielle
Machine Learning
Deep Learning
3
b
4
5
6
L’algorithme du flux Facebook
7
ANN
• Le Neurone
• La fonction d’Activation
• Comment les réseaux de Neurones fonctionnent ?
• Comment les réseaux de Neurones apprennent ?
• Algorithme du Gradient
• Algorithme du Gradient Stochastique
• Rétropropagation
8
Le Neurone
9
Communication entre neurones
10
Le Neurone
Valeur d’entrée
Signal1d’entrée
X 1 Nœud
1
Variable
Indépendante 1
Valeur d’entrée
Signal2d’entrée
X 2
Variable
2 neurone Signal
y deValeur
sortie de sortie
Indépendante 2 . .
. .
.
.
Valeur d’entrée m Xmm
Signal d’entrée
Variable
1. Continu (prix)
Indépendante m 2. Binaire (oui/non)
Synapse 3. Catégorique
Standardiser
11
Le Neurone
Valeur d’entrée 2 X2
neurone y2 Valeur de sortie 2
.
.
.
12
Le Neurone
Valeur d’entrée 1 X1
Valeur d’entrée 2 X2
neurone y Valeur de sortie
.
.
.
Valeur d’entrée m Xm
Même observation
Observation seule Observation seule
13
Le Neurone
Valeur d’entrée 1 X1
w1
1ère étape :
Valeur d’entrée 2 X2 w2
y Valeur de sortie
.
.
wm
.
Valeur d’entrée m Xm
14
Le Neurone
Valeur d’entrée 1 X1
w1
2ème étape :
Valeur d’entrée 2 X2 w2 3ème étape
∅ y Valeur de sortie
.
.
wm
.
Valeur d’entrée m Xm
15
Fonction d’activation
16
Fonction d’activation
17
Fonction d’activation
18
Fonction d’activation
19
Fonction d’activation
Valeur d’entrée 1 X1
w1
2ème étape :
Valeur d’entrée 2 X2 w2 3ème étape
∅ y Valeur de sortie
.
.
wm
.
Valeur d’entrée m Xm
Valeur de sortie
21
Fonctionnement de l’ANN
• Prédiction du prix d’une maison
22
Fonctionnement de l’ANN
Surface (m2)
X1
Nombre de chambres X2
y Prix
Age X4
23
Apprentissage dans les ANN
24
Comment apprennent les ANN ? C
y
Perceptron = réseau de neurones à propagation avant
Valeur d’entrée 1 X1
w1
Valeur d’entrée 2 X2 w2
ŷ Valeur de sortie
.
.
wm
.
1 2
∁= −
Valeur d’entrée m Xm 2
y Vraie valeur
y
Id Row Study Hrs Sleep Hrs Quiz Exam
C≈0
1 12 6 78% 93%
25
Comment apprennent les ANN ?
Ajuster w1,w2,w3
C
26
Algorithme du Gradient
• Mise à jour du poids et d’ajustement
27
Algorithme du Gradient
Plus de poids, plus de synapses
Fléau de la dimension
28
Algorithme du Gradient
29
Algorithme du Gradient
Calculer 93 PFLOPS : nombre d’opérations flottantes possibles de faire/seconde
Péta : 1015
93 * 1015 opérations/seconde
Pour une seule combinaison : 1.08 * 1058 secondes = 3.42 * 1050 années
Sunway TaihuLight
30
Algorithme du Gradient
31
Algorithme du Gradient
3
1 2
5 6
4
7 8 9
32
Algorithme du Gradient
33
Principe de l’algorithme de
Gradient
34
Notation
35
Notation
36
Principe
37
Principe
38
Rétropropagation
39
Rétropropagation du Gradient
40
Rétropropagation du Gradient
41
Rétropropagation du Gradient
42
Rétropropagation du Gradient
43
Rétropropagation du Gradient
44
Rétropropagation du Gradient
45
Rétropropagation du Gradient
46
Récapitulons !
• =∑ + (propagation avant)
• =∅ ∗ ∑ (propagation en arrière)
( ) ( ) ( , )
• = −
• = ∗
47
Exemple
48
49
0,377
? 0,867
0,648
0,5
? 0,085
50
= 1 – 0,648
=∅ ∗ ∑
51
52
53
-
54
55
56
Algorithme du Gradient Stochastique
57
Algorithme du Gradient Stochastique
Ajuster w1,w2,w3
58
Algorithme du Gradient Stochastique
59
Entraîner l’ANN
1. Initialiser les poids avec des valeurs proches de 0 (mais différentes de 0)
2. Envoyer la première observation dans la couche d’entrée avec une variable par
neurone
3. Propagation avant (de gauche à droite): les neurones sont activés d’une manière
dépendant des poids qui leur sont attribuées. Propager les activations jusqu’à
obtenir
4. Comparer avec y et mesurer l’erreur avec la fonction C
5. Propagation arrière (de droite à gauche): l’erreur se re-propage dans le réseau.
Mettre à jour les poids selon leur responsabilité dans l’erreur. Le taux d’apprentissage
détermine de combien on ajuste les poids.
6. Répéter étapes 1 à 5 et ajuster les poids après chaque observation (apprentissage
renforcé) ou: répéter étapes 1 à 5 et ajuster les poids après un lot d’observations
(apprentissage par lot)
7. Quant tout le jeu de données est passé à travers l’ANN, ça fait une époque. Refaire
plus d’époques
60
Construire un ANN
61
Instructions d'installation des modules
Pour les utilisateurs de Windows :
• Ouvrir le terminal avec le raccourci clavier "Win + R" et exécuter "cmd".
Puis taper les commandes suivantes :
• conda create -n deeplearningaz python=3.6 anaconda
• activate deeplearningaz
• conda install theano
• conda install tensorflow
• conda install keras
• conda update --all
• spyder
Note : Il est important de lancer Spyder à partir de l'environnement qu'on vient de créer et de s'assurer qu'on utilise bien Python 3.6. Sinon, il ne
trouvera pas keras.
Ça veut dire qu'à chaque fois que vous voulez lancer Spyder, vous ouvrez le terminal, vous activez l'environnement avec activate deeplearningaz, et
ensuite vous lancez Spyder en tapant spyder. 62
Instructions d'installation des modules
Pour les utilisateurs de Mac :
• Ouvrir le terminal et taper les commandes suivantes :
• conda create -n deeplearningaz python=3.6 anaconda
• conda activate deeplearningaz
• conda install theano
• conda install tensorflow
• conda install keras
• conda update --all
• Spyder
Il est important de lancer Spyder à partir de l'environnement qu'on vient de créer et de s'assurer qu'on utilise bien Python 3.6. Sinon, il ne trouvera pas
keras. Ça veut dire qu'à chaque fois que vous voulez lancer Spyder, vous ouvrez le terminal, vous activez l'environnement avec conda activate
deeplearningaz, et ensuite vous lancez Spyder en tapant spyder.
63
Instructions d'installation des modules
Pour les utilisateurs de Linux :
• Ouvrir le terminal et taper les commandes suivantes :
• conda create -n deeplearningaz python=3.6 anaconda
• conda activate deeplearningaz
• conda install theano
• conda install tensorflow
• conda install keras
• conda update --all
• spyder
Note : Il est important de lancer Spyder à partir de l'environnement qu'on vient de créer et de s'assurer qu'on utilise bien Python 3.6.
Sinon, il ne trouvera pas keras.
Ça veut dire qu'à chaque fois que vous voulez lancer Spyder, vous ouvrez le terminal,
vous activez l'environnement avec conda activate deeplearningaz, et ensuite vous lancez Spyder en tapant spyder. 64
Fonction de coût - Ordinary Least Squares
65
Logarithmic Loss
66
Activité
• Utilisez notre réseau de neurones pour prédire si le client suivant va ou non quitter la banque
dans les 6 mois :
• Pays : France
• Score de crédit : 600
• Genre : Masculin
• Âge : 40 ans
• Durée depuis entrée dans la banque : 3 ans
• Balance : 60000 €
• Nombre de produits : 2
• Carte de crédit ? Oui
• Membre actif ? : Oui
• Salaire estimé : 50000 €
• Devrait-on dire au revoir à ce client ?
67
Evaluer l’ANN
68
Biais-Variance Tradeoff
• En statistique et en apprentissage automatique, le dilemme (ou compromis) biais–
variance est le problème de minimiser simultanément deux sources d'erreurs qui
empêchent les algorithmes d'apprentissage supervisé de généraliser au-delà de leur
échantillon d'apprentissage :
• La décomposition biais-variance est une façon d'analyser l'espérance de l'erreur de
prédiction d'un algorithme d'apprentissage d'un problème particulier comme une somme
de trois termes : le biais, la variance et une quantité, appelée erreur irréductible, résultant
du bruit dans le problème lui-même.
69
K-Fold Cross Validation
Training Set
3ème itération
2ème itération
1ère itération
Training folds
Test Set
Test fold
70
Bias-Variance Tradeoff
71
En pratique…
• Reprendre la partie « préparation des données »
• crossvalidation machine learning
• Utiliser le module qui fait partie de keras pour lier crossvalidation avec le
modèle.
from keras.wrappers.scikit_learn import kerasclassifier
from sklearn.model_selection import cross_val_score
• Définition d’une nouvelle function : build_classifier()
• classifier = kerasclassifier(build_fn = build_classifier, batch_size= 10, epochs = 100)
• precisions = cross_val_score(estimator=classifier, X=X_train, y=y_train, cv=10, n_jobs=-1)
• precisions.mean()
• ecart_type = precisions.std()
72
Améliorer l’ANN
73
Régularisation dropout
• Réduire le sur-apprentissage (overfitting)
• Modèle qui devient super fort sur le jeu de données;
• Nouvelle donnée différente des données d’entrainement super mauvais
• Précisionjeu d’apprentissage >> Précisionjeu test
• Variance de la précision symptôme de sur-apprentissage
• A chaque itération d’apprentissage, des neurones vont être choisis d’une
manière aléatoire et qui vont être désactivés neurones pas trop
dépendantes
• Dans la phase d’apprentissage, certains liens entre certains liens qui
devient trop forts.
• En supprimant aléatoirement des neurones, ceux trop liés vont être obligés
de chercher hors ces liens diminuer la force des liens diminuer le sur-
apprentissage
74
Ajuster l’ANN
75
Challenge ?
• Optimisation des paramètres
• Deux types de paramètres
• Paramètres qui évoluent et s’ajustent au fur et à mesure de
l’apprentissage (poids sur les synapses, selon le nombre d’époques, taille
des lots, nombre de neurones par couche)
• gridsearch: tester plusieurs paramètres et envoyer la meilleure
combianison
• from sklearn.model_selection import GridSearchCV (grid_search)
• classifier = KerasClassifier(build_fn=build_classifier)
• Parameters = {"batch_size":[25,32],"epochs":[100,500],"optimizer":["adam","rmsprop"]}
• Résultats : 85, 56 % avec 25, 500, rmsprop
• Comment battre ce score ???
76
Les réseaux de neurones à convolution
77
Plan du chapitre
• Que sont les réseaux de Neurones à convolution (CNNs)
• Etape 1 : Opération de Convolution
• Etape 1b : Couche ReLU
• Etape 2 : Pooling
• Etape 3 : Flattening
• Etape 4 : Couche complètement connectée
• Récap
• Softmax et Entropie Croisée
78
79
Réseaux de Neurones à convolution
• Geoffrey Hinton
80
Tendances de recherche
82
Réseaux de Neurones à convolution
83
Réseaux de Neurones à convolution
pixel value : intensité de la couleur (0: noir et 255: blanc)
Dim rouge
Dim verte
Dim bleue
84
Réseaux de Neurones à convolution
85
Réseaux de Neurones à convolution
86
Etape 1 - Convolution
87
Etape 1 - Convolution
0 1 0 0 0
0 1 1 1 0
= 1 0 0 2 1
1 4 2 1 0
0 0 1 2 1
88
Etape 1 - Convolution
89
Etape 1b – Couche ReLu
Rectified Linear unit
90
Etape 1 - Convolution
91
Etape 2 – Max Pooling
92
Etape 2 – Max Pooling
93
Etape 2 – Max Pooling
94
Etape 2 – Max Pooling
1 1 0
Max Pooling
4 2 1
0 2 1
95
Récapitulons !!
96
Pratiquons un peu !!!
• Screenshot créé à partir de : https://www.cs.ryerson.ca/~aharley/vis/conv/flat.html
97
Etape 3 - Flattening
98
Etape 3 - Flattening
99
Récapitulation
100
Etape 4 – Complètement connecté
101
Etape 4 – Complètement connecté
102
Etape 4 – Complètement connecté
0.9
0.2
0.1
0.2
0.1
0.1
103
Etape 4 – Complètement connecté
0.1
0.2
0.9
0.2
0.9
0.1
0.2
104
Etape 4 – Complètement connecté
1
0.1
0.4 0.95
0.8 0.05
0.8
0.1
0.2
105
Etape 4 – Complètement connecté
0.1
0.8
0.4
0.21
0.9
1 0.79
0.2
0.1
106
Etape 4 – Complètement connecté
107
Récapitulation
108
Softmax et Entropie croisée
Softmax et Entropie croisée
z1
z2 0.95
0.05
110
Softmax et Entropie croisée
111
Softmax et Entropie croisée
Chien 0.9 1
0
Chat 0.1
112
Softmax et Entropie croisée
0.9 0.6
0.1 0.4
0.1 0.3
0.9 0.7
0.4 0.1
0.6 0.9
113
Softmax et Entropie croisée
114