Vous êtes sur la page 1sur 128

REPUBLIQUE TUNISIENNE

ECOLE SUPERIEURE PRIVEE D’INGENIEURS DE MONASTIR

IA Avancé

Préparé par : Mr Sahbi CHAIBI


AU: 2023/2024
Plan du cours
Chapitre3: IA generative
Auto-encoders
Chapitre 1:Introduction Reseaux GAN
aux réseaux de neurones
Chapitre 4: Object
4 Detection

Chapitre2:
CNN-Transfer Learning
RNN
LSTM-GRU
Chapitre 1: Introduction
aux réseaux de neurones

1
Qu’est-ce que l’intelligence
artificielle ?

✓ Est-ce la capacité à percevoir le monde ?


✓ A prédire le futur immédiat ou lointain ?
✓ A planifier une série d’actions pour atteindre un
but ?
✓ A appliquer son savoir ?

2
Qu’est-ce que l’intelligence
artificielle ?

"On pourrait dire que l’intelligence [artificielle (IA)] est un


ensemble de techniques permettant à des machines
d’accomplir des tâches et de résoudre des problèmes
normalement réservés aux humains et à certains
animaux"
Yann Lecun

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)

2. Fonctionnement des réseaux de neurones

3. Apprentissage des réseaux de neurones

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 = ℝ3 240 000

𝑡 = True = 1 si chat, 0 si chien

ℝ1200×900×3 ⟶ 0,1
𝑓: ቊ
𝑥 ⟼ 𝑓 𝑥 = 𝑦 = 𝑃(𝑥 𝑒𝑠𝑡 𝑢𝑛 𝑐ℎ𝑎𝑡)

C’est une tâche de classification

8
Classification

Labels: 0, 1, … , 9

ℝ𝑛 ⟶ 0,1 10
𝑃(𝑥 = 0)
𝑓:
𝑥⟼𝑓 𝑥 =𝑦= ⋮
𝑃(𝑥 = 9)

9
Une autre tâche

𝑥 ∈ ℝ1200×900×3 = ℝ3 240 000

𝑡 : âge du chat

ℝ1200×900×3 ⟶ ℝ
𝑓: ቊ
𝑥 ⟼ 𝑓 𝑥 = 𝑦 = â𝑔𝑒 𝑑𝑢 𝑐ℎ𝑎𝑡

C’est une tâche de régression

10
En résumé

Fonction 𝑓 capable
𝑥1 d’approximer la tâche visée 𝑓 𝑥 =𝑦≈𝑡∈ℝ
𝑥 = ⋮ ∈ ℝ𝑛
𝑥𝑛

Ce sont les réseaux de neurones qui vont réaliser cette


tâche

11
Neurone
Le Neurone biologique (naturel)

Neurone biologique possède trois principales


composantes : les dendrites, le corps cellulaire et
l’axone.

• Nombre de neurones dans le


cerveau: ~ 100 milliards
• Nombre de connexions par neurone:
~ 1000 à 100 000 par neurone

• 1014 à 1017 connexions

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

Poids d’une connexion


14
Perceptron|Adaline

1. Perceptron: Etiquettes de classe pour apprendre.


2. Adaline: Valeurs prédites continues pour apprendre
15
Le neurone artificiel
𝑥1
𝑥 = ⋮ ∈ ℝ𝑛 Fonction 𝑓 𝑦 ∈ ℝ𝑚
𝑥𝑛

𝑥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)

𝑊 (1) , 𝐵 (1) , 𝑔(1)

Retirons les activations : 𝑦 = 𝐵 (2) + 𝑊 (2) (𝐵 (1) + 𝑊 (1) 𝑥)= (𝐵 2 +𝑊 2 𝐵 1 ) + 𝑊 (2) 𝑊 (1) 𝑥

𝑦 = 𝐵′ + 𝑊′𝑥 : c’est comme s’il n’y avait qu’un neurone

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

En intelligence artificielle, plus précisément en apprentissage


automatique, la rétropropagation du gradient est une méthode pour
entraîner un réseau de neurones. Elle consiste à mettre à jour les
poids de chaque neurone de la dernière couche vers la première.

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)

Initialisation aléatoire des poids a0 = 0.1; a1 = 0.2; a2 = 0.05

Frontière : 0.1 + 0.2 X 1 + 0.05 X 2 = 0 ⇔ X2 = −4.0 X 1 − 2.0

Règle de mise à jour des poids


Pour chaque individu que l’on fait passer (Principe de l’incrémentalité)

avec

