Classification de chiffres avec réseau de neurones

Telechargé par Fadma AZAROUAL
1
Description du Code :
Ce projet utilise un modle de classication bas sur un rseau de
neurones pour reconnatre des chires (0-9)  partir de donnes
d'images. L'objectif est de crer un petit dataset, entraner un
modle pour prdire les chires, puis valuer la performance du
modle.
Le code gnre un dataset de 50 images de chires de 0  9 sous
forme de matrices binaires (12x6). Chaque image reprsente un
chire o chaque pixel est soit 1 (color) soit 0 (blanc).
Le bruit est ajout sur les images pour rendre la tche un peu plus
dicile (5% des pixels sont alatoirement inverss).
Les labels sont crs sous forme de one-hot encoding, o chaque
label est un vecteur de 10 lments reprsentant un chire.
Le modle est un rseau de neurones avec trois couches linaires
(fully connected) :
Entre : 72 neurones (correspondant aux 72 pixels de l'image).
Couches caches : 2 couches avec 20 et 10 neurones
respectivement.
Sortie : 10 neurones (un pour chaque chire, de 0  9).
Les fonctions d'activation utilises sont ReLU pour les couches
caches et Softmax est appliqu lors de la prdiction pour obtenir
des probabilits.
Le modle est entran  l'aide de l'optimiseur Adam et de la
fonction de perte CrossEntropyLoss, qui est adapte pour des
problmes de classication multi-classes (comme notre cas avec les
chires).
Le modle apprend pendant 100 poques (passes sur le dataset), en
ajustant ses poids pour minimiser l'erreur de prdiction.
2
Aprs l'entranement, le modle est test en lui fournissant une
image au hasard (slectionne parmi celles du dataset) et il prdit
le chire correspondant.
Les probabilits de chaque classe (chire de 0  9) sont calcules,
et la classe ayant la plus haute probabilit est slectionne comme
la prdiction nale.
La prcision des prdictions peut tre value en comparant les
rsultats avec les labels rels.
Ce projet permet de gnrer un dataset simple de chires, de crer
et d'entraner un modle de rseau de neurones pour la
reconnaissance des chires, et d'eectuer des prdictions avec des
probabilits.
Les reponses aux questions du professeur:
La fonction de visualisation permet d'acher une image sous
forme de matrice, chaque pixel tant reprsent par un caractre
comme '1' pour un pixel allum (noir) et '0' pour un pixel teint
(blanc). Cela permet de visualiser les chires gnrs.
J’ai le fait dans le code .
Les parametres sont les valeurs aue le modele apprend pour faire
des predictions correctes
Le modle de rseau de neurones comporte :
Premire couche cache : 72 entres (pixels) * 20 neurones = 1440
paramtres.
Deuxime couche cache : 20 neurones * 10 neurones = 200
paramtres.
Troisime couche : 10 neurones * 10 sorties = 100 paramtres.
3
En tout, le modle a 1440 + 200 + 100 = 1740 paramtres (poids). 
cela s'ajoutent les biais de chaque couche 72+20+10
Donc 1844.
Les matrices dans un rseau de neurones reprsentent les poids des
connexions entre les neurones. Chaque fois qu'un neurone est
connect  un autre, on peut le considrer comme un
lment d'une matrice.
Dans note exemple :
1.Poids entre l'entre et la premire couche cache : (72, 20)
2. Poids entre la premire et la deuxime couche cache : (20, 10)
3. Poids entre la deuxime couche cache et la sortie : (10, 10)
4. Biais de la premire couche cache : (20)
5. Biais de la deuxime couche cache : (10)
6. Biais de la couche de sortie : (10)
7. Entre (X) : (50, 72) (pour 50 images de 72 pixels chacune)
8. Sortie (y) : (50, 10) (pour 50 images avec 10 classes).
Dans le cadre de l'apprentissage supervis, un modle de
classication sert  prdire des catgories ou des classes  partir
des donnes d'entre.
Le modle de classification avec un rseau de neurones se compose :
Des couches caches pour apprendre des reprsentations abstraites
des donnes,
Une couche de sortie pour prdire la classe,
Une fonction d'activation softmax pour obtenir des probabilits de
chaque classe,
Une fonction de perte comme la cross-entropie pour valuer la
qualit de la prdiction,
4
Un algorithme d'optimisation pour ajuster les poids et
minimiser l'erreur
Le clustering est un type d'apprentissage non supervis qui consiste
 regrouper des donnes similaires en clusters (ou groupes) sans
utiliser de labels prdnis. L'objectif est de diviser les donnes en
plusieurs groupes o les objets au sein du mme groupe sont plus
similaires entre eux que ceux des groupes dirents.
Contrairement  la classication, o les donnes sont tiquetes, le
clustering cherche  identier les structures sous-jacentes dans les
donnes sans
connatre les classes l'avance.
Utilis dans des situations o tu n'as pas de labels pour tes
donnes.
L'algorithme trouve des structures ou des groupes dans les
donnes.
Quelques algorithmes populaires :
K-means : Divise les donnes en K groupes.
DBSCAN : Clustering bas sur la densit, dtecte aussi les
outliers.
Clustering hirarchique : Cre des clusters  dirents
niveaux.
Peut tre combin avec des rseaux de neurones (comme les
auto-encodeurs) pour des tches de clustering plus
complexes.
Le clustering est particulirement utile lorsque tu veux
explorer et comprendre la structure de tes donnes avant de
les utiliser dans des tches de classication ou de rgression.
La taille du minibatch fait rfrence au nombre d'exemples de
donnes utiliss pour calculer une mise  jour des paramtres
(poids et biais) dans chaque itration de l'algorithme
d'optimisation (comme le gradient descent).
5
Dans l'entranement des rseaux de neurones, nous avons plusieurs
choix possibles pour le type d'entranement :
1. Entranement par lot complet (batch learning) : On utilise tous
les exemples du jeu de donnes  chaque itration. Cela peut tre
trs coteux en termes de calcul, surtout pour les grands ensembles
de donnes.
2. Entranement par minibatch : Une approche plus courante o l'on
divise les donnes en plusieurs petits lots (minibatches), et chaque
minibatch est utilis pour mettre  jour les paramtres.
3. Entranement en ligne (stochastic learning) : Dans ce cas, chaque
exemple est utilis individuellement pour mettre  jour les
paramtres du modle, un par un. Cela peut tre trs bruyant
(beaucoup de variance dans les mises  jour).
La taille du minibatch est donc un compromis entre
l'ecacit du calcul et la stabilit de l'optimisation.
La taille du minibatch a un impact direct sur la vitesse
d'entranement, la prcision des mises  jour et la stabilit de
l'optimisation.
Une petite taille de minibatch entrane des mises  jour plus
frquentes, mais moins stables et bruyantes.
Une grande taille de minibatch est plus stable et ncessite
plus de ressources en calcul et en mmoire.
Choisir la bonne taille dpend des ressources, de la nature du
problme et des compromis que on prt faire.
Une poque (epoch) dans l'entranement d'un modle de machine
learning reprsente un passage complet de l'ensemble des donnes
d'entranement  travers le modle.  chaque poque, les poids du
modle sont ajusts pour minimiser l'erreur (ou la fonction de
perte) sur l'ensemble de donnes.
Le nombre d'poques est crucial pour l'entranement du modle :
Trop peu d'poques = undertting (modle pas assez appris).
perd sa capacit de gnralisation).
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!