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://towardsdatascience.com/how-to-build-your-own-neural-network-from-scratch-in-python-68998a08e4f6

Visualisation artistique du comportement des neurones lors du processus d'activation d'un reseau.

 

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

Articles scientifiques

Voici quelques articles scientifiques qui ont ete consultes pour l'elaboration de ce projet. Cependant, ces articles ne sont presentement pas e l'etude dans ce projet puisqu'ils traitent de sujets avances en lien avec l'apprentissage par reseau de neurones. Ils sont sujet e consultation pour enrichissement seulement.

 

- Mini-batch_vs_Normalized_batch.pdf

- Quadratic_Aggregation_function1808.00098.pdf

- Dropout-srivastava14a.pdf

- Physics_and_Deep_learning-1608.08225.pdf

- ModernTrainableActivationFunction2005.00817.pdf

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
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.
Base de donnees MNIST (en png) : mnist_png.zip

 

Retour e la page d'accueil  

 

Derniere mise e jour : 2022-11-30