Détermine s’il faut réagir


(corriger) ou non?
Taux d’apprentissage
Détermine l’amplitude de l’apprentissage
Quelle est la bonne valeur ?
Ces éléments sont au cœur du mécanisme
Trop petit: lenteur de convergence
Trop grand: Oscillation
d’apprentissage
En général autour de 0.05 ~ 0.15 (0.1 dans notre exemple) 38
Application: Apprentissage de la fonction AND (ET logique)

Observation à traiter Appliquer le modèle Màj des poids


X0=1
a0= 0.1 (-1)1 = -0.1
a1= 0.1 (-1)0 = 0
X1=0 0.11+ 0.2 0 + 0.05 0 = 0.1
X2=0 yˆ = 1 a2= 0.1 (-1)0 = 0
Y=0

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)

Màj des poids


Observation à traiter Appliquer le modèle
X0=1 a0= 0.1 (-1)1 = - 0.1
a1= 0.1 (-1)1 = - 0.1
a2= 0.1 (-1)0 = 0
X1=1 0.01+ 0.2 1 + 0.05 0 = 0.2
X2=0 yˆ = 1
Y=0

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)

Observation à traiter Màj des poids

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.11+ 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

(1)Plus aucune correction effectuée


(2)L’erreur globale ne diminue plus «
significativement »
(3)Les poids sont stables
(4)On fixe un nombre maximum d’itérations
(5)On fixe une erreur minimale à atteindre

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

Réduction de nombres de paramètres avec Deep-Learning

43
Motivations pour les architectures
profondes

Processus cognitifs profonds


✓ capacité d'apprendre à
représenter le monde de
manière hiérarchique.
✓ nul besoin de construire un
extracteur de caractéristiques à
la main
✓ Capacité à résoudre des
problèmes compliqués
✓ Le réseau neuronal profond est
inspiré du cerveau humain
44
Limites des architectures profondes
Le DL est un outil puissant mais il présente certaines limitations :

▪ Il exige généralement de grands ensembles de données.

▪ Interprétabilité : il est difficile, voire impossible dans certains cas, de


savoir comment un réseau neuronal développe ses prédictions

▪ Le processus d’apprentissage dans le Deep Learning prend beaucoup


de temps d'exécution par rapport aux techniques de ML

45
Apprentissage profond
Principe

Feature voiture
Extraction des Oiseau
Extraction,
caractéristiques
Machine
Manuellement
Learning
Avion

✓ Approche traditionnelle

✓Nécessite des experts du domaine


✓Prend du temps
✓Probabilité d’erreur élevé
✓Non évolutif aux nouveaux problèmes
46
Apprentissage profond
Principe

voiture oiseau

avion

Deep Neural
Réseau Network
de neurones profond

Approche d'apprentissage en profondeur

✓Apprendre des données


✓Facile à étendre
✓Efficace et évolutif
47
Architecture peu profonde vs
Architecture profonde
❑ Architectures profondes plus efficaces que les architectures
peu profondes. [Roux and Bengio, 2010]

→ Architecture peu profonde ne peut pas atteindre les caractéristiques de haut


niveau [Bengio, 2009]

❑ Modélisation des données dépend du nombre d'échantillons


d’apprentissage

→Architectures superficielles présente un mauvais modèles de modélisation.


[Bengio, 2009]

➢ Les modèles d'architecture profonde ont tendance à vaincre


les modèles peu profonds. [Larochelle et al, 2007]

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é

Extraction de Nouveau Chien


Classifieur
classifieur
caractéristiques linaire Chat
liniaire

Quantité faible de (CNN


CNN chien/chat
véhicule)
données

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.

✓ Evolution exponentiel du temps d'apprentissage


<>Il est très lent dans les réseaux à plusieurs couches cachées.

✓ Problème avec des optimums locaux.


<>Elles sont souvent assez bonnes, mais pour les filets
profonds, elles sont loin d'être optimales.

51
4
Hyperparamètres des réseaux neurones et optimisation

Apprentissage et Test Data


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42 )
X_test, X_val, y_test, y_val = train_test_split(X_test, y_test, test_size=0.5, random_state=42 )

random_state=42

to produce the same results


across a different run or after
reuse the train_test_split.

52
4
Hyperparamètres des réseaux neurones et optimisation

Training et Test phases

model.compile( optimizer=RMSprop, loss = 'sparse_categorical_crossentropy’,


metrics = ['accuracy’])

extcnnmodel.summary()

print("Fit model on training data")


model.fit( train_images, train_labels,validation_data=(test_images,test_labels),
batch_size=30,epochs=50, verbose=1)

Classification? . . . . . . . . . . . . . . . . . .

Régression? . . . . . . . . . . . . . . . . . . . . . . . . . . .

53
4
Hyperparamètres des réseaux neurones et optimisation

Training et validation phases: Overfitting et Overfiting

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

Important Deep Learning Terms

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)

Verbose=1 (progress bar)

57
4
Hyperparamètres des réseaux neurones et optimisation

How to randomly shuffle data and target in python?

from sklearn.utils import shuffle


import numpy as np
X = np.array([ [0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4] ])
y = np.array([0, 1, 2, 3, 4])
X, y = shuffle(X, y)
print(X)
print(y)

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

• Profondeur de la couche : nombre de noyaux de


La
convolution (ou nombre de neurones associés à un
Profondeur même champ récepteur)
• Le pas contrôle le chevauchement des champs
récepteurs. Plus le pas est petit, plus les champs
Le Pas récepteurs se chevauchent et plus le volume de sortie
sera grand.
• La marge (à 0) ou zero padding : parfois, il est
commode de mettre des zéros à la frontière du volume
La Marge d'entrée. Cette marge permet de contrôler la dimension
spatiale du volume de sortie.

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

Convolution avec stride


de 2 et sans zero padding

70
Stride et Padding

model.add(Conv2D(32, (3, 3), padding="same", activation="relu"))


model.add(MaxPooling2D(pool_size=(2, 2)))
...
model.add(Conv2D(64, (3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
...
model.add(Conv2D(128, (3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
...
model.add(Activation("softmax"))

model.add(Conv2D(128, (3, 3), strides=(1, 1), activation="relu"))


model.add(Conv2D(128, (3, 3), strides=(1, 1), activation="relu"))
model.add(Conv2D(128, (3, 3), strides=(2, 2), activation="relu"))

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

✓ Réduire la taille d’une image


✓ Pallier le phénomène d’ "overfitting".
→ Tout comme pour la convolution, on applique
un filtre qu’on fait glisser sur l’image

77
Pooling

MaxPooling2D((2,2), strides=(2,2), padding='same’) ?


AveragePooling2D((2,2), strides=(2,2), padding='same’) ?
78
Couches entièrement connectées
• Chaque neurone est connecté à toutes les entrées

• Réseau neuronal multicouche standard

• 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

Réseau de neurones standard Après l'application de Dropout

▪ you use dropout to avoid overfitting.


83
Exemple

84
Exemple réel

Alexnet Architecture - 2012

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.

• Similar framework to LeNet but:


o Max pooling, ReLU nonlinearity
o More data and bigger model (7
hidden layers, 650K units, 60M
params)
o GPU implementation (50x speedup
over CPU)
o Trained on two GPUs for a week
o Dropout regularization

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

• L'étude de la dépendance de la conduite humaine, l'apprentissage sur


l'expérience antérieure.

• [Thorndike and Woodworth, 1901] a exploré la façon dont les individus


seraient transférés d’un contexte à un autre partageant des caractéristiques
similaires.

• C++ → Java
• Maths/Physics → Computer Science/Economics

94
L’apprentissage par transfert
Dans la communauté d'apprentissage automatique

• L’application des connaissances et des compétences acquises lors des


tâches précédentes à des nouvelles tâches ou à de nouveaux domaines,
qui partagent certaines caractéristiques communes.

• 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

Nous disposons de données étiquetées pour


la même tâche et le même domaine.

✓Former un modèle A sur l’ensemble 1


→Est-ce qu’il fonctionne sur des données non vues de la même tâche et du même domaine?
✓Lorsque nous recevons des données pour une autre tâche ou un autre domaine B
→Préparer de nouveaux étiquetées de la même tâche ou du même domaine pour former un
nouveau modèle B

96
C’est quoi l’apprentissage par transfert?
L’apprentissage par transfert

Stocker ces connaissances acquises de la


résolution de la tâche source dans le domaine
source et de l'appliquer à notre problème
d'intérêt

En pratique, nous cherchons à transférer autant de connaissances que possible du paramètre


source vers notre tâche ou domaine cible. Cette connaissance peut prendre différentes formes
selon les données: elle peut concerner la façon dont les objets sont composés pour nous
permettre d'identifier plus facilement les objets nouveaux

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?

Andrew Ng, directeur scientifique à Baidu et professeur à Stanford, a déclaré au cours de


son tutoriel dans NIPS 2016 que l'apprentissag en par transfert sera - après
l'apprentissage supervisé - le prochain pilote du succès commercial de la ML.

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?

1. Apprendre d’une manière très précise la cartographie d'entrée-sortie

2. La maturité des modèles de ML


• Vision par ordinateur (erreur de 5% sur ImageNet)
• Reconnaissance vocale Automatique (3x plus rapide que la frappe, 20% plus précis)

3. Déploiement et adoption à grande échelle de modèles de ML


• Le système NMT de Google

Dépendance énorme sur les données marquées

Nouvelles tâches / domaines sans données (étiquetées)

101
Apprentissage en profondeur dans l'apprentissage par
transfert

Perspective de l’apprentissage par Perspective de l’apprentissage en


transfert: profondeur:
Pourquoi avoir besoin de Pourquoi avoir besoin de
l’apprentissage en profondeur ? l’apprentissage par transfert?
• Les réseaux neuronaux profonds • L'apprentissage par transfert allège
apprennent des représentations non l'incapacité d'apprendre sur un
linéaires ensemble de données qui peut ne
• qui sont hiérarchiques; pas être assez grand pour entraîner
• cela distingue différents facteurs un réseau neuronal profond à partir
explicatifs de la variation derrière de rien
les échantillons de données;
• Cela manifeste les facteurs
invariants qui sous-jacent
différentes populations.

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.

• Former un nouveau modèle sur les caractéristiques d’un


grand modèle formé sur ImageNet

• Former un modèle pour confondre les domaines source


et cible

• Former un modèle sur les représentations de domaine


invariant

104
L’apprentissage par transfert en pratique
Adaptation aux nouveaux domaines

Alors que l'apprentissage à partir de simulations est un exemple


particulier d'adaptation de domaine, il vaut la peine de souligner
quelques autres exemples d'adaptation de domaine.

Différents domaines visuels

Différents types de texte / genres Différents sujets

105
Méthodes d'apprentissage par transfert
Using pre-trained CNN features

Afin de motiver la façon la plus courante de transférer l'apprentissage est actuellement


appliquée, nous devons comprendre ce qui explique le succès exceptionnel des grands
réseaux convolutifs de neurones convolutionnels sur ImageNet.

106
Apprentissage par transfert avec CNN

1. Entrainer sur Imagenet

107
Apprentissage par transfert avec CNN

1. Entrainer sur Imagenet 2. Petite base de données

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

beaucoup de FineTune quelques


couches
?
données

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

Recurrent neuron. Recurrent Layer /Cell


Where :
Wy : is a tensor
Wx : is a tensor
b : is a vector
Y : is a vector

118
Recurrent Layer /Cell

Where :
Wy : is a tensor
Wx : is a tensor
b : is a vector
Y : is a vector

Recurrent Layer /Cell

119
RecurrentLayer /Cell

Recurrent Layer /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,)

Recurrent Layer /Cell

121
SimpleRNN limits..

But….

... ...

Slow convergence, In short...


Short memory, it doesn't
Vanishing /exploding gradients work !

122
Long Short-Term Memory (LSTM)

Long term
state

Short term
state

Long short-term memory (LSTM)1


Gated recurrent unit (GRU)2
1
Sepp Hochreiter, Jürgen Schmidhuber, (1997) [LSTM] 2
Kyunghyun Cho et al, (2014) [GRU]

123
Long Short-Term Memory (LSTM)

inputs = tf.random.normal([32, 20, 8])

lstm = tf.keras.layers.LSTM(16)
output = lstm(inputs)
Serie to vector
Inputs shape is : (32, 20, 8)
Output shape is : (32, 16)

lstm = tf.keras.layers.LSTM(18, return_sequences=True, return_state=True)

output, memory_state, carry_state = lstm(inputs)


Serie to serie
Output shape : (32, 20, 18)
Memory state : (32, 18)
Carry (32, 18)

More about : stat


https://keras.io/api/layers/recurrent_layers/lstm/
e :
https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM

124
Reccurent Neural Network (RNN)

Serie to serie Serie to vector


Example :Time serie prediction Example : Sentiment analysis

Vector to serie Encoder-decoder


Example : Image annotation Example : Language Translation

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?

Input X = [ X1, X2, …, Xn ]


Sequence :
Known sequence : [ X1,X2, …, Xn, Xn+1 ]
Expected
output : Y = [ Xn+1 ]

Serie to vector :
The objective will be to train our
RNN network to predict the n+1
vector of our input sequence :

126

Vous aimerez peut-être aussi