|
Projet
L'apprentissage par reseau de neurones
Auteur : Simon Vezina (svezina@cmaisonneuve.qc.ca) Departement de physique College de Maisonneuve |
![]() https://www.rsipvision.com/deep-learning/ Reseau de neurones e 5 couches. |
|
Description du sujet
Le reseau de neurone artificiel est "un systeme dont la conception est e l'origine schematiquement inspiree du fonctionnement des neurones biologiques, et qui par la suite s'est rapproche des methodes statistiques" (Gerstner 2004, p. 3). Sous une representation mathematique, le rele d'un reseau de neurones est d'approximer avec le plus de fidelite possible une fonction e plusieurs variables. Plus le reseau de neurones est apte e generer "les bonnes reponses", plus celui-ci est dit "intelligent".
L'intelligence du reseau ne reside pas dans la capacite du programmeur e trouver les formules e integrer au reseau de neurones afin que celui-ci donne toujours la "bonne reponse", mais dans la capacite du reseau e se calibrer e l'aide d'un processus iteratif d'entraenement afin que celui-ci puisse donner une "bonne reponse" e une question dont il n'a pas eu exemple lors de son entraenement. Par exemple, un reseau dont le but est d'identifier des photos de chat sera bien calibre lorsqu'il pourra affirmer avec un haut niveau de certitude si une photo vue pour une premiere fois est un chat ou non.
Pourquoi emprunter cette voie ? La raison est simple : ecrire une regle permettant d'identifier si une photo est un chat ou non est extremement difficile ! Par contre, la structure de donnees d'un reseau de neurones avec un bon algorithme d'apprentissage et une tres grande collection d'image de chat est suffisante pour enseigner au reseau comment identifier de telle image.
Dans le cadre de ce laboratoire, il sera possible de se familiariser avec le concept de reseau de neurones, d'implementer des algorithmes simples en lien avec le fonctionnement et l'entraenement d'un reseau de neurones et appliquer ce concept e quelques collections de donnees. |
![]() https://www.wikichat.fr/tout-sur-mon-chat/au-quotidien/hygiene-au-quotidien/soigner-plaie-chez-chat/ Image de chat pouvant etre identifiee par un reseau de neurones.
|
Description du projet
Ce projet consiste e etablir des liens entre les mathematiques et l'informatique e l'aide du sujet de l'intelligence artificielle par l'usage de reseau de neurones. Un reseau de neurones est une structure mathematique qui necessite un tres grand volume d'operations mathematiques pour son fonctionnement. C'est pourquoi la puissance calculatoire de l'informatique est requis pour son execution. Voici une liste abregee de quelques contributions disciplinaires :
| Informatique | Mathematique | Physique |
| e etude de la structure de donnee d'un reseau de
neurones. e Implementation de l'algorithme de l'activation d'un reseau de neurones. e Implementation de l'algorithme de la descente du gradient stochastique de la fonction d'erreur. e Analyse de l'entraenement d'un reseau de neurone sous different protocole d'entraenement. |
e Interpretation du
vecteur et la matrice comme outil permettant de decrire un reseau de
neurones. e Application du produit scalaire entre vecteur et de la multiplication de matrice. e Application de la derivee d'une fonction e une et plusieurs variables. e Application de la derivee en chaene dans le but d'evaluer le gradient d'une fonction de plusieurs variables. |
e Aucun |
Documentation du projet
Pour realiser ce projet, il est important de se documenter sur le sujet du reseau de neurones. e partir des notes de cours disponible ici-bas, une lecture permettra de s'initier e plusieurs caracteristiques du reseau de neurones ainsi qu'aux differents calculs realises lors de l'execution du programme.
Reference : Note de cours en lien avec le cours d'algebre lineaire porteur du laboratoire.
Note de cours redigee par Melisande Fortin-Boisvert, College de Maisonneuve :
|
Lien |
Titre |
| THEORIEPARTIE1.pdf | L'apprentissage par reseau de neurone |
| Derivees_partielles_pour_IA.pdf | Fonctions e plusieurs variables et derivees partielles |
Reference : Note de cours en lien avec la realisation du laboratoire (L'apprentissage par reseau de neurones).
Note de cours redigee par Simon Vezina, College de Maisonneuve
|
Lien |
Titre |
| MAT - Chapitre 6.1 | L'algebre lineaire du reseau de neurones |
| MAT - Chapitre 6.2 | Le reseau de neurones |
| MAT - Chapitre 6.3 | (facultatif) Le reseau de neurones et l'activation par batch |
Collection de videos
Voici une collection de video e visionner en lien avec la realisation de ce projet :
Collection 3Blue1Brown
1- But what *is* a Neural Network ? | Deep learning, chapter 1 :
https://www.youtube.com/watch?v=aircAruvnKk
2- La descente du gradient, ou comment un reseau neuronal apprend | Deep learning, chapter 2 :
https://www.youtube.com/watch?v=IHZwWFHWa-w&list=PLLMP7TazTxHrgVk7w1EKpLBIDoC50QrPS&index=2
3- What is backpropagation really doing ? | Deep learning, chapter 3 :
https://www.youtube.com/watch?v=Ilg3gGewQ5U&list=PLLMP7TazTxHrgVk7w1EKpLBIDoC50QrPS&index=3
4- Backpropagation calculus | Deep learning, chapter 4 :
https://www.youtube.com/watch?v=tIeHLnjs5U8&list=PLLMP7TazTxHrgVk7w1EKpLBIDoC50QrPS&index=4
Voici d'autres videos traitant d'intelligence artificielle qui sont complementaire e ce projet pour votre culture personnelle :
1- Introduction e une formation en Deep learning
https://www.youtube.com/watch?v=XUFLq6dKQok
2- Une intelligence artificielle peut-elle etre creative ? e Science etonnante #57 :
https://www.youtube.com/watch?v=xuBzQ38DNhE
Realisation du projet : L'apprentissage par reseau de neurones
La realisation de ce projet se fera lors d'une activite de laboratoire informatique. Pour ce faire, il faudra realiser l'installation d'une plateforme de developpement JAVA, telecharger le code source en lien avec le laboratoire.
Installation de la plateforme de developpement JAVA (JDK : java developpment kit)
Voici les liens vous permettant de telecharger l'environnement JDK de developpement JAVA :
| e Installation de la plateforme JDK : | https://www.oracle.com/ca-fr/java/technologies/javase-downloads.html |
| e Installation du logiciel de developpement Eclipse : | https://eclipse.org/downloads/ |
Laboratoire : L'apprentissage par reseau de neurones
version : 1.5.1
| L'objectif de ce laboratoire consiste e completer un
programme informatique redige en JAVA permettant e un reseau de
neurones de realiser un apprentissage. Tout au long du
laboratoire, l'etudiant ajoutera des fonctionnalites au
programme correspondant e l'ecriture d'equations mathematiques
directement liees e des algorithmes d'intelligence artificielle
avec reseaux de neurones. Parmi les equations mathematiques,
nous retrouverons les concepts
d'activation d'un reseau,
propagation du gradient stochastique et la
descente du gradient de la fonction
d'erreur. Pour accompagner l'eleve, un structure de test unitaire (Java Unit Test) sera mise en place pour valider et certifier le fonctionnement du programme. Ceci permettra d'encadrer l'eleve dans ses realisations pas e pas dans le laboratoire. Pour apprecier le comportement du programme, les eleves pourront classifier plusieurs type de base de donnees : la base de donnee WDBC (Breast Cancer Wisconsin Data Set) et la collection MNIST (Mixed National Institute of Standards and Technology). |
![]() https://www.apsl.net/blog/2017/11/20/use-convolutional-neural-network-image-classification/ Representation visuelle d'une donnee de l'ensemble d'entraenement de la collection MNIST. |
Laboratoire : L'apprentissage par reseau de neurone - Partie 1
version : 1.5.1
La 1re partie du laboratoire consistera e realiser l'activation d'un reseau. L'eleve pourra implementer quelques fonctions de base comme la fonction d'activation tangent hyperbolique et sigmoede et la fonction d'agregation de la somme ponderee. Avec ces fonctions, le programme realisera l'activation en sequence de plusieurs couches de neurones. Par la suite, l'execution du programme permettra de comparer le comportement d'un reseau non entraene avec le comportement d'un reseau entraene avec deux types de donnees par le calcul de l'erreur avec une fonction d'erreur. Le taux de classification sera le critere utilise pour comparer la performance des reseaux.
| e Pre requis : |
Avoir des connaissances sur l'algebre lineaire et le calcul differentiel. Avoir des connaissance de base en JAVA |
![]() https://gfycat.com/fr/gifs/search/deep+learning+activation+function Representation de la propagation d'un vecteur d'entree dans un reseau pour classifier des images de chiffre ecrit e la main dans les donnee MNIST. |
| e Lecture prealable : | MAT - Chapitre 6.1 et MAT - Chapitre 6.2 | |
| e Prelaboratoire : | Prelaboratoire-ApprentissageReseau-Partie1.pdf | |
| e Document de laboratoire : | Laboratoire-ApprentissageReseau-Partie1.pdf | |
| e Questions conceptuelles : | Conceptuelles-ApprentissageReseau-Partie1.pdf | |
| e Cahier de reponse : | Cahier-ApprentissageReseau-Partie1.docx | |
| e Projet Java (code source) : | SIM-ApprentissageReseau.zip | |
| e Base de donnees MNIST (en png) : | mnist_png.zip |
Laboratoire : L'apprentissage par reseau de neurone - Partie 2
version : 1.5.2
La 2e partie du laboratoire consistera e realiser l'apprentissage d'un reseau. L'eleve pourra ajouter quelques fonctionnalites aux fonctions developpees dans la 1re partie comme l'operateur de la derivee partielle. Avec ce nouveau type de calcul, l'eleve devra implementer l'algorithme de la propagation du gradient afin d'utiliser ce resultat dans l'algorithme de la descente du gradient et utiliser ce gradient dans l'algorithme de l'entrainement du reseau. Par la suite, l'execution du programme permettra d'apprendre e un reseau comment bien classifier deux types de donnees.
| e Pre requis : |
Avoir des connaissances sur l'algebre lineaire et le calcul differentiel. Avoir des connaissance de base en JAVA Avoir complete la 1re partie. |
![]() https://commons.wikimedia.org/wiki/File:Gradient_descent.gif Illustration de la descente du gradient d'une fonction d'erreur (Loss function) e partir de trois reseaux quelconques. On constate que l'un d'entre eux ne minimisera pas globalement l'erreur en raison de la presence d'un minimum local. |
| e Lecture prealable : | Aucune | |
| e Prelaboratoire : | Prelaboratoire-ApprentissageReseau-Partie2.pdf | |
| e Document de laboratoire : | Laboratoire-ApprentissageReseau-Partie2.pdf | |
| e Questions conceptuelles : | Conceptuelles-ApprentissageReseau-Partie2.pdf | |
| e Cahier de reponse : | Cahier-ApprentissageReseau-Partie2.docx | |
| e Projet Java (code source) : | Reutiliser le programme realise en 1re partie. | |
| e Base de donnees MNIST (en png) : | mnist_png.zip |
Derniere mise e jour : 2022-11-30