Projet

L'apprentissage par réseau de neurones

 

Auteur :   Simon Vézina (svezina@cmaisonneuve.qc.ca)

               Département de physique

               Collège de Maisonneuve

 

Description du sujet

 

 

Le réseau de neurone artificiel est "un système dont la conception est à l'origine schématiquement inspirée du fonctionnement des neurones biologiques, et qui par la suite s'est rapproché des méthodes statistiques" (Gerstner 2004, p. 3). Sous une représentation mathématique, le rôle d'un réseau de neurones est d'approximer avec le plus de fidélité possible une fonction à plusieurs variables. Plus le réseau de neurones est apte à générer "les bonnes réponses", plus celui-ci est dit "intelligent".

 

L'intelligence du réseau ne réside pas dans la capacité du programmeur à trouver les formules à intégrer au réseau de neurones afin que celui-ci donne toujours la "bonne réponse", mais dans la capacité du réseau à se calibrer à l'aide d'un processus itératif d'entraînement afin que celui-ci puisse donner une "bonne réponse" à une question dont il n'a pas eu exemple lors de son entraînement. Par exemple, un réseau dont le but est d'identifier des photos de chat sera bien calibré lorsqu'il pourra affirmer avec un haut niveau de certitude si une photo vue pour une première fois est un chat ou non.

 

Pourquoi emprunter cette voie ? La raison est simple : Écrire une règle permettant d'identifier si une photo est un chat ou non est extrêmement difficile ! Par contre, la structure de données d'un réseau de neurones avec un bon algorithme d'apprentissage et une très grande collection d'image de chat est suffisante pour enseigner au réseau comment identifier de telle image.

 

Dans le cadre de ce laboratoire, il sera possible de se familiariser avec le concept de réseau de neurones, d'implémenter des algorithmes simples en lien avec le fonctionnement et l'entraînement d'un réseau de neurones et appliquer ce concept à quelques collections de données.


https://www.wikichat.fr/tout-sur-mon-chat/au-quotidien/hygiene-au-quotidien/soigner-plaie-chez-chat/

Image de chat pouvant être identifiée par un réseau de neurones.




https://www.rsipvision.com/deep-learning/

Réseau de neurones à 5 couches.

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 réseau.

 

Description du projet

 

Ce projet consiste à établir des liens entre les mathématiques et l'informatique à l'aide du sujet de l'intelligence artificielle par l'usage de réseau de neurones. Un réseau de neurones est une structure mathématique qui nécessite un très grand volume d'opérations mathématiques pour son fonctionnement. C'est pourquoi la puissance calculatoire de l'informatique est requis pour son exécution. Voici une liste abrégée de quelques contributions disciplinaires :

 

Informatique Mathématique         Physique       
• Étude de la structure de donnée d'un réseau de neurones.

• Implémentation de l'algorithme de l'activation d'un réseau de neurones.

• Implémentation de l'algorithme de la descente du gradient stochastique de la fonction d'erreur.

• Analyse de l'entraînement d'un réseau de neurone sous différent protocole d'entraînement. 
• Interprétation du vecteur et la matrice comme outil permettant de décrire un réseau de neurones.

Application du produit scalaire entre vecteur et de la multiplication de matrice.

Application de la dérivée d'une fonction à une et plusieurs variables.

Application de la dérivée en chaîne dans le but d'évaluer le gradient d'une fonction de plusieurs variables.
Aucun

 

 

Documentation du projet

 

Pour réaliser ce projet, il est important de se documenter sur le sujet du réseau de neurones. À partir des notes de cours disponible ici-bas, une lecture permettra de s'initier à plusieurs caractéristiques du réseau de neurones ainsi qu'aux différents calculs réalisés lors de l'exécution du programme.

      

Référence :   Note de cours en lien avec la réalisation du projet (L'apprentissage par réseau de neurones).

                    Note de cours rédigée par Mélisande Fortin-Boisvert et Simon Vézina, Collège de Maisonneuve

 

 

Lien

Titre

  En construction ...

 

Collection de vidéos

 

Voici une collection de vidéo à visionner en lien avec la réalisation 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 réseau 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 

 

Réalisation du projet : L'apprentissage par réseau de neurones

version : 1.0

 

La réalisation de ce projet se fera lors d'une activité de laboratoire informatique. Pour ce faire, il faudra réaliser l'installation d'une plateforme de développement JAVA, télécharger le code source en lien avec le laboratoire.

 

Installation de la plateforme de développement JAVA 

Voici les liens vous permettant de télécharger l'environnement de développement JAVA :

• Installation de la plateforme JDK :     http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html 
• Installation du logiciel de développement Eclipse : https://eclipse.org/downloads/ 

 

 

Laboratoire : L'apprentissage par réseau de neurones

version : 1.0

 

 

La réalisation de ce projet se fera lors d'une activité de laboratoire. Pour ce faire, il faudra réaliser l'installation d'une plateforme de développement JAVA, télécharger le code source en lien avec le laboratoire.

 

Initialement, le programme ne fait que générer des réseaux de neurones non entraîné ne pouvant réaliser aucun calcul. Tout au long de ce laboratoire, le programmeur est invité à suivre des directives proposées dans un protocole de laboratoire. Il réalisera des implémentations permettant au réseau de neurones d'effectuer différentes tâches. La première partie consistera à implémenter la routine d'activation du réseau de neurones et la deuxième partie consistera à implémenter la routine d'entraînement du réseau de neurones. Pour apprécier les accomplissements, le programme pourra analyser trois séries de données dont la collection très connue MNIST (Mixed National Institute of Standards and Technology) et observer le comportement du réseau de neurones.


https://www.apsl.net/blog/2017/11/20/use-convolutional-neural-network-image-classification/

Représentation visuelle d'une donnée de l'ensemble d'entraînement de la collection MNIST

 

• Pré requis : Avoir des connaissances sur l'algèbre linéaire et le calcul différentiel.
Avoir des connaissance de base en JAVA
• Lecture préalable : En construction ...
• Prélaboratoire : Aucun
• Document de laboratoire : Laboratoire-ApprentissageReseau.pdf
• Rapport de laboratoire : Cahier-ApprentissageReseau.doc
• Projet Java (code source) : SIM-ApprentissageReseau.zip
• Base de données MNIST (en png) : mnist_png.zip
• Javadoc (en HTML) :  En construction ...

 

Retour à la page d'accueil  

 

Dernière mise à jour : 2018-11-15