Un réseau de neurones est un modèle mathématique qui transforme des entrées en sorties en faisant passer des nombres à travers des couches d’opérations simples. Chaque couche prend les valeurs précédentes, forme des sommes pondérées, ajoute des biais, applique une fonction d’activation non linéaire, puis transmet le résultat à la couche suivante.

Cette description peut sembler abstraite, mais l’idée centrale est simple : un réseau apprend de nombreux poids ajustables afin que des motifs utiles dans l’entrée conduisent à des prédictions utiles en sortie.

Ce qu’est un réseau de neurones

Pour un neurone avec des entrées x1,x2,,xnx_1, x_2, \dots, x_n, le calcul de base est

z=w1x1+w2x2++wnxn+bz = w_1x_1 + w_2x_2 + \dots + w_nx_n + b

suivi d’une activation :

a=g(z)a = g(z)

Ici, w1,,wnw_1, \dots, w_n sont des poids, bb est un biais, et gg est une fonction d’activation comme ReLU, sigmoid ou tanh.

Un réseau de neurones feedforward complet répète ce schéma à travers les couches. Sous forme compacte, une couche s’écrit souvent

a(l)=g ⁣(W(l)a(l1)+b(l))a^{(l)} = g\!\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)

a(l1)a^{(l-1)} est la sortie de la couche précédente.

L’intuition qui fait généralement comprendre

Chaque neurone pose une question pondérée sur l’entrée qu’il reçoit. De grands poids positifs donnent plus d’importance à certaines caractéristiques. Des poids négatifs peuvent aller à l’encontre d’un motif. Le biais déplace le seuil. La fonction d’activation décide ensuite avec quelle intensité ce neurone doit répondre.

Empiler des couches permet au réseau de construire des caractéristiques par étapes. Les premières couches détectent des motifs simples. Les couches suivantes les combinent en signaux internes plus utiles pour la tâche finale.

C’est pourquoi les réseaux de neurones sont plus que « beaucoup de formules à la fois ». Ce sont des compositions de fonctions simples, et c’est cette composition qui leur donne leur flexibilité.

Un exemple détaillé

Considérons un petit réseau avec deux entrées, une couche cachée et une sortie. Soit l’entrée

x=[21]x = \begin{bmatrix} 2 \\ 1 \end{bmatrix}

Supposons que la couche cachée ait deux neurones et utilise ReLU, où

ReLU(z)=max(0,z)\operatorname{ReLU}(z) = \max(0, z)

Prenons les calculs suivants pour la couche cachée :

z1=12+(1)1+0=1z_1 = 1 \cdot 2 + (-1) \cdot 1 + 0 = 1 h1=ReLU(z1)=1h_1 = \operatorname{ReLU}(z_1) = 1 z2=0.52+0.511=0.5z_2 = 0.5 \cdot 2 + 0.5 \cdot 1 - 1 = 0.5 h2=ReLU(z2)=0.5h_2 = \operatorname{ReLU}(z_2) = 0.5

Envoyons maintenant ces valeurs cachées au neurone de sortie :

s=2h1h2=2(1)0.5=1.5s = 2h_1 - h_2 = 2(1) - 0.5 = 1.5

Si la règle est « prédire la classe 1 quand s>0s > 0 », cette entrée est classée dans la classe 1.

Le point important n’est pas la valeur précise des nombres. C’est la structure :

  1. prendre les entrées
  2. former des sommes pondérées
  3. appliquer des activations non linéaires
  4. répéter
  5. lire le score final

C’est un réseau de neurones en train d’effectuer une propagation avant.

Comment un réseau de neurones apprend

Utiliser un réseau est un problème. L’entraîner en est un autre.

Dans l’apprentissage supervisé standard, le réseau commence par faire une prédiction. Une fonction de perte mesure ensuite à quel point cette prédiction est éloignée de la cible. L’entraînement fondé sur les gradients calcule comment la perte varie par rapport à chaque poids et biais, puis les met à jour pour réduire la perte.

En pratique moderne, cela signifie généralement rétropropagation plus descente de gradient ou un optimiseur apparenté. Cette approche repose sur un modèle et une perte différentiables, ou au moins suffisamment différentiables par morceaux pour que les méthodes de gradient fonctionnent.

La version courte est :

predictionlossgradientsparameter update\text{prediction} \to \text{loss} \to \text{gradients} \to \text{parameter update}

Sur de nombreux exemples, les poids se déplacent vers des motifs qui aident à accomplir la tâche.

Erreurs fréquentes

Penser que plus de couches donne automatiquement de meilleurs résultats

Ce n’est pas le cas. Ajouter des couches augmente la capacité du modèle, mais rend aussi l’optimisation, les besoins en données et le contrôle du surapprentissage plus exigeants.

Oublier pourquoi la non-linéarité est importante

Si chaque couche est seulement linéaire, alors tout le réseau reste une seule application linéaire. Ce sont les fonctions d’activation qui permettent aux réseaux profonds de représenter des relations plus complexes.

Considérer la sortie comme une certitude garantie

La sortie d’un réseau n’est utile qu’à la hauteur du modèle, des données et du cadre d’entraînement qui la produisent. Un score élevé n’est pas la même chose qu’une preuve.

Ignorer la représentation de l’entrée

Les réseaux n’apprennent pas à partir du sens brut. Ils apprennent à partir de la représentation numérique qu’ils reçoivent. Si les entrées sont médiocres, incohérentes ou privées d’une structure importante, les performances du réseau en souffriront généralement.

Quand les réseaux de neurones sont utilisés

Les réseaux de neurones sont utilisés lorsque la relation entre l’entrée et la sortie est suffisamment complexe pour que des règles écrites à la main soient fragiles ou incomplètes. Les cas courants incluent la reconnaissance d’images, la parole, la modélisation du langage, les systèmes de recommandation et certaines tâches de prévision.

Ils ne sont pas automatiquement le meilleur choix pour tous les problèmes. Sur de petits jeux de données structurés, des modèles plus simples peuvent être plus faciles à entraîner, plus faciles à interpréter et parfois tout aussi efficaces.

Un bon modèle mental

Pensez à un réseau de neurones comme à une fonction en couches avec de nombreux réglages ajustables. La propagation avant transforme une entrée en une sortie. L’entraînement modifie ces réglages pour que les sorties futures deviennent plus utiles pour la tâche.

C’est la manière la plus claire de garder les deux idées en tête à la fois : les réseaux de neurones calculent par composition, et ils apprennent en ajustant leurs paramètres pour réduire l’erreur.

Essayez votre propre version

Gardez le même petit réseau, mais remplacez l’entrée (2,1)(2, 1) par (0,3)(0, 3). Recalculez z1z_1, z2z_2, h1h_1, h2h_2 et le score final ss. Modifiez ensuite un poids et observez quelle partie de la sortie change. Ce petit exercice rend l’idée de propagation avant bien plus concrète que le simple fait de mémoriser des définitions.

Besoin d'aide pour un problème ?

Envoyez votre question et obtenez une solution vérifiée, étape par étape, en quelques secondes.

Ouvrir GPAI Solver →