Les réseaux de neurones artificiel - ANN

Explicaitons simples puis approfondies avec les maths

Author Profile - Paul Claret

By Paul Claret

10 minutes read - 12/12/24

Les réseaux neuronaux artificiels (ANNs) sont une classe d’algorithmes d’intelligence artificielle qui imitent, dans une certaine mesure, le fonctionnement du cerveau humain. Ils sont au cœur de nombreuses applications modernes d’apprentissage profond (deep learning) et reposent essentiellement sur l’utilisation intensive de matrices pour les calculs. Si vous suivez ce cours depuis la roadmap pour apprendre l’intelligence artificielle générative, nous ne sommes plus très loin. A vrai dire, ce que nous voyons maintenant est le coeur de la chose.

Qu’est-ce qu’un réseau neuronal artificiel ?

Un ANN est constitué de neurones artificiels, également appelés nœuds, organisés en couches :

  1. La couche d’entrée reçoit les données brutes (par exemple, des pixels d’image).
  2. Les couches cachées effectuent des transformations intermédiaires.
  3. La couche de sortie fournit le résultat final (par exemple, une prédiction ou une classification).

Chaque connexion entre les neurones a un poids, qui est ajusté pendant l’entraînement pour optimiser les performances du réseau.

Vous avez surement déjà vu ce genre de schéma auparavant: Pasted image 20241212073120.png

C’est une bonne façon visuelle d’introduire la sujet mais nous n’allons pas la garder très longtemps. Pour le moment, retenez seulement qu’il y a des couches (entrées, cachées, sorties) et qu’elles sont toutes connecté les précédentes aux suivantes. Quand on demande à l’IA de produire quelque chose: pour GPT, une phrase ou SORA une video, notre demande entre dans la couche input et se propage ensuite aux couches cachées. Les couches cachées font des opérations sur le résultats des couches précédentes et au final, après avoir passé notre entrée dans plusieurs couches et fait plusieurs opérations dessus, on a une sortie. GPT un mot, SORA une image…

Je n’entre pas trops dans le détail puisqu’on va le faire bientôt et que comme vous le verrez, les ANN, sont “obscures”. On “demande” au ANN de trouver par lui même comment générer une phrase qui a du sense sans qu’on ne lui ai jamais enseigné. Après des milliers d’iteration et correction, il s’améliore mais nous n’avons à aucun moment dit: ceci est un verbe, il faut le placer avant… ces informations sont contenues dans les neurones bleu de mon schéma: les couches cachées. Et par obscure j’entend que notre ANN a peut être apris des choses incorrecte et sans qu’on ne le sache, un jour, il nous balance l’erreur en pleine face sans qu’on s’y attende. C’est pourquoi le domaine de l’IA ne se généralise pas encore à des milieux sensibles: chirurgie, justice… Parce qu’à tout moment, il peux tuer un patient parcequ’il a mal compris la règle, ou mettre en prison un innocent… J’ai écrit un article sur comment hacker les IA qui explique plus dans le détails les failles de l’intelligence artificielle.

Les calculs dans un réseau neuronal : tout est dans les matrices

Représentation des données

Pasted image 20241212074154.png
Pasted image 20241212074234.png

Et voilà ce qu’il se cache derrière ce beau schéma de neurones. Juste des multiplications de matrices. Une colonne de neurone est représenté par une matrice de poids. Les connexions sont en fait le produit des éléments d’entrées par cette matrice… Il faut bien que vous compreniez ça. nous avons notre entrée avec nos \(x_i\). Ils sont représentés à droite dans la matrice verticale. Les faires passer dans la couche suivante, revient à les multiplier par une matrice de poids. Cette matrice de poids (celle avec les \(w_i\) de toutes les couleurs), contient 4 colones puisque l’on a 4 entrée (rappelez vous: pour multiplier deux matrices, il faut que le nombre de colonnes de la première soit égale au nombre de ligne de la deuxième: revoir mon cours algèbre linéaire pour ia). On a ensuite une matrice de poids avec des \(b\). On verra plus tard pourquoi, mais pour le moment, retenez juste qu’elle existe et qu’on l’additionne à notre produit. Si vous remarquez, nous avons 4 connexions bleus dans notre schéma de \(a_1\) à tous les \(x\). Nous avons 4 éléments d’entrée. Lors de la multiplication, la première connexion est lisible sous la forme: \(w_{1}x_{1}\). La seconde sous la forme: \(w_{2}x_{2}\)… Est-ce que vous voyez maintenant le lien entre le schéma et la multiplication de matrice ? C’est l’élément clef de toute l’IA moderne ! Le résultat de cette multiplication et addition avec le bias nos donne au final une matrice verticale avec le nombre de neurones dans la couche cachées \([a_1, a_2, a_3]\). Il représente le niveau d’activation du neurone. On revient dessus plus tard ne vous en faites pas.

Pasted image 20241212075518.png

Calcul de propagation (forward pass): un résumé de mon pavé plus haut

Chaque couche effectue une opération clé : produit matriciel + addition de biais. Voici les étapes :

  1. Produit matriciel : Les entrées (\(X\)) sont multipliées par la matrice des poids (\(W\)) : \[ Z = W \cdot X \]
  2. Ajout d’un biais : Un vecteur de biais (\(b\)) est ajouté pour ajuster la sortie : \[ Z = W \cdot X + b \]
  3. Application d’une fonction d’activation : Une non-linéarité (par exemple, \(ReLU\) ou \(Sigmoid\)) est appliquée à \(Z\) pour introduire des comportements complexes : \[ A = \text{Activation}(Z) \]
  4. Le résultat (\(A\)) devient l’entrée de la couche suivante.

Pasted image 20241212075532.png Ce processus est répété pour chaque couche jusqu’à la sortie.

Exemple simple

Supposons une couche avec 3 neurones d’entrée et 2 neurones de sortie :

Le calcul de la sortie (\(Z\)) est donné par : \[ Z = W \cdot X + b = \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \end{bmatrix} \cdot \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \end{bmatrix} \] La sortie est ensuite transformée par une fonction d’activation.

Entraînement d’un réseau : ajustement des matrices

Pendant l’entraînement, le réseau apprend les bons poids et biais pour minimiser une fonction de coût (ou de perte). Cela se fait grâce à l’algorithme de backpropagation, qui repose sur :

  1. Propagation avant (forward pass) : Calcul de la sortie prédite.
  2. Calcul de l’erreur : Comparaison entre la sortie prédite et la sortie attendue.
  3. Propagation arrière (backward pass) : Ajustement des poids et des biais en utilisant le gradient de la fonction de coût.

Ces ajustements sont réalisés grâce à des opérations matricielles pour optimiser la vitesse et la précision.

Pasted image 20241212075819.png je vais expliquer dans le prochain article comment fonctionne la backpropagation dans le détail puisque c’est un peu trop long et avancé pour cet article. Mais contrairement à l’image de “feedforward” ou propagation avant, vous voyez qu’ici, on ne fait plus de multiplication de matrice. On ajoute les poids de tous les neurones seulement en fonction de l’erreur que notre modèle a produit. Vous voyez aussi peut-être à quel point l’ANN est autonome et il peut ajuster ses poids pour apprendre “ce qu’il veut”. C’est le problème d’alignement.

Pourquoi les matrices sont essentielles ?

  1. Efficacité : Les calculs matriciels peuvent être parallélisés sur des GPU (unités de traitement graphique) pour accélérer l’entraînement des réseaux.
  2. Évolutivité : Avec les matrices, il est possible de traiter des données massives et de construire des réseaux avec des millions, voire des milliards de paramètres.
  3. Simplicité conceptuelle : Une fois le concept compris, tout réseau neuronal peut être vu comme une séquence de produits matriciels.

Applications des ANNs

Les réseaux neuronaux sont utilisés dans presque tous les domaines de l’IA :


Conclusion

Les réseaux neuronaux artificiels reposent sur des concepts simples mais puissants : les matrices et l’algèbre linéaire. Comprendre leur fonctionnement vous permet de mieux appréhender l’intelligence artificielle moderne et ses nombreuses applications. Dans les articles suivants, nous détaillerons les variantes et les subtilités des architectures de réseaux neuronaux, qui permettent d’aborder des problèmes toujours plus complexes.

Vous voulez apprendre l'IA en autonomie ?

Si vous êtes nouveau sur mon site, je vous invite à aller voir ma page sur Roadmap IA qui regroupe tous mes articles dans l'ordre pour vous facilitez l'apprentissage.