Académique Documents
Professionnel Documents
Culture Documents
IA avancé - Part1 (1)
IA avancé - Part1 (1)
IA Avancé
Chapitre2:
CNN-Transfer Learning
RNN
LSTM-GRU
Chapitre 1: Introduction
aux réseaux de neurones
1
Qu’est-ce que l’intelligence
artificielle ?
2
Qu’est-ce que l’intelligence
artificielle ?
3
Historique
✓ 1943: Modélisation de neurones
✓ 1957 : Perceptron (Rosenblatt)
✓ 1960 : Adaline (Widrow, Hoff)
✓ 1969 : Limites Perceptron (Minsky, Papert)
✓ 1986 : Rétropropagation de gradient et MLP (Rumelhart et al.)
✓ 1998 : LeNet (LeCun et al.)
✓ 2010 : Réseau de neurones profonds (Hinton et al.)
✓ 2010 : Alexnet 8 couches (Krizhevsky et al.)
✓ 2014 : GoogleNet 22 couches
✓ 2016 : ResidualNet (Microsoft/Facebook) 152 couches
✓ En 2019, OpenAI a publié plusieurs modelés d’intelligence artificielle très
performantes permettant de générer des textes
✓ 2021: Transformers
✓ Fin 2023: GPT4 vision
4
Rappel
Intelligence Artificielle
IA Machine Learning
Symbolique
Supervisé Non supervisé Par
renforcement
Réseaux de neurones
5
1. L’apprentissage supervisé (classification,
régression)
4. Rétropropagation du gradient
6
1. Supervisé
Phase d’entrainement Phase d’inférence
𝑓
chat
𝑓
?
𝑓
chien
7
Mathématisons ça un peu
ℝ1200×900×3 ⟶ 0,1
𝑓: ቊ
𝑥 ⟼ 𝑓 𝑥 = 𝑦 = 𝑃(𝑥 𝑒𝑠𝑡 𝑢𝑛 𝑐ℎ𝑎𝑡)
8
Classification
Labels: 0, 1, … , 9
ℝ𝑛 ⟶ 0,1 10
𝑃(𝑥 = 0)
𝑓:
𝑥⟼𝑓 𝑥 =𝑦= ⋮
𝑃(𝑥 = 9)
9
Une autre tâche
𝑡 : âge du chat
ℝ1200×900×3 ⟶ ℝ
𝑓: ቊ
𝑥 ⟼ 𝑓 𝑥 = 𝑦 = â𝑔𝑒 𝑑𝑢 𝑐ℎ𝑎𝑡
10
En résumé
Fonction 𝑓 capable
𝑥1 d’approximer la tâche visée 𝑓 𝑥 =𝑦≈𝑡∈ℝ
𝑥 = ⋮ ∈ ℝ𝑛
𝑥𝑛
11
Neurone
Le Neurone biologique (naturel)
12
2. Fonctionnement des réseaux de
neurones
Le neurone
https://www.youtube.com/watch?v=hb7tjqhfDus 13
Neurone
Modélisation simplifiée d’un neurone biologique (McCulloch et
Pitts 1943)
b:bias
Entrée
Sortie
Fonction d’activation/transfert
Connexions
𝑥1 𝑤1
𝑥1 𝑏
𝑥 = 𝑥2 𝑔
𝑥3 𝑤2 𝑧 = 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 𝑥3 + 𝑏 𝑦 = 𝑔(𝑧)
𝑥2
𝑤3
𝑥3 Pré-activation Activation
𝑊 = 𝑤1 𝑤2 𝑤3
𝑥1
𝑦 = 𝑔 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 𝑥3 + 𝑏 = 𝑔( 𝑤1 𝑤2 𝑤3 𝑥2 + 𝑏) = 𝑔(𝑊. 𝑥 + 𝑏)
𝑥3
16
Couche de neurones
𝑔(𝑊1 . 𝑥 + 𝑏1 )
𝑥1 𝑁1 𝑦1 𝑏1
𝐵 = 𝑏2
𝑥1 𝑔(𝑊2 . 𝑥 + 𝑏2 ) 𝑏3
𝑥 = 𝑥2 𝑥2 𝑁2 𝑦2
𝑥3 𝑦1
𝑦 = 𝑦2
𝑔(𝑊3 . 𝑥 + 𝑏3 ) 𝑦3
𝑥3 𝑁3 𝑦3
𝑦1 𝑊1 . 𝑥 + 𝑏1 𝑊1 𝑏1
𝑦 = 𝑦2 = 𝑔 𝑊2 . 𝑥 + 𝑏2 = 𝑔 𝑊2 . 𝑥 + 𝑏2 = 𝑔(𝑊. 𝑥 + 𝐵)
𝑦3 𝑊3 . 𝑥 + 𝑏3 𝑊3 𝑏3
17
Enfin : le réseau de neurones
𝑥1
𝑥 = 𝑥2 𝑦
𝑥3
𝑊 (4) , 𝐵 (4) , 𝑔(4)
𝑊 (3) , 𝐵 (3) , 𝑔(3)
𝑊 (1) , 𝐵 (1) , 𝑔(1)
𝑊 (2) , 𝐵 (2) , 𝑔(2)
𝑦 = 𝑔(4) 𝐵 (4) + 𝑊 (4) 𝑔(3) 𝐵 (3) + 𝑊 (3) 𝑔(2) 𝐵 (2) + 𝑊 (2) 𝑔(1) (𝐵 (1) + 𝑊 (1) 𝑥)
18
Mais pourquoi l’activation ?
𝑥1
𝑥 = 𝑥2 𝑦 = 𝑔(2) 𝐵 (2) + 𝑊 (2) 𝑔(1) (𝐵 (1) + 𝑊 (1) 𝑥)
𝑥3
𝑊 (2) , 𝐵 (2) , 𝑔(2)
Retirons les activations : 𝑦 = 𝐵 (2) + 𝑊 (2) (𝐵 (1) + 𝑊 (1) 𝑥)= (𝐵 2 +𝑊 2 𝐵 1 ) + 𝑊 (2) 𝑊 (1) 𝑥
19
Parlons de l’activation 𝑔
•Fonction d'activation linéaire: y=f(x)=x
•Fonction d'activation sigmoïde 𝑅𝑒𝐿𝑈 𝑥 = max(0, 𝑥)
•Tangente hyperbolique
𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑥
•Rectified Linear Unit Activation Function 1
(ReLU) =
1 + 𝑒 −𝑥
•Leaky ReLU
•ReLU paramétrique
•Unité exponentielle linéaire (ELU)
• Softmax
1−𝑒 −2𝑥
tanh 𝑥 = 1+𝑒 −2𝑥
https://lucidar.me/fr/neural-networks/most-popular-activation-functions-for-deep-learning/
20
Réseau multicouche FeedForward
21
Apprentissage
objectifs
Réseau de
Entrées Sorties Tests
neurones
Ajuster les
poids
22
Apprentissage
23
Apprentissage
24
Apprentissage
25
Apprentissage
26
Apprentissage
27
Apprentissage
28
Apprentissage
29
Apprentissage
30
Apprentissage
31
Apprentissage
32
Apprentissage
33
Apprentissage
✓Ajouter erreurs.
34
Apprentissage
35
Apprentissage
✓Modifier les poids
36
Application: Apprentissage de la fonction AND (ET logique)
X1 X2 Y
0 0 0
0 1 0
1 0 0 -0.5 0 0.5 1
1 1 1
Données Représentation graphique dans le plan
Principales étapes :
1. Mélanger aléatoirement les observations
2. Initialiser aléatoirement les poids synaptiques
3. Faire passer les observations unes à unes
• Calculer l’erreur de prédiction pour l’observation
• Mettre à jour les poids synaptiques
4. Jusqu’à convergence du processus
37
Application: Apprentissage de la fonction AND (ET logique)
avec
Nouvelle frontière :
0.0+ 0.2 X 1 + 0.05 X 2 = 0 ⇔ X2 = −4.0 X 1 +0.0
Valeur observée de Y et
Signal nul (x1 = 0, x2 = 0), seule
prédiction ne matchent
pas, une correction des la constante a0 est corrigée.
coefficients sera
effectuée.
Perceptron Monochouche
39
Application: Apprentissage de la fonction AND (ET logique)
Nouvelle frontière :
- 0.1 + 0.1 X 1 + 0.05 X 2 = 0 ⇔ X2 = −2.0 X 1 +2.0
Perceptron Monochouche
40
Application: Apprentissage de la fonction AND (ET logique)
X0=1
Appliquer le modèle a0= 0.1 (0)1 = 0
a1= 0.1 (0)0 = 0
a2= 0.1 (0)1 = 0
X1=0 -0.11+ 0.1 0 + 0.05 1 = -0.05
X2=1
yˆ = 0
Y=0
frontière inchangée :
Convergence ?
- 0.1 + 0.1 X 1 + 0.05 X 2 = 0 ⇔ X2 = −2.0 X 1 +2.0
41
Réseaux de neurones
❑ Avantages:
✓ Apprentissage automatique des poids
✓ Capacité de généralisation
✓ Traitement de problème variés et complexes, y compris non linéaires
✓ Peu sensible au bruit ou au manque de fiabilité des données
✓ Bonne performance
❑ Inconvénients:
✓ Représentation complexe
✓ Paramètres difficiles à interpréter physiquement (boite noire)
✓ Converge à des minimums locaux (cas de retro-propagation du gradient)
✓ Risque de sur-apprentissage
✓ Choix des paramètres initiaux
42
Limites des réseaux de neurones
Plus le problème est complexe →Coûteux
Temps de calcul
• Étant donné que chaque entrée doit être connectée à tous les neurones de la
couche suivante, le nombre de poids peut très rapidement devenir considérable.
• Par exemple, avec 784 entrées, 15 neurones cachés et 10 sorties nous devons
garder en mémoire 11910 poids, sans compter les biais :
784∗15+15∗10=11910
• En revanche, avec une image de 224 pixels par 224 pixels avec 3 canaux
(rouge, vert et bleu), ce nombre devient très grand. Imaginons un réseau avec
150 528 entrées (224 * 224 * 3) liées à une couche cachée de 1000 neurones.
Ensuite nous devons multiplier ce nombre de poids par le nombre de sorties.
Imaginons un réseau avec 10 sorties : 150 528 ∗ 1000+ 10 *1000=150 538 000
43
Motivations pour les architectures
profondes
45
Apprentissage profond
Principe
Feature voiture
Extraction des Oiseau
Extraction,
caractéristiques
Machine
Manuellement
Learning
Avion
✓ Approche traditionnelle
voiture oiseau
avion
Deep Neural
Réseau Network
de neurones profond
48
Apprentissage profond
Approche 1
Apprentissage du réseau profond à partir de zéro
Classifieur linéaire
Extraction de
caractéristiques
Voiture
Camion
Bicyclette
Ensemble de
données
Réseau de Neurones Convolutif
(CNN)
49
Apprentissage profond
Approche 2
Raffiner un modèle pré-entraîné
Transfer Learning
50
Problème avec l'algorithme de rétro-
propagation
✓ Besoin de données étiquetés .
<>Presque toutes les données ne sont pas étiquetées.
51
4
Hyperparamètres des réseaux neurones et optimisation
random_state=42
52
4
Hyperparamètres des réseaux neurones et optimisation
extcnnmodel.summary()
Classification? . . . . . . . . . . . . . . . . . .
Régression? . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4
Hyperparamètres des réseaux neurones et optimisation
54
4
Hyperparamètres des réseaux neurones et optimisation
Optimizers pour deep learning
Un algorithme d'optimisation trouve la valeur des paramètres (poids) qui minimisent
l'erreur lors du mappage des entrées aux sorties. Cet article vous dira tout sur ces
algorithmes d'optimisation ou optimiseurs en apprentissage profond. Comprendre les
principes mathématiques derrière les optimiseurs, tels que la descente de gradient et
le taux d'apprentissage. Cependant, le choix du meilleur optimiseur dépend de
l'application
55
4
Hyperparamètres des réseaux neurones et optimisation
Before proceeding, there are a few terms that you should be familiar with.
•Epoch – The number of times the algorithm runs on the whole training dataset.
•Sample – A single row of a dataset.
•Batch – It denotes the number of samples to be taken to for updating the
model parameters.
•Learning rate – It is a parameter that provides the model a scale of how much
model weights should be updated.
•Cost Function/Loss Function – A cost function is used to calculate the cost,
which is the difference between the predicted value and the actual value.
•Weights/ Bias – The learnable parameters in a model that controls the signal
between two neurons.
56
4
Hyperparamètres des réseaux neurones et optimisation
important Deep Learning Terms
By setting verbose 0, 1 or 2 you just say how do you want to 'see' the training
progress for each epoch.
Verbose=0 (silent)
57
4
Hyperparamètres des réseaux neurones et optimisation
Output:
[[1 1 1]
[3 3 3]
[0 0 0]
[2 2 2]
[4 4 4]]
[1 3 0 2 4]
58
4
Hyperparamètres des réseaux neurones et optimisation
Sur-apprentissage et sous-apprentissage
▪ La phase d’apprentissage, de validation, de test du réseau de neurones à convolution
reste très similaire à celui du réseau de neurones classique MLP, et les poids sont adaptés
à chaque itération également.
▪ Cependant, d’autres techniques de test du sur-apprentissage (overfitting) ou sous-
apprentissage (under fitting) peuvent être appliquées.
59
Les réseaux de neurones
convolutionnels: CNN
60
Introduction
✓ Utiliser pour l'apprentissage profond.
✓ Reconnaître des objets et des scènes
✓ Détecter et segmenter d'objets.
✓ Apprendre directement à partir des données brutes
→Pas d'extraction manuellement les caractéristiques
→Apprentissage directe des caractéristiques
→Ré-apprentissage simple pour de nouvelles objets à reconnaître
→ Ré-utilisation des réseaux existants
61
Introduction
✓ Composer de dizaines ou des centaines de couches
✓ Appliquer de filtres sur les objets d‘apprentissage à différentes
résolutions
→ La sortie de chaque filtre est utilisée comme entrée pour les couches
suivantes.
→ Les filtres peuvent extraire des caractéristiques très simples, comme
la luminosité et les bords
→ Puis on augmente la complexité d’extraction des caractéristiques qui
définissent de façon unique l'objet au fur et à mesure que les
couches progressent.
62
Architecture
63
Comment
✓ Les premiers filtres détectent les caractéristiques simples (trait,
courbe…).
✓ Les filtres suivants détectent des caractéristiques plus complexes
(oeil, bec, poiles …)
→ En combinant les caractéristiques simples détectées par les premiers
filtres de convolution
✓ Les couches de pooling compressent l’information en réduisant la
taille de l’image intermédiaire et ainsi d’élargir le champ de vision du
réseau.
64
Architecture
https://www.analyticsvidhya.com/blog/2021/0
6/image-classification-using-convolutional-
neural-network-with-python/
65
Convolution
Supposons qu’on a une image de dimension 32x32x3 (3 canaux R,G,B).
66
Convolution
✓ Une couche de convolution correspond à un filtre balayant l’image.
✓ En sortie on obtient une “image” appelée une “activation map”.
✓ En général, on applique un ensemble de k filtres.
67
Convolution
Paramètres de la couche de convolution
68
Convolution
69
Stride et Padding
Stride configure la distance de déplacement de la fenêtre du filtre coulissant par application de la fonction de filtre.
Padding permet de contrôler la taille spatiale des volumes de sortie. On peut l’appliquer pour les cas où on veut
maintenir la taille spatiale du volume d'entrée dans le volume de sortie.
Processus de
convolution avec un
padding de 1
Convolution avec
stride de 2 et zero
padding de 1
70
Stride et Padding
71
Filtre
Accentuer
72
Filtre
Filtre moyenneur
73
Filtre
Détection de contour
74
Filtre
Effets d’application de filtres : Pour expliquer comment un filtre peut trouver des
parties intéressantes dans les images
-1 -1 -1
-1 8 -1
-1 -1 -1
-1 -2 -1
0 0 0
1 2 1
75
ReLu
76
Pooling
77
Pooling
• Apprend des combinaisons non linéaires des caractéristiques pour créer des
prédicats
79
Softmax
• En théorie des probabilités, la sortie de la fonction Softmax
peut être utilisée pour représenter une distribution
catégorique, c'est-à-dire une distribution de probabilité sur K
différents résultats possibles. En fait, c'est le gradient-log-
normalisateur de la distribution de probabilité catégorique.
80
Couche de Normalisation
(Optionnelle)
81
Couche de Normalisation
(Optionnelle)
✓ La descente de gradient peut réduire les oscillations prés des
minimas locaux
✓ Réduit l'impact des couches antérieures sur les couches
ultérieures du réseau neuronal profond.
✓ Rend les couches indépendantes l'une de l'autre. Par
conséquent, les convergences doivent devenir plus rapides.
is a method used to make training
of artificial neural networks faster
and more stable through
normalization of the layers' inputs
by re-centering and re-scaling. It
was proposed by Sergey Ioffe and
Christian Szegedy in 2015.
82
Dropout (Optionnelle)
• Désactiver aléatoirement certains neurones sur la passe avant
• Empêche le débordement
84
Exemple réel
85
Exemple réel
• LeNet – C’est la première architecture réussie des réseaux convolutifs. Elle a été développé par Yann LeCun en
1990 et elle était utilisé pour lire des codes postaux, des chiffres simples, etc.
• Average pooling
• Sigmoid or tanh nonlinearity
• Fully connected layers at the end
• Trained on MNIST digit dataset with
60K training examples
86
Exemple réel
• AlexNet – C’est le réseau qui a été présenté dans le défi de l’ImageNet en 2012. C'est en fait le
réseau qui a popularisé les réseaux Convolutional, car il a de loin surpassé tous les autres
concurrents. Il a été développé par Alex Krizhevsky, Ilya Sutskever, et Geoff Hinton.
87
Exemple réel
• GoogLeNet – Le vainqueur de l'ILSVRC 2014 était un réseau convolutif de Google. Ils ont utilisé des couches de
mise en commun moyennes pour réduire considérablement le nombre de paramètres dans le réseau. Il y a
plusieurs versions de suivi au GoogLeNet.
88
Exemple réel
• VGGNet – Réseau de neurones convolutionnels de Karen Simonyan et Andrew Zisserman qui est
devenu connu sous le nom de VGGNet. Ce réseau a prouvé que la profondeur du réseau qui est
essentiel pour de bonnes performances. Il a 16 couches convolutives.
89
Exemple réel
• ResNet – Développé par Kaiming He et al. était le gagnant de ILSVRC 2015.
90
Les domaines d’applications
91
Les domaines d’applications
92
Apprentissage par transfert
(Transfer Learning)
93
L’apprentissage par transfert
Point de vue psychologique
• C++ → Java
• Maths/Physics → Computer Science/Economics
94
L’apprentissage par transfert
Dans la communauté d'apprentissage automatique
• Dans le cas d'une tâche cible, comment identifier les points communs
entre les tâches destinations et les tâches (sources) précédentes et
transférer les connaissances des tâches précédentes vers la tâche cible
95
C’est quoi l’apprentissage par transfert?
ML traditionnel
96
C’est quoi l’apprentissage par transfert?
L’apprentissage par transfert
97
C’est quoi l’apprentissage par transfert?
L’apprentissage par transfert
• Transfert de l'apprentissage
✓ Il s'agit de projeter tous les nouveaux entrées au moyen d'un modèle pré-entrainé.
Comme si nous avons une fonction de modèle pré-entraînée f() et souhaitons
apprendre une nouvelle fonction g(), nous pouvons simplifier g() par g(f(x)). De
cette façon, g() voit toutes les données à travers f().
✓ Nous pouvons également affiner f() pendant le processus d'apprentissage.
• Le processus d'apprentissage lui-même peut être qualifié de simple réglage fin →
le processus de mise à jour fait de très petits pas dans la direction opposée du
gradient.
✓ Le réglage fin est normalement réservé à l'étape finale qui consiste à fixer un taux
d'apprentissage très bas afin d'ajuster finement les poids.
✓ En fait, vous pouvez diviser la phase d'apprentissage en plusieurs phases de
réglage fin, chacune avec un rythme d'apprentissage plus faible que la dernière.
98
Pourquoi l’apprentissage par transfert maintenant?
99
Pourquoi l’apprentissage par transfert maintenant?
Différent succès de la ML dans l'industrie
Selon Andrew Ng, l'apprentissage par transfert deviendra un facteur clé du succès de
Machine Learning dans l'industrie.
100
Pourquoi l’apprentissage par transfert maintenant?
101
Apprentissage en profondeur dans l'apprentissage par
transfert
102
Apprentissage en profondeur vs Fine-tuning
103
Applications de l'apprentissage par transfert
Apprendre à partir des simulations
L'apprentissage à partir de simulations a l'avantage de rendre la collecte de données facile que les objets
peuvent être facilement bornés et analysés, tout en permettant simultanément une formation rapide, que
l'apprentissage peut être parallélisé dans plusieurs instances.
104
L’apprentissage par transfert en pratique
Adaptation aux nouveaux domaines
105
Méthodes d'apprentissage par transfert
Using pre-trained CNN features
106
Apprentissage par transfert avec CNN
107
Apprentissage par transfert avec CNN
108
Apprentissage pa transfert avec CNN
1. Entrainer sur Imagenet 2. Petite base de données 2. Grande base de données
109
Apprentissage pa transfert avec CNN
Base de Base de
données très données très
similaire différente
Très peu de
données
? ?
beaucoup de
données
? ?
110
Apprentissage pa transfert avec CNN
Base de
Base de données
données très
très similaire
différente
Utiliser un classifieur
Très peu de
linéaire sur la couche ?
données supérieure
111
Apprentissage pa transfert avec CNN
Base de Base de
données très données très
similaire différente
Vous êtes en
difficulté ...
Utiliser un
Essayez un
Très peu de classifieur linéaire
classifieur
données sur la couche
linéaire à partir
supérieure
de différentes
étapes
FineTune un
beaucoup FineTune quelques
grand nombre de
de données couches
couches
112
What if the world was just one big sequence ?
RNN
LSTM
...
113
From classic to recurrentneuron
Classical neuron.
114
From classicto recurrent neuron
Classical neuron.
Recurrent neuron.
Where :
wy : is a scalar
Wx : is a vector
b : is a scalar
y : is a scalar
115
Simplereccurent neuron
Recurrent neuron.
Where :
wy : is a scalar
Wx : is a vector
b : is a scalar
y : is a scalar
116
Simplereccurent neuron
Recurrent neuron.
Where :
wy : is a scalar
Wx : is a vector
b : is a scalar
y : is a scalar
117
Recurrent Layer /Cell
118
Recurrent Layer /Cell
Where :
Wy : is a tensor
Wx : is a tensor
b : is a vector
Y : is a vector
119
RecurrentLayer /Cell
Where :
Wy : is a tensor
Wx : is a tensor
b : is a vector
Y : is a vector
120
Recurrent Layer /Cell
Wx shape is : (nb units, x size)
Wy shape is : (nb units, nb units)
y shape is : (nb units,)
121
SimpleRNN limits..
But….
... ...
122
Long Short-Term Memory (LSTM)
Long term
state
Short term
state
123
Long Short-Term Memory (LSTM)
lstm = tf.keras.layers.LSTM(16)
output = lstm(inputs)
Serie to vector
Inputs shape is : (32, 20, 8)
Output shape is : (32, 16)
124
Reccurent Neural Network (RNN)
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://www.pycodemates.com/2023/08/recurrent-neural-networks-explained.html
125
How to predicta sequence?
Serie to vector :
The objective will be to train our
RNN network to predict the n+1
vector of our input sequence :
126