Réseaux de neurones pour les nuls : une introduction rapide à ce domaine fascinant

Les réseaux de neurones sont partout! Ils sont à la base de toutes les récentes révolutions en Intelligence Artificielle (IA). Dans cet article, on va essayer d'expliquer simplement comment les réseaux de neurones permettent d'auto apprendre pour résoudre des problèmes complexes.
Qu'est ce que le Machine Learning?
Machine Learning (ML) est une branche de l'IA qui permet aux ordinateurs d'apprendre à partir de données, sans être programmés!
En programmation classique, le développeur doit comprendre les aspects du problème à résoudre, savoir quelles sont toutes les règles pour parvenir à la solution. Ensuite il va concevoir un algorithme que l'ordinateur va exécuter pour résoudre ce problème. Par exemple, si on veut permettre à un ordinateur d'identifier des triangles, on écrira un algorithme qui compte le nombre de côtés. S'il est égal à 3, alors c'est un triangle.
Pour résoudre ce problème avec le ML, on va plutôt concevoir un système d'apprentissage qui va permettre à l'ordinateur d'apprendre les propriétés pour reconnaître les triangles, à partir de nombreux exemples.

Qu'est ce qu'un neurone?
En ML, un neurone est une unité d'apprentissage, représentée sous forme de fonction. En mathématiques ou en informatique, une fonction est quelque chose qui reçoit des intrants, applique une logique pour retourner un résultat.
Par exemple, si on peut utiliser un neurone pour illustrer la relation entre le temps de lecture et le nombre de mots dans une publication. Compte tenu que les systèmes d'apprentissage machines apprennent par des exemples, on va utiliser les données d'une plateforme de blog qui contient les temps de lectures de chacune des publications.

Les exemples de données permettent à la neurones d'apprendre et d'identifier toute seule sa fonction f=ax+b
, qui établit la relation entre le nombre de mots et le temps de lecture.
La prochaine fois que l'on publie un nouvel article, l'ordinateur peut utiliser la fonction du neurone pour prédire le temps de lecture.
Qu'est ce qu'un réseau neuronal?
Si un neurone est une fonction, un réseau neuronal est un réseau de fonctions interconnectées. Ce réseau de fonctions permet de résoudre des problèmes plus complexes, impossible à résoudre de manière algorithmique.
Le concepteur d'un réseau neuronal doit définir:
- Les intrants du réseau.
- Les fonctions des neurones
- L'architecture du réseau - les interconnections entre les neurones
- Les sorties du réseau

Comment des réseaux neuronaux apprennent?
Pour comprendre comment fonctionne les réseaux neuronaux, on va construire un réseau neuronal qui va reconnaitre les formes. Pour des raisons de simplification, on va se limiter à des cercles, carrés et triangles.
La couche d'entrée

La couche d'entrée va recevoir les informations formes a identifier. Les informations doivent toujours être modélisées sous forme numérique.
Dans notre cas, chaque forme représentée par une image de 28x28 pixels, chaque pixel représentant de l'intensité de la couleur du pixel (0
= noir, 1
= blanc). On va donc représenter chaque forme comme une série de 28 x 28 = 784 nombres.
La couche d'entrée du réseau aura donc 784 neurones.
La couche de sortie

La couche de sortie indique le type de forme identifiée. Chaque forme sera représentée par 3 chiffres:
- Cercle =
(1, 0, 0)
- Carré =
(0, 1, 0)
- Triangle =
(0, 0, 1)
On a donc besoin de 3 neurones dans la couche de sortie
Les couche internes

Le réseau a 2 couches internes composées composées de 7 et 5 neurones chacune, qui vont effectuer tous les calculs pour identifier les formes.
- Chaque neurone de la couche interne reçoit des données des neurones de la couche précédente via des arêtes auxquelles sont associées un poids
W
. - Chaque neurone est associée à une valeur
B
appelée biais. - Chaque neurone va utiliser une fonction d'activation pour transformer de la somme des données pondérées des couches précédentes ajoutées aux biais en une valeur entre
0
et1
. Cette valeur va être propagée vers la couche suivante.
L'entraînement du réseau neuronal
Les poids arêtes (W
) et les biais des neurones (B
) sont les paramètres du réseau neuronal. Dans notre exemple, le réseau neuronal a 82332 paramètres:
B
: 7 + 5 = 12W
: 784 * 7 * 5 * 3 = 82320
L'objectif de l'apprentissage sera de trouver les 82320 valeurs de W
et B
qui permettront au réseau neuronal d'identifier de la façon la plus exacte possible les 3 formes.
Les étapes d'entraînement sont les suivantes.
La préparation
La première étape consiste à préparer le jeu d'images qui vont être utilisées pour entraîner le réseau neuronal à reconnaître les formes.
Iteration #1

- Initialiser le poids des arêtes et le biais des neurones avec des valeurs aléatoires.
- Choisir l'image d'une forme de la banque d'entraînement, et injecter ses pixels dans la couche d'entrée
- La valeur des pixels va être transmise aux neurones de la 1ere couche interne. Chaque neurone va utiliser sa fonction pour calculer le résultat qu'il va transmettre a la 2ème couche interne.
- Les neurones de la 2ème couche interne vont à leur tour faire leurs calculs, et transmettre leurs résultats à la couche de sortie.
- Chaque neurone de sortie représente la probabilité de détection de chaque forme. On calcule l'erreur de la prédiction en comparant le résultat obtenu par rapport au résultat attendu.
- En fonction de l'erreur, on retourne aux couches précédentes pour ajuster le poids des arêtes et le biais des neurones.
Iteration #2

On choisit une autre image, et on recommence. On continue ce processus jusqu'à ce que le réseau neuronal détecte la majorité des formes des données d'entraînement. A la fin du processus, on obtient les 82320 paramètres (W
et B
) du réseau neuronal!
Les applications des réseaux neuronaux
ChatGPT
ChatGPT est un robot qui utilise les Large Language Model (LLM), des réseaux neuronaux qui sont entraînés avec de larges quantité de texte afin de comprendre et générer le langage humain.
Etant donné une phrase donnée, ChatGPT est capable de prédire le prochain mot à ajouter à la phrase, ce qui lui permet de générer du langage cohérent, un mot à la fois!
ChatGPT a 175 milliards paramètres, et son réseau de neurones a 96 couches!
Github Copilot
Github Copilot est un autre robot qui utilise l'engin de ChatGPT pour comprendre le code a partir de tous les codes source publics disponible sur Internet.
Copilot est un assistant qui aide les développeurs à être plus efficaces. C'est un intellisense on steroid, qui est capable de comprendre le contexte du code source d'un développeurs, et l'aider à:
- Générer du code de test
- Suggérer des fragments de code en temps réel
- Détecter les erreurs de logiques et de syntaxes
- etc
Après la révolution Internet, on est en train de vivre la révolution de l'IA, et on est juste au début de l'aventure. Avec la prolifération des réseaux neuronaux de plus en plus performants et complexes, l'IA va tranquillement s'intégrer dans toutes les facettes de nos vies, et changer profondément les rapports entre humains et machines!
Si vous avez aimé l'article, montrez votre soutien avec un ❤️ et abonnez-vous a mon blog! Votre engagement m’inspire!