Vous êtes sur la page 1sur 114

Deep Learning

Apprentissage profond

2ème : Ingénierie Des Systèmes Décisionnels

Mohamed Néji
mohamed.neji@enetcom.usf.tn
Objectifs du cours
• Démystifier l’apprentissage automatique et profond.

• Développer votre intuition par rapport aux applications pratiques de


l’apprentissage profond

• Comprendre les concepts de base en apprentissage automatique et


profond

2
Intelligence Artificielle

Machine Learning

Deep Learning

3
b

Nouvelle valeur de diamètre ??

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 1 X1 y1 Valeur de sortie 1

Valeur d’entrée 2 X2
neurone y2 Valeur de sortie 2
.
.
.

Valeur d’entrée m Xm y3 Valeur de sortie p

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

Supposons que y soit binaire (0 ou 1)


20
Fonction d’activation

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

Distance / centre ville (km) X3

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

1000 valeurs/poids 1000*1000*…*1000 = 100025 = 1075 combinaisons

29
Algorithme du Gradient
Calculer 93 PFLOPS : nombre d’opérations flottantes possibles de faire/seconde

Péta : 1015
93 * 1015 opérations/seconde

Combien de temps de 1075 / (93 * 1015)

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

Algorithme du gradient Algorithme du Gradient


par lot 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.

• Le biais est l'erreur provenant d’hypothèses erronées dans l'algorithme d'apprentissage.


Un biais élevé peut être lié à un algorithme qui manque de relations pertinentes entre les
données en entrée et les sorties prévues (sous-apprentissage).
• La variance est l'erreur due à la sensibilité aux petites fluctuations de l’échantillon
d'apprentissage. Une variance élevée peut entraîner un surapprentissage, c'est-à-dire
modéliser le bruit aléatoire des données d'apprentissage plutôt que les sorties prévues.

69
K-Fold Cross Validation

Training Set

Dataset 4ème itération

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

Source : google trends 81


Réseaux de Neurones à convolution

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

Input image Feature detector Feature Map

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

Feature Map Pooled Feature Map

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

Vous aimerez peut-être aussi