Académique Documents
Professionnel Documents
Culture Documents
3 Architecture du réseau 4
4 Apprentissage 5
5 Hyperparamètres 8
7 Sur-apprentissage 10
7.1 Learning rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.2 Algorithme d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
8 Cartes d’activation 15
9 Conclusion 16
10 Bibliography : 16
1
1 Introduction
Dans ce TP nous allons expérimenter les réseaux de neurones convolutifs (CNN) pour la
classication d’images. Pour cela, nous utiliserons l’interface de programmation (API) Keras
1 qui permetde créer très simplement des architectures neuronales, de les entraı̂ner et de les
tester. Pour pouvoir utiliser nos propres machines et leur puissance limitée (notamment en
l’absence de GPU), nous allons travailler sur un nombre adapté de petites images issues de la
base CIFAR10 (Figure 1), et avec des réseaux de petite taille qui ne sont que partiellement
représentatifs des capacités de l’apprentissage profond. L’objectif est principalement de
comprendre la structure des réseaux de convolution, la dynamique de l’apprentissage, et
l’inuence des diérents paramètres sur les performance d’un modèle.
2
Un autre aspect important à aborder concernant les données qui sont fournies au modèle
est l’aspect de la normalisation/standardisation. Cela aide à augmenter l’efficacité des
modèles d’apprentissage machine, en particulier les CNN. En standardisant la plage des
valeurs de pixels à travers les images, la normalisation assure que le modèle ne devient pas
biaisé envers des échelles ou des grandeurs particulières de données d’entrée. Cette stan-
dardisation facilite une convergence plus rapide et plus stable pendant l’entraı̂nement, car
elle empêche les gradients de devenir trop grands ou trop petits, améliorant ainsi la vitesse
d’entraı̂nement et la performance globale. De plus, la normalisation rend le modèle plus ro-
buste et généralisable aux variations de l’éclairage, du contraste et d’autres caractéristiques
photographiques des images.
Dans notre carnet, nous avons utilisé la fonction standardize pour normaliser les
images de cifar 10, elle a suivi les étapes suivantes :
1. Calcul de la Moyenne (img data mean) : La moyenne de chaque canal de couleur
est calculée sur l’ensemble de l’image (hauteur et largeur), réduisant efficacement
chaque image à une moyenne par canal. Cela aide à centrer les données autour de
zéro.
2. Calcul de l’Écart Type (img data std) : L’écart type est également calculé pour
chaque canal de couleur de chaque image. Cela mesure la dispersion des valeurs de
pixels par rapport à la moyenne.
3. Normalisation : Chaque pixel de l’image est normalisé en soustrayant la moyenne et
en divisant par l’écart type. Cette opération est appliquée individuellement à chaque
canal de couleur de chaque image.
La normalisation des entrées est une étape cruciale du prétrait
ement qui bénéficie significativement au processus d’apprentissage de plusieurs manières.
Premièrement, cela peut accélérer la convergence de l’algorithme d’apprentissage en stan-
dardisant les caractéristiques pour être à une échelle comparable. Cet ajustement accélère
non seulement le processus d’apprentissage mais assure également un chemin plus doux
et plus efficace pour atteindre une performance optimale. Deuxièmement, la normalisa-
tion aide à réduire le biais initial au sein du réseau. Elle aborde le problème où certains
poids peuvent influencer de manière disproportionnée le résultat de l’apprentissage, soit
en étant trop grands ou trop petits par rapport aux autres, empêchant ainsi des schémas
d’apprentissage inefficaces. De plus, en mettant les données dans un format standardisé,
la normalisation améliore la performance globale et la stabilité du modèle, en particulier
lorsqu’il s’agit de données non vues. Elle minimise le risque que le modèle suradapte à
l’échelle ou à la distribution des données d’entraı̂nement, rendant ainsi les prédictions plus
fiables et robustes à travers différents ensembles de données. Enfin, dans le contexte des
réseaux neuronaux convolutionnels (CNN) et d’autres cadres d’apprentissage profond, une
entrée normalisée est essentielle pour prévenir la saturation des neurones et assurer que les
gradients restent dans une plage gérable pendant le processus de rétropropagation. Cela est
vital pour l’entraı̂nement efficace des réseaux neuronaux profonds, car cela aide à maintenir
le flux de gradient à travers de nombreuses couches sans diminuer ou exploser, facilitant
ainsi des architectures d’apprentissage plus profondes et plus complexes.
3
3 Architecture du réseau
L’architecture de notre réseau neuronal est définie en utilisant un modèle séquentiel
dans Keras, avec les couches suivantes :
— Couche d’Entrée :
— Forme : p32, 32, 3q - Cela définit la forme d’entrée comme des images de 32 ˆ 32
pixels avec 3 canaux de couleur (RGB).
— Couche de Convolution (Conv2D) :
— Après une couche Conv2D avec padding=’same’, la hauteur et la largeur restent
les mêmes si le pas est de 1. La profondeur devient le nombre de filtres utilisés
dans cette couche.
— Filtres : 8 - Spécifie le nombre de filtres utilisés dans l’opération de convolution.
— Taille du Noyau : p3, 3q - La taille du filtre qui sera utilisé pour convoluer autour
de l’entrée.
— Activation : ReLU (Unité Linéaire Rectifiée) - Introduit une non-linéarité au
modèle, lui permettant d’apprendre des motifs plus complexes.
— Padding : ’same’ - Assure que la sortie de l’opération de convolution a les mêmes
dimensions spatiales que l’entrée.
— Régularisation : L2 avec un coefficient de 0.00 - Implique qu’en pratique, il n’y
a pas d’effet de régularisation.
— Couche d’Abandon (Dropout) :
— Taux : 0.0 - Indique qu’aucune unité n’est abandonnée pendant l’entraı̂nement,
car le taux est zéro.
— Couche de Pooling Maximal (MaxPool2D) :
— Réduit la hauteur et la largeur par la taille du pool (par exemple, un pool de
2x2 réduit de moitié la hauteur et la largeur).
— Taille du Pool : p2, 2q - Détermine la taille de la fenêtre pour l’opération de
pooling, qui est de 2 ˆ 2 pixels dans ce cas.
— Couche de Mise à Plat (Flatten) :
— convertit l’intégralité de la carte des caractéristiques 3D en un vecteur 1D, donc
sa taille est le produit de la hauteur, de la largeur et de la profondeur de la sortie
de la couche précédente.
— Cette couche sert à aplatir les cartes des caractéristiques en une seule dimension.
— Couches Denses :
— les couches n’ont pas de hauteur ni de largeur ; ce sont des couches entièrement
connectées où la ’profondeur’ est le nombre de neurones dans la couche.
— Première Couche Dense : 64 unités avec activation ReLU et coefficient de régularisation
L2 de 0.00.
4
— Seconde Couche Dense : 10 unités avec activation softmax pour la classification
multiclasse et coefficient de régularisation L2 de 0.00.
En outre, il est important de noter les paramètres entraı̂nables de notre modèle, qui
se réfèrent aux paramètres du réseau qui peuvent être ajustés par l’apprentissage pendant
l’entraı̂nement de notre modèle, cela inclut les poids et les biais des couches du réseau.
Dans notre réseau, nous avons 2 types de couches qui ont des paramètres entraı̂nables les
couches Denses et les couches de Convolution. Ils sont calculés comme suit :
— Couches de Convolution : ppm ˆ n ˆ dq ` 1q ˚ kq, qui peut être écrit
comme : ((forme de la largeur du filtre * forme de la hauteur du filtre * nombre de
filtres dans la couche précédente+1)*nombre de filtres)
— Couches Denses : ppc˚pq`1˚cq, qui peut être écrit comme : ((neurones de la couche
actuelle * neurones de la couche précédente)+1*neurones de la couche actuelle)
Dans notre cas, la couche de sortie utilise souvent une fonction d’activation softmax,
qui code les probabilités des classes. La fonction softmax convertit les valeurs brutes des
neurones de sortie en probabilités qui se somment à un, chaque neurone représentant la
probabilité que l’entrée appartienne à une classe particulière. Le nombre de neurones dans
la couche de sortie correspond au nombre de classes dans la tâche de classification. Pour
un problème avec 10 classes, vous auriez une couche de sortie avec 10 neurones, chacun
représentant la probabilité d’une classe.
4 Apprentissage
Dans l’aspect apprentissage de notre tâche, il y a 3 notions fondamentales pour ce
processus, elles sont :
— Époque : Un passage complet à travers l’ensemble des données d’entraı̂nement.
Nécessite de nombreuses époques pour une convergence optimale.
— Étape : Un passage à travers un lot de l’ensemble des données d’entraı̂nement,
contribuant à une époque.
— Lot : Un sous-ensemble des données d’entraı̂nement pour une mise à jour des pa-
ramètres du modèle.
Nous voulons maintenant analyser comment la modification de la taille du ’batchsize’
affecte le processus d’apprentissage. Au début, nous l’avons utilisé égal à 32, et nous l’avons
également utilisé à 16 et 64, comme moyen de voir la manière dont cela affecte le processus
d’apprentissage. Lorsque nous avons augmenté le batchsize, nous avons trouvé que cela
accélérait le temps de calcul d’une étape mais n’avons pas vraiment remarqué d’influence sur
le temps nécessaire pour calculer une époque. Lorsque nous avons augmenté sa taille, nous
avons vu un peu l’opposé. Concernant les courbes d’apprentissage, augmenter le batchsize
fait que le modèle a du mal avec la généralisation, comme le montrent les fluctuations
plus importantes et les performances de validation plus médiocres. La taille de lot plus
5
grande pourrait causer le processus d’optimisation à se stabiliser dans des régions moins
optimales de l’espace des poids. Avec un batchsize plus petit, le modèle semble apprendre
mieux, indiqué par les courbes plus lisses et une meilleure performance de validation. Cela
pourrait être dû aux mises à jour plus fréquentes permettant au modèle de naviguer plus
efficacement dans le paysage d’optimisation.
6
Figure 2 – Learning curves with batchsize = 32
Un autre aspect important concernant l’étape d’apprentissage de notre modèle est les
fonctions d’optimisation, qui sont au cœur du processus d’apprentissage. Le choix d’une
7
fonction d’optimisation affecte la vitesse et la qualité de l’apprentissage. Des méthodes
simples comme la Descente de Gradient Stochastique (SGD) fournissent une approche de
base, introduisant de l’aléatoire dans les mises à jour des paramètres qui peuvent aider à
trouver des minima globaux mais peuvent nécessiter un réglage minutieux et des temps
d’entraı̂nement plus longs.
Des améliorations comme SGD avec Momentum accélèrent l’apprentissage en ajoutant
une fraction de la mise à jour précédente à l’actuelle, ce qui propulse les paramètres vers
l’optimum de manière plus stable et aide à éviter de rester bloqué dans des minima locaux.
Des optimiseurs avancés comme Adam adaptent le taux d’apprentissage pour chaque
paramètre basé sur des estimations des premiers et seconds moments des gradients. Cette
adaptabilité rend Adam exceptionnellement bien adapté pour les espaces de paramètres à
haute dimension dans les CNN, où il atteint constamment de bonnes performances avec un
réglage minimal des paramètres.
5 Hyperparamètres
Les réseaux de neurones convolutionnels (CNN) dépendent fortement des hyperpa-
ramètres, qui sont des configurations prédéfinies qui façonnent la structure du réseau et les
dynamiques d’apprentissage. Les suivants sont présents dans notre carnet :
— Nombre de Filtres dans Conv2D : filters=8 influence la complexité et la charge
computationnelle du modèle.
— Taille du Noyau dans Conv2D : kernel size = (3, 3) affecte la granularité
des caractéristiques extraites.
— Fonctions d’Activation : ’relu’ et ’softmax’ régissent les transformations non
linéaires appliquées aux entrées.
— Padding dans Conv2D : ’same’ assure que les dimensions spatiales du tenseur de
sortie sont préservées.
— Régularisation : l2(0.00) applique une régularisation pour atténuer le surappren-
tissage, bien qu’elle soit réglée pour n’avoir aucun effet dans ce modèle.
— Taux d’Abandon (Dropout) : Dropout(0.0) est destiné à prévenir le surappren-
tissage en désactivant aléatoirement des unités d’entrée, bien qu’il ne soit pas actif
dans ce cas.
— Taille de la Couche Dense : Dense(64, ...) détermine la complexité des com-
binaisons de caractéristiques avant la couche de sortie.
— Taille du Lot (Batch Size) : batch size=64 et batch size=8 influencent l’esti-
mation du gradient et la vitesse des mises à jour.
— Nombre d’Époques : epochs=20 et epochs=10 affectent la qualité de l’apprentis-
sage du modèle à partir de l’ensemble des données.
— Taux d’Apprentissage du SGD : learning rate=0.01 est crucial pour la vitesse
de convergence et la précision du modèle.
8
— Momentum dans SGD : momentum=0.0 est destiné à accélérer la convergence, bien
qu’il ne soit pas utilisé dans cette configuration.
9
buste et généralisable aux variations de l’éclairage, du contraste et d’autres caractéristiques
photographiques des images.
Dans notre carnet, nous avons utilisé la fonction ’standardize’ pour normaliser les images
de cifar 10, elle a suivi les étapes suivantes :
1. Calcul de la Moyenne (img data mean) : La moyenne de chaque canal de couleur
est calculée sur l’ensemble de l’image (hauteur et largeur), réduisant efficacement
chaque image à une moyenne par canal. Cela aide à centrer les données autour de
zéro.
2. Calcul de l’Écart Type (img data std) : L’écart type est également calculé pour
chaque canal de couleur de chaque image. Cela mesure la dispersion des valeurs de
pixels par rapport à la moyenne.
3. Normalisation : Chaque pixel de l’image est normalisé en soustrayant la moyenne et
en divisant par l’écart type. Cette opération est appliquée individuellement à chaque
canal de couleur de chaque image.
Normaliser les entrées est une étape cruciale du prétraitement qui bénéficie significative-
ment au processus d’apprentissage de plusieurs manières. Premièrement, cela peut accélérer
la convergence de l’algorithme d’apprentissage en standardisant les caractéristiques pour
être à une échelle comparable. Cet ajustement accélère non seulement le processus d’ap-
prentissage mais assure également un chemin plus doux et plus efficace pour atteindre
une performance optimale. Deuxièmement, la normalisation aide à réduire le biais ini-
tial au sein du réseau. Elle aborde le problème où certains poids peuvent influencer de
manière disproportionnée le résultat de l’apprentissage, soit en étant trop grands ou trop
petits par rapport aux autres, empêchant ainsi des schémas d’apprentissage inefficaces.
En outre, en mettant les données dans un format standardisé, la normalisation améliore
la performance globale et la stabilité du modèle, en particulier lorsqu’il s’agit de données
non vues. Elle minimise le risque que le modèle suradapte à l’échelle ou à la distribu-
tion des données d’entraı̂nement, rendant ainsi les prédictions plus fiables et robustes à
travers différents ensembles de données. Enfin, dans le contexte des réseaux neuronaux
convolutionnels (CNN) et d’autres cadres d’apprentissage profond, une entrée normalisée
est essentielle pour prévenir la saturation des neurones et assurer que les gradients restent
dans une plage gérable pendant le processus de rétropropagation. Cela est vital pour l’en-
traı̂nement efficace des réseaux neuronaux profonds, car cela aide à maintenir le flux de
gradient à travers de nombreuses couches sans diminuer ou exploser, facilitant ainsi des
architectures d’apprentissage plus profondes et plus complexes.
7 Sur-apprentissage
Pour explorer l’occurrence du sur-apprentissage, nous avons décidé de modifier le modèle
original qui nous a été donné. Plus précisément, nous avons augmenté le taux d’apprentis-
sage (0.1), choisi un algorithme d’optimisation plus simple (SGD) et augmenté le nombre
10
d’époques (100). Tout cela avait pour intention de provoquer un sur-apprentissage dans
notre modèle, ce qui nous a donné les résultats suivants :
Les courbes d’apprentissage révèlent certaines raisons potentielles de cette faible per-
formance. La perte d’entraı̂nement diminue initialement mais devient ensuite erratique,
tandis que la perte de validation est très instable et augmente généralement au fil du
temps. La précision de l’entraı̂nement s’améliore mais atteint un plateau à un niveau qui
11
n’est pas particulièrement élevé, et la précision de la validation est à la fois faible et volatile.
Cependant, cela n’indique pas nécessairement un sur-apprentissage, qui est généralement
caractérisé par une faible perte d’entraı̂nement avec une perte de validation élevée, et une
précision d’entraı̂nement élevée avec une précision de validation faible, les écarts entre les
deux s’élargissant avec le temps. Comme le montre la figure suivante :
Mais nous avons aussi le modèle qui fonctionne vraiment bien sur les données d’en-
traı̂nement et mal sur la validation comme il suit :
Nous allons donc supposer que le modèle est sur-ajusté. Et nous allons analyser comment
chacun des paramètres que nous avons changés par rapport au modèle original peut changer
nos résultats.
12
Figure 8 – Results when we changed the learning rate
13
7.2 Algorithme d’optimisation
Ici, nous avons utilisé ADAM (lr=0.01), ce qui nous a donné les résultats suivants :
14
précision de l’entraı̂nement et de la validation est extrêmement faible, à peine au-dessus
de 10%, et elles affichent également beaucoup de volatilité. Ce comportement suggère que
le modèle n’apprend pas efficacement. Il est donc aussi bon que le hasard. Une autre
chose curieuse est qu’il classe tout comme une grenouille. Cela peut être causé par le taux
d’apprentissage élevé qui rend les mises à jour de poids trop importantes, ou même le
nombre élevé d’époques peut contribuer au taux d’apprentissage élevé.
Un cas similaire se produit lorsque nous réduisons uniquement le nombre d’époques.
8 Cartes d’activation
Les cartes d’activation montrent des zones plus lumineuses où les filtres de la première
couche convolutionnelle répondent plus fortement aux caractéristiques dans les images
d’entrée. Cela pourrait être des bords, des textures ou des motifs que la couche a ap-
pris à reconnaı̂tre. Ce type de visualisation aide à comprendre sur quoi le réseau neuronal
porte son attention dans les premières étapes de l’extraction de caractéristiques.
Maintenant, nous examinerons les cartes d’activation de notre modèle proposé, qui se
présente comme suit :
Nous pouvons clairement voir que la première couche observe les bords dans les images,
comme si elle essayait de déterminer les contours des éléments. Nous nous attendons à
ce que, à mesure que nous avançons dans les couches plus profondes, elles commencent à
”chercher” des caractéristiques plus complexes comme les yeux, les jambes et les roues.
Pour comparaison, nous examinerons la carte d’activation du modèle surajusté.
Nous pouvons clairement voir qu’il est moins bon pour détecter les bords et les contours,
ce qui reflète la mauvaise performance de ce modèle.
15
9 Conclusion
Dans ce projet, nous avons expérimenté l’utilisation des réseaux de neurones convolu-
tionnels (CNN) pour la classification d’images, en utilisant l’API Keras pour nos expériences.
Nous avons appris combien il est crucial de diviser les données en ensembles d’entraı̂nement,
de validation et de test, ainsi que la normalisation appropriée des données, pour construire
un modèle robuste. Notre travail comprenait la conception de l’architecture du réseau,
l’entraı̂nement du modèle et l’ajustement des hyperparamètres pour améliorer la perfor-
mance. À travers ces étapes, nous avons significativement amélioré la précision de notre
modèle dans la classification des images. Nous avons également abordé le défi du surap-
prentissage, en employant des stratégies comme des conceptions de modèles complexes et
la régularisation pour faire en sorte que notre modèle fonctionne bien non seulement sur
nos données d’entraı̂nement, mais aussi sur de nouvelles images inconnues. Ce projet a
démontré l’efficacité des CNN dans la reconnaissance d’images et l’importance du réglage
fin du modèle pour atteindre des résultats optimaux.
10 Bibliography :
— Keras documentation : Keras 3 API documentation. (s.d.). Keras : Deep Learning for
humans. https ://keras.io/api/
— SENGUPTA, J. (2023, 21 de maio). How to decide the hyperparameters in CNN. Me-
dium. https ://medium.com/@sengupta.joy4u/how-to-decide-the-hyperparameters-in-
cnn-bfa37b608046
— Vasudev, R. (2019, 11 de fevereiro). Understanding and Calculating the number of Pa-
rameters in Convolution Neural Networks (CNNs). Medium. https ://towardsdatascience.com/unders
and-calculating-the-number-of-parameters-in-convolution-neural-networks-cnns-fc88790d530d : :text=
— Convolutional Neural Network (CNN) : Tensorflow Core. TensorFlow. (n.d.). https ://www.tensorflow
— Identification of COVID-19 samples from chest X-Ray images using deep learning : A
comparison of transfer learning approaches - Scientific Figure on ResearchGate. Avai-
lable from : https ://www.researchgate.net/figure/An-example-of-an-overfitted-accuracy-
loss-curve-while-training-DenseNet201-without-dataf ig33 43584572raccessed1Apr, 2024s
16