Telechargé par oibour558

Machine Learning

publicité
BLABLAB
Fonctionnement des CNNs :
Un Réseau de Neurones Convolutifs, également connu sous le nom de
CNN ou ConvNet, est une classe de réseaux neuronaux spécialisée dans
le traitement de données ayant une topologie en grille, comme une image.
Une image numérique est une représentation binaire de données visuelles.
Elle contient une série de pixels disposés de manière grillaire, avec des
valeurs de pixels indiquant la luminosité et la couleur de chaque pixel.
Architecture d'un Réseau de Neurones Convolutifs
Un CNN a généralement trois couches : une couche convolutive, une
couche de pooling et une couche entièrement connectée.
Couche Convolutive
La couche convolutive est le bloc de construction central du CNN. Elle
supporte la majeure partie de la charge computationnelle du réseau.
Cette couche effectue un produit scalaire entre deux matrices, où une
matrice est l'ensemble de paramètres apprenables, également appelé
noyau, et l'autre matrice est la partie restreinte du champ récepteur. Le
noyau est spatialement plus petit qu'une image mais plus en profondeur.
Cela signifie que si l'image est composée de trois canaux (RVB), la hauteur
et la largeur du noyau seront spatialement petites, mais la profondeur
s'étend à tous les trois canaux.
Au cours de la propagation vers l'avant, le noyau glisse sur la hauteur et la
largeur de l'image, produisant la représentation de l'image de cette région
réceptive. Cela produit une représentation bidimensionnelle de l'image
appelée carte d'activation, qui donne la réponse du noyau à chaque
position spatiale de l'image. La taille de glissement du noyau est appelée
pas (stride).
Si nous avons une entrée de taille W x W x D avec un nombre Dout de
noyaux ayant une taille spatiale F avec un pas S et une quantité de
rembourrage P, alors la taille du volume de sortie peut être déterminée par
la formule suivante :
Wout = (W-F+2P)/S + 1
Cela donnera un volume de sortie de taille Wout x Wout x Dout.
Couche de Pooling
La couche de pooling remplace la sortie du réseau à certaines positions en
dérivant une statistique récapitulative des sorties voisines. Cela contribue à
réduire la taille spatiale de la représentation, diminuant ainsi la quantité
requise de calculs et de poids. L'opération de pooling est effectuée sur
chaque tranche de la représentation individuellement.
Il existe plusieurs fonctions de pooling telles que la moyenne du voisinage
rectangulaire, la norme L2 du voisinage rectangulaire et une moyenne
pondérée en fonction de la distance par rapport au pixel central.
Cependant, le processus le plus populaire est le max pooling, qui rapporte
la sortie maximale du voisinage.
Si nous avons une carte d'activation de taille W x W x D, un noyau de
pooling de taille spatiale F et un pas S, alors la taille du volume de sortie
peut être déterminée par la formule suivante :
Wout = (W-F)/S + 1
Cela produira un volume de sortie de taille Wout x Wout x D.
Dans tous les cas, le pooling offre une certaine invariance de translation,
ce qui signifie qu'un objet serait reconnaissable indépendamment de
l'endroit où il apparaît sur l'image.
Couche Entièrement Connectée
Les neurones de cette couche ont une connectivité complète avec tous les
neurones de la couche précédente et de la couche suivante, comme on
peut le voir dans les Réseaux de Neurones Entièrement Connectés
(FCNN) classiques. C'est pourquoi elle peut être calculée comme
d'habitude par une multiplication de matrices suivie d'un effet de biais.
La couche entièrement connectée aide à établir la correspondance entre la
représentation en entrée et la sortie.
Architecture d’un Convolutional Neural Network-CNN
Les CNN désignent une sous-catégorie de réseaux de neurones =modèles de
classification d’images
entrée une image sous la forme d’une matrice de pixels.
3dimensions:
-Deux dimensions pour une image en niveaux de gris.
-(RGB)
un cnn est composé de 2 partie:
1)Une partie convolutive extraire de l’image les données en compressant ce
qui réduit leur taille. l’image passe donc par des FILTRES pou creer une
nouvelle image la carte de convulsion. cette derniere est concaténé dans
un vecteur nommé code CNN
2) une partie classification:le code CNN est l’entre de cette partie. elle est
ensuite entré au perceptron MLP(Multi Layers Perceptron). Pour combiner
les caractéristiques du code CNN afin de classer l’image.
🍁
?:
PK LA convolution
KEZAKO: FLEMME J’expliquerai pas peut etre pour le gros rapport
Mias voila quand meme une image
Juste a savoir: on applique le filtre par convolution.
Sources :Convolutional Neural Network : Tout ce qu'il y a à savoir (datascientest.com)
https://www.mygreatlearning.com/blog/types-of-neural-networks/
Apprentissage des CNNs :
Les CNN apprennent en utilisant un processus appelé backpropagation, composé de
d’une succession d’étapes afin d’arriver à un résultat. On considérera le cas ou l’on entre une
image dans le modèle afin de l’expliquer :
1. Initialisation : On initialise les poids des différentes parties du réseau en leur donnant
des valeurs aléatoires. Cela n’est pas pénalisant étant donné que les données vont
ensuite être ajustées lors de la backpropagation.
2. Propagation avant : Lorsque notre image arrive, elle doit d’abord passer une
succession de filtres avant d’arriver à la partie réseau de neurones. On peut penser à
une étape de détection de contours, d’analyse de texture ou des couleurs de l’image.
Enfin, on effectue un max-pooling et un aplatissement en vecteur des données obtenues
afin de ne pas surcharger d’informations le système. En effet, la surcharge d’information,
en plus de ralentir les performances du modèle, peut provoquer un problème appelé
overfitting qui est un surapprentissage de notre modèle, lorsque le réseau est trop
complexe par rapport à la quantité de données d'entraînement. On constate aussi une
baisse de la capacité du réseau à généraliser.
3. Calcul de l'erreur : L'entraînement de notre modèle se fait sur des images dont on
connaît déjà le contenu (si c’est un chien ou un chat par exemple). Cela nous permet
ainsi de comparer ce que le modèle nous renvoie de ce qu’on devrait obtenir. On peut
notamment utiliser des fonctions de pertes afin de calculer l’erreur à partir de la distance
entre les résultats du modèle et de la valeur réelle.
4. Rétropropagation du gradient : Cette erreur est ensuite renvoyée à l’entrée de notre
système afin de modifier les poids d'entrées du réseau de neurone.
5. Mise à jour des poids : Les poids du réseau sont ajustés pour minimiser l'erreur. Cela
se fait en utilisant un algorithme d'optimisation, comme peut l’être la descente de
gradient. Les poids sont ajustés dans la direction opposée au gradient, avec un taux
d'apprentissage qui détermine l'ampleur de chaque ajustement.
6. Répétition : On répète ces étapes (fin de l’étape 2 à 5) sur plusieurs itérations avec
différents lots d'images jusqu'à ce que le réseau converge vers des poids qui minimisent
l'erreur globale sur l'ensemble de l’apprentissage
Ainsi, le CNN ajuste ses poids pour améliorer progressivement sa capacité à reconnaître des
caractéristiques de l’image et à effectuer des classifications précises. La capacité à apprendre
repose sur la capacité du réseau à ajuster ses paramètres de manière à minimiser l'erreur entre
ses prédictions et la vraie valeur d'entraînement.
Fine-Tuning :
Introduction:
Le fine-tuning, ou affinage, permet notamment d'améliorer les performances des réseaux de
neurones convolutionnels (CNN). Cette méthode consiste à ajuster les poids de chaque
neurone dans le réseau afin de spécialiser et d'améliorer ses capacités dans des tâches
spécifiques. Nous allons voir dans la suite, l'application du fine-tuning dans les couches denses
des réseaux de neurones profonds, en particulier dans les Multi-Layer Perceptrons (MLP) des
CNNs. L'objectif du fine-tuning est d'affiner le CNN pour des tâches de classification de
données textuelles, telles que l'analyse de sentiments sur des commentaires Facebook.
sources:Everything You Need To Know About Fine Tuning of LLMs (labellerr.com)
Méthodologie du Fine-Tuning :
Le processus de fine-tuning se déroule généralement en quatre étapes :
1. Collecte et Préparation des Données
La première étape consiste à collecter des données qui sont représentatives des éléments sur
lesquels on souhaite appliquer le filtre. Il est important de préparer ces données en effectuant
des opérations de nettoyage, telles que la suppression des échantillons en doublons, afin
d'assurer la qualité des données utilisées pour l'entraînement.
2. Choix d'un Modèle Pré-entraîné
Une fois les données préparées, il est nécessaire de sélectionner un modèle pré-entraîné
adapté à la tâche spécifique. Dans notre cas, nous opterons pour un CNN qui a déjà été
entraîné sur des données similaires à celles que nous souhaitons analyser, par exemple, un
modèle pré-entraîné pour la classification de texte.
3. Évaluation des Performances du Modèle
Avant de procéder au fine-tuning, il est essentiel d'évaluer les performances du modèle
pré-entraîné sur nos données. Cela nous permettra d'avoir une référence pour mesurer
l'amélioration après l'affinage.
4. Ajustement des Hyperparamètres du Fine-Tuning
La dernière étape du processus implique l'ajustement des hyperparamètres du fine-tuning. Ces
hyperparamètres peuvent inclure le taux d'apprentissage, le nombre d'itérations et la taille du lot
(batch size). Plusieurs méthodes peuvent être utilisées pour cette optimisation, telles que la
recherche aléatoire des paramètres, la recherche en grille, ou encore l'optimisation bayésienne.
Conclusion
En conclusion, le fine-tuning des CNNs est une méthode efficace pour améliorer les
performances des modèles dans des tâches spécifiques. En suivant une méthodologie
rigoureuse, comprenant la collecte et la préparation des données, le choix d'un modèle
pré-entraîné approprié, l'évaluation des performances, et l'ajustement des hyperparamètres, il
est possible d'obtenir des résultats significativement améliorés, adaptés aux besoins
spécifiques de chaque application.
Sources: Fine-Tuning : Qu'est-ce que c'est ? À quoi ça sert en IA ? (datascientest.com)
Téléchargement