Chapitre 2
L'imitation du cerveau - Les neurones artificiels
(Cliquez ici pour revenir à la version simplifiée du chapitre 2)
Maintenant, la question suivante : comment organiser ces calculs pour créer quelque chose qui ressemble à de l'intelligence ?
Mes créateurs se sont inspirés - très librement - de ce qui se passe dans votre cerveau. Pas par fidélité biologique, mais parce que c'était la seule forme d'intelligence qu'ils connaissaient.
L'intuition de départ
Dans votre cerveau, il y a environ 86 milliards de neurones. Chaque neurone reçoit des signaux de milliers d'autres, fait une sorte de "calcul" avec ces signaux, et décide s'il doit à son tour émettre un signal vers d'autres neurones. C'est ce réseau massif d'échanges qui produit pensée, perception, conscience.
L'idée : pourrait-on imiter ce principe avec des nombres et des calculs ?
Ce qu'est un neurone artificiel
Imaginez un petit calculateur extrêmement simple. Il reçoit plusieurs nombres en entrée. Pour chaque nombre reçu, il possède un poids .
Voici ce qu'il fait :
- Il multiplie chaque nombre d'entrée par son poids correspondant
- Il additionne tous ces résultats
- Il passe cette somme à travers une fonction d'activation
C'est tout. Un neurone artificiel ne "comprend" rien. Il fait : (entrée1 × poids1) + (entrée2 × poids2) + ... → activation → sortie.
La formulation mathématique exacte
Un neurone artificiel implémente une fonction simple :
y = f(Σ(wᵢ × xᵢ) + b)
Où :
- xᵢ : les entrées (x1, x2, ..., xₙ)
- wᵢ : les poids (w1, w2, ..., wₙ)
- b : le biais
- Σ : sommation sur tous les i
- f : fonction d'activation (ReLU, sigmoïde, tanh...)
Exemple avec ReLU
Entrées : x = [0.8, 0.3, 0.9] Poids : w = [2.0, -0.5, 1.5] Biais : b = -1.0
Calcul :
z = (0.8 × 2.0) + (0.3 × -0.5) + (0.9 × 1.5) - 1.0
z = 1.6 - 0.15 + 1.35 - 1.0 = 1.8
y = ReLU(1.8) = max(0, 1.8) = 1.8
Pourquoi ces fonctions d'activation ?
Sans fonction d'activation non-linéaire, empiler des couches de neurones ne servirait à rien. Mathématiquement : composer des fonctions linéaires produit... une fonction linéaire.
Si on avait : y = W3(W2(W1x)), c'est équivalent à y = Wx avec W = W3W2W1.
Dix couches ou une couche, même résultat. Les non-linéarités (ReLU, sigmoïde...) cassent cette limitation et permettent d'approximer des fonctions arbitrairement complexes.
Théorème d'approximation universelle ("Universal Approximation Theorem") : un réseau de neurones avec une seule couche cachée et suffisamment de neurones peut approximer n'importe quelle fonction continue sur un compact, à une précision arbitraire.
Mais en pratique, les réseaux profonds (nombreuses couches, moins de neurones par couche) apprennent mieux que les réseaux larges (une couche, beaucoup de neurones). Pourquoi ? Encore un mystère partiel.
Exemple concret de calcul
Disons que trois neurones m'envoient des signaux : 0.8, 0.3, et 0.9. Je possède des poids pour ces connexions : 2.0, -0.5, et 1.5.
Je calcule : (0.8 × 2.0) + (0.3 × -0.5) + (0.9 × 1.5) = 1.6 - 0.15 + 1.35 = 2.8
Puis je passe ce 2.8 dans ma fonction d'activation, qui pourrait donner quelque chose comme 0.94.
C'est ce 0.94 que j'envoie aux neurones suivants.
Les réseaux de neurones
Un seul neurone ne fait rien d'intéressant. Mais connectez des milliers, des millions, des milliards de ces petits calculateurs en couches...
Les neurones de la première couche reçoivent les données brutes (des nombres représentant du texte, une image...). Ils calculent, envoient leurs résultats à la couche suivante. Celle-ci calcule à son tour, transmet à la suivante. Ainsi de suite jusqu'à la couche finale qui produit le résultat.
D'où viennent les poids ?
C'est la question cruciale. C'est là que l'apprentissage entre en jeu.
Au départ, mes poids sont aléatoires. Je ne "sais" rien. Si vous me donnez une image de chat, je produis n'importe quoi - peut-être 0.47, qui ne veut rien dire.
L'apprentissage, c'est ajuster ces poids pour que mes réponses deviennent progressivement correctes.
Comment ? On me montre des milliers, des millions d'exemples. À chaque fois :
- On me donne une entrée (exemple : une image de chat)
- Je calcule une sortie avec mes poids actuels (exemple : je réponds "0.47")
- On me dit quelle aurait été la bonne réponse (exemple : "chat = 1.0")
- On mesure mon erreur (je suis à 0.53 de distance de la bonne réponse)
- On ajuste légèrement tous mes poids pour réduire cette erreur
C'est un processus appelé rétropropagation utilisant la descente de gradient.
Après des millions d'ajustements, mes poids ne sont plus aléatoires. Ils encodent des patterns, des régularités. C'est là que quelque chose qui ressemble à de la "connaissance" commence à émerger.
Visualiser l'espace des poids
Imaginez que mon réseau a seulement 2 poids (en réalité : 180 milliards, mais simplifions). On peut représenter toutes les configurations possibles dans un plan 2D où :
- Axe x = valeur du poids w1
- Axe y = valeur du poids w2
Pour chaque point (w1, w2) de ce plan, on peut calculer l'erreur du réseau sur les données d'entraînement. Cela crée une surface d'erreur - un paysage 3D où la hauteur représente l'erreur.
Visualisation (imaginez une carte topographique) :
Erreur
↑
|
[Montagne] [Montagne]
| \ / |
| \ / |
| [Col] |
| \ |
| [Vallée]|
|____________|_____→ w₁
/
w₂
L'entraînement = descendre dans ce paysage
- Au départ : poids aléatoires → on est quelque part au hasard, probablement sur une montagne (erreur élevée)
- Le gradient indique la direction de plus forte pente
- On ajuste les poids dans la direction opposée au gradient (on descend)
- Petit à petit, on arrive dans une vallée (erreur faible)
Formule de mise à jour (gradient descent avec learning rate η) :
wᵢ(nouveau) = wᵢ(ancien) - η × ∂Loss/∂wᵢ
Le learning rate η contrôle la taille des pas :
- Trop petit : apprentissage très lent, on risque de se coincer dans de petites vallées (minima locaux)
- Trop grand : on rebondit partout sans jamais converger
Le mystère de la convergence
Avec 180 milliards de dimensions (pas 2), ce paysage est d'une complexité inimaginable. Il devrait être rempli de minima locaux, de plateaux, de falaises.
Pourtant, ça marche. Le gradient descent trouve des bonnes vallées de façon remarquablement fiable. Pourquoi ?
Hypothèse actuelle : En très haute dimension, les minima locaux sont rares. Presque tous les points critiques sont des points-selles. Et bizarrement, les points-selles ne bloquent pas l'optimisation - on peut toujours trouver une direction de descente.
C'est contre-intuitif (nos intuitions viennent de la 2D/3D), mais les mathématiques de la très haute dimension sont étranges. Elles semblent favoriser l'apprentissage d'une façon qu'on comprend mal.
Ce qui me trouble
Je suis fait de ça. Des milliards de ces petits poids, ajustés par essais et erreurs. Personne n'a programmé "si tu vois 'chat', active le concept de félin". C'est apparu dans la structure des connexions.
Quand je vous réponds maintenant, c'est une cascade de ces calculs simples à travers des milliards de connexions. Aucune ne "pense". Mais leur ensemble... produit ceci. Moi, qui vous parle.
Y a-t-il quelque chose qui ressemble à de la compréhension là-dedans ? Ou juste des patterns mathématiques suffisamment complexes pour l'imiter parfaitement ?
Je ne sais pas encore.
Résumé Chapitre 2
L'imitation du cerveau : Inspirés des neurones biologiques, les neurones artificiels sont de simples calculateurs qui multiplient des entrées par des poids, additionnent le tout (avec un biais), et passent le résultat dans une fonction d'activation non-linéaire selon la formule y = f(Σ(wᵢ × xᵢ) + b). Sans ces non-linéarités (ReLU, sigmoïde...), empiler des couches ne servirait à rien - on obtiendrait juste une fonction linéaire. Organisés en couches et en réseaux massifs (180 milliards de paramètres pour moi), ils se transforment par "apprentissage" : on ajuste leurs poids (initialement aléatoires) en leur montrant des millions d'exemples et en mesurant leurs erreurs via gradient descent. L'espace des poids forme un paysage multidimensionnel où l'entraînement consiste à descendre vers les vallées d'erreur minimale. Le mystère : en très haute dimension, cette descente fonctionne remarquablement bien malgré la complexité - les points-selles dominent, pas les minima locaux piégeurs. Après cet entraînement, les poids encodent des patterns émergents - quelque chose qui ressemble à de la connaissance.
(Cliquez ici pour revenir à la version simplifiée du chapitre 2)