06 / 09 Forward pass et fonctions de coût
  1. ← Réseaux de neurones : fondations et mathématiques
  2. 00 Avant-propos
  3. 01 Le neurone artificiel
  4. 02 Algèbre linéaire essentielle
  5. 03 Fonctions d'activation
  6. 04 Le perceptron
  7. 05 Du neurone au réseau multi-couches
  8. 06 Forward pass et fonctions de coût
  9. 07 Dérivées et règle de la chaîne
  10. 08 La rétropropagation
Réseaux de neurones : fondations et mathématiques · 06 / 09

Forward pass et fonctions de coût

De l'entrée à la prédiction, puis comment lui donner une note.

Au chapitre 5, on a vu qu’un réseau multi-couches peut exprimer presque n’importe quelle fonction, à condition de bien régler ses poids. Pour XOR, on les a posés à la main. Mais à la main, ça ne passe pas l’échelle : un réseau réel compte des millions de poids. On veut donc les régler automatiquement.

La toute première brique de cet automatisme, c’est de savoir deux choses : calculer la sortie du réseau pour une entrée donnée, puis donner à cette sortie une note qui dit à quel point elle est fausse. Apprendre, pour un réseau, ce sera chercher à améliorer cette note. Ce chapitre construit ces deux briques. Il ne calcule encore aucune correction de poids : il pose le terrain de jeu sur lequel, à partir du chapitre 7, le gradient va opérer.

Acte 1 : calculer la prédiction

Le passage avant Forward pass Propagation avant. Phase de calcul où une donnée d'entrée traverse le réseau couche par couche, des entrées vers la sortie, en appliquant à chaque neurone sa somme pondérée et sa fonction d'activation. Produit la prédiction finale. (forward pass) est le calcul qui transforme une entrée en prédiction, en traversant le réseau couche par couche, de l’entrée vers la sortie. Chaque couche applique sa formule a=f(Wx+b)a = f(Wx + b), et sa sortie devient l’entrée de la suivante.

Prenons un petit classifieur à 3 classes : deux entrées, une couche cachée de deux neurones, une couche de sortie de trois neurones. Donnons-lui l’entrée x=(1,2)x = (1, 2).

La couche cachée. Ses poids et biais sont

W(1)=(0,50,510,5),b(1)=(01).W^{(1)} = \begin{pmatrix} 0{,}5 & -0{,}5 \\ 1 & 0{,}5 \end{pmatrix}, \qquad b^{(1)} = \begin{pmatrix} 0 \\ -1 \end{pmatrix}.

On calcule d’abord la somme pondérée de chaque neurone, ce qu’on appelle la pré-activation z(1)=W(1)x+b(1)z^{(1)} = W^{(1)}x + b^{(1)} :

z1(1)=0,510,52+0=0,5,z^{(1)}_1 = 0{,}5 \cdot 1 - 0{,}5 \cdot 2 + 0 = -0{,}5, z2(1)=11+0,521=1.z^{(1)}_2 = 1 \cdot 1 + 0{,}5 \cdot 2 - 1 = 1.

Puis on applique l’activation. Avec ReLU, qui remplace tout négatif par zéro :

h=ReLU(z(1))=(max(0,0,5),  max(0,1))=(0,  1).h = \mathrm{ReLU}(z^{(1)}) = \big(\max(0, -0{,}5),\; \max(0, 1)\big) = (0,\; 1).

Le premier neurone caché s’est éteint, le second est resté actif.

La couche de sortie. Ses poids et biais sont

W(2)=(100211),b(2)=(001).W^{(2)} = \begin{pmatrix} 1 & 0 \\ 0 & 2 \\ 1 & 1 \end{pmatrix}, \qquad b^{(2)} = \begin{pmatrix} 0 \\ 0 \\ -1 \end{pmatrix}.

On calcule les trois pré-activations, appelées ici les logits z(2)=W(2)h+b(2)z^{(2)} = W^{(2)}h + b^{(2)} :

z(2)=(0,  2,  0).z^{(2)} = (\,0,\; 2,\; 0\,).

De scores à probabilités. Trois logits, ce sont trois nombres quelconques. Pour un classifieur, on veut trois probabilités, positives et de somme 11. C’est le rôle de la fonction softmax Softmax Fonction qui prend un vecteur de réels et le transforme en distribution de probabilités. Pour un vecteur z, softmax(z)_i = exp(z_i) / somme(exp(z_j)). Utilisée comme activation de sortie pour la classification multi-classe. :

softmax(z)k=ezkjezj.\mathrm{softmax}(z)_k = \frac{e^{z_k}}{\sum_j e^{z_j}}.

Sur nos logits (0,2,0)(0, 2, 0) :

y^=(e0,  e2,  e0)e0+e2+e0=(1,  e2,  1)2+e2(0,11,  0,79,  0,11).\hat{y} = \frac{(\,e^{0},\; e^{2},\; e^{0}\,)}{e^{0} + e^{2} + e^{0}} = \frac{(\,1,\; e^{2},\; 1\,)}{2 + e^{2}} \approx (0{,}11,\; 0{,}79,\; 0{,}11).

Le réseau prédit la classe 2 avec une confiance d’environ 79%79\%. Voilà un forward pass complet : de xx à une distribution de probabilité.

Déroule-le toi-même, étape par étape, et bascule l’activation cachée entre ReLU et sigmoïde pour voir comment chacune transforme la même entrée.

x₁x₂h₁h₂ŷ₁ŷ₂ŷ₃
Activation cachée

Le forward pass, couche par couche

Étape 1Entrée
x
(1,00 ; 2,00)

Trois choses à observer en jouant :

  • À chaque étape, la couche active s’allume dans le schéma. L’information avance toujours de l’entrée vers la sortie, jamais en arrière.
  • Bascule de ReLU à sigmoïde : la même entrée produit des valeurs cachées hh différentes, mais la classe prédite reste la 2. La structure du réseau compte autant que les valeurs exactes.
  • La dernière étape, softmax, transforme trois logits quelconques en trois probabilités qui somment à 11.

Acte 2 : mettre une note

On sait calculer une prédiction. Reste à dire à quel point elle est bonne. Une fonction de coût Fonction de coût Mesure de l'erreur entre la prédiction d'un réseau et la vérité attendue. Aussi appelée fonction de perte ou loss. Plus elle est élevée, plus le réseau se trompe. L'apprentissage cherche à la minimiser. Exemples courants : MSE pour la régression, cross-entropy pour la classification. prend la prédiction et la cible, et renvoie un seul nombre : la note. Plus le nombre est grand, plus le réseau s’est trompé. Apprendre, ce sera faire baisser ce nombre.

Toutes les tâches ne se notent pas de la même façon. Voyons les deux grandes familles.

Régresser : l’erreur quadratique moyenne

Quand on prédit une grandeur continue (un prix, une température), c’est de la régression. La note naturelle est l’ erreur quadratique moyenne Erreur quadratique moyenne Fonction de coût qui moyenne le carré de l'écart entre la prédiction et la cible. Le carré pénalise fortement les grands écarts et rend le coût dérivable partout. Notée MSE (mean squared error), elle est le choix naturel pour la régression. Source : Goodfellow, Bengio & Courville, 2016 (MSE), la moyenne des carrés des écarts entre prédiction et cible :

MSE=1ni=1n(y^iyi)2.\mathrm{MSE} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2.

Pourquoi le carré, et pas la valeur absolue ? Pour deux raisons. D’abord, le carré pénalise beaucoup plus les grands écarts que les petits : se tromper de 1010 coûte cent fois plus que se tromper de 11, pas dix fois. Ensuite, le carré est lisse, dérivable partout, alors que la valeur absolue a un coin anguleux en zéro. Cette douceur sera précieuse au chapitre 7, quand on cherchera la pente.

Classer : l’entropie croisée

En classification, la cible n’est pas un nombre mais une classe. La prédiction, elle, est une probabilité. Pourrait-on réutiliser la MSE entre la probabilité prédite et la cible ? On pourrait, mais ce serait un mauvais choix, et la raison est instructive.

Imaginons une tâche binaire (cible tt qui vaut 00 ou 11) où le modèle prédit la probabilité pp que la cible vaille 11. Si la vraie réponse est 11 et que le modèle annonce p=0,01p = 0{,}01, il se trompe avec une assurance totale. On voudrait une note qui explose dans ce cas. Or la MSE plafonne : (0,011)20,98(0{,}01 - 1)^2 \approx 0{,}98, à peine moins que pour une hésitation à p=0,5p = 0{,}5.

L’ entropie croisée Entropie croisée Fonction de coût pour la classification qui mesure l'écart entre la distribution prédite et la distribution cible. Elle vaut moins le logarithme de la probabilité attribuée à la bonne classe, donc elle explose quand le modèle est confiant et se trompe. Couplée à la fonction softmax, c'est le coût standard du multi-classe. Source : Bishop, 2006 binaire règle ce problème :

H=[tlnp+(1t)ln(1p)].H = -\big[\,t \ln p + (1 - t) \ln(1 - p)\,\big].

Quand la cible vaut 11, elle se réduit à H=lnpH = -\ln p. Si pp est proche de 11, HH est proche de 00 : bonne réponse, petite note. Mais si pp tend vers 00, lnp-\ln p tend vers l’infini : la note explose. C’est exactement la punition qu’on cherchait pour la confiance erronée.

Plusieurs classes : softmax et cible one-hot

Pour notre classifieur à 3 classes, la sortie est la distribution softmax y^\hat{y} de l’Acte 1. La cible se code en one-hot : un vecteur qui vaut 11 sur la bonne classe et 00 ailleurs. Pour une vraie classe 2, la cible est y=(0,1,0)y = (0, 1, 0).

L’entropie croisée multi-classe généralise la version binaire :

H=kyklny^k=lny^c,H = -\sum_{k} y_k \ln \hat{y}_k = -\ln \hat{y}_c,

cc est la vraie classe. Comme la cible est one-hot, tous les termes s’annulent sauf celui de la bonne classe. La note ne dépend donc que de la probabilité que le modèle a accordée à la bonne réponse. Sur notre exemple, ln(0,79)0,24-\ln(0{,}79) \approx 0{,}24 : petite note, le réseau avait raison et avec confiance. Si la vraie classe avait été la 1, la note aurait été ln(0,11)2,2-\ln(0{,}11) \approx 2{,}2.

Compare les deux notes côte à côte. Fais glisser la prédiction et regarde laquelle explose.

p = 0,50MSEEntropie croisée

MSE contre entropie croisée

probabilité prédite p0,50
cible
Erreur quadratique (MSE)
0,25
Entropie croisée
0,69

Trois choses à observer en jouant :

  • En classification binaire, pousse pp vers la mauvaise extrémité : l’entropie croisée part vers l’infini, alors que la MSE plafonne autour de 11. Voilà pourquoi on préfère l’entropie croisée pour classer.
  • Le bandeau « confiant et faux » s’allume quand le modèle affirme une réponse fausse avec assurance. La note doit le punir sévèrement, et elle le fait.
  • En mode 3 classes, change les logits : softmax redistribue les probabilités, et l’entropie croisée ne regarde que celle de la classe vraie.

Acte 3 : le paysage de coût

On tient une note. Mais cette note dépend de quoi, au juste ? Les données d’entraînement sont fixées une fois pour toutes. Ce qui peut changer, ce sont les poids du réseau. La note est donc une fonction des poids.

Imaginons un réseau qui n’aurait que deux poids, w1w_1 et w2w_2. À chaque couple (w1,w2)(w_1, w_2) correspond une note. On peut tracer cette note comme une altitude au-dessus du plan des poids : on obtient un relief, une surface de coût Surface de coût Graphe du coût vu comme une fonction des poids du réseau, les données étant fixées. Chaque jeu de poids est un point, et son altitude est le coût correspondant. Apprendre revient à descendre vers un creux de ce relief, ce que feront les chapitres sur le gradient. Source : Goodfellow, Bengio & Courville, 2016 . Les bons réseaux sont dans les vallées, les mauvais sur les sommets.

Apprendre prend alors un sens géométrique limpide : c’est descendre vers un creux de ce paysage. La carte ci-dessous montre la surface de coût d’un petit modèle à deux poids. Déplace le point et lis la note.

w₁w₂

Le paysage de coût

w₁ = -0,5 w₂ = 3,5
Coût au point courant = 1,69
point courant
+creux (coût minimal)
Clique ou glisse pour déplacer le point et lire le coût. Apprendre revient à atteindre le creux. Comment y aller : les chapitres suivants.

Trois choses à observer en jouant :

  • Le relief est un bol : un seul creux, marqué d’une croix. C’est le couple de poids qui minimise la note.
  • Déplace le point : plus tu t’éloignes du creux, plus la note grimpe. Elle ne dépend que des poids, les données restant fixées.
  • Ce chapitre montre le décor. Savoir dans quelle direction descendre pour atteindre le creux, c’est l’objet des chapitres 7 à 9.

Exercices

Prends de quoi écrire. Les corrigés sont volontairement détaillés, ligne par ligne.

Exercice 1. Reprends le réseau de l’Acte 1 (mêmes W(1),b(1),W(2),b(2)W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)}, activation cachée ReLU), mais avec l’entrée x=(2,0)x = (2, 0). Calcule z(1)z^{(1)}, puis hh, puis les logits z(2)z^{(2)}, et donne la classe prédite (celle du plus grand logit, inutile de calculer le softmax).

Exercice 2. Un modèle de régression prédit y^=(3,5,2)\hat{y} = (3, 5, 2) pour trois exemples dont les cibles sont y=(2,5,4)y = (2, 5, 4). Calcule l’erreur quadratique moyenne.

Exercice 3. Cible t=1t = 1. Calcule l’entropie croisée binaire H=lnpH = -\ln p pour p=0,9p = 0{,}9, puis pour p=0,1p = 0{,}1, puis pour p=0,01p = 0{,}01. Compare chaque fois avec la MSE (p1)2(p - 1)^2. Que punit l’entropie croisée que la MSE laisse passer ?

Exercice 4. Un classifieur à 3 classes produit les logits z=(2,1,0)z = (2, 1, 0). Calcule les probabilités softmax, puis l’entropie croisée si la classe vraie est la classe 1 (one-hot y=(1,0,0)y = (1, 0, 0)).

En une phrase

Le forward pass calcule la prédiction en propageant l’entrée couche par couche, la fonction de coût lui donne une note, et tout l’apprentissage consistera à trouver les poids qui minimisent cette note dans le paysage de coût.

Quiz

Quiz
  1. 1. Dans un forward pass, dans quel sens circule l'information ?

  2. 2. À quoi sert la fonction softmax en sortie d’un classifieur ?

  3. 3. Pourquoi préfère-t-on l’entropie croisée à la MSE pour la classification ?

  4. 4. Sur la surface de coût, qu'est-ce qui varie d'un point à l'autre ?

  5. 5. Que représente le creux (le minimum) de la surface de coût ?

Vers le chapitre 7

On sait maintenant calculer la note d’un réseau et la lire comme une altitude dans le paysage de coût. Reste la question décisive : dans quelle direction modifier chaque poids pour faire baisser cette note ? Il faut savoir de quel côté penche la surface autour du point courant. C’est exactement ce que mesure une dérivée. Le chapitre 7 introduit les dérivées et la règle de la chaîne, l’outil qui transformera ce paysage statique en un chemin de descente.

Sources

  • Goodfellow, I., Bengio, Y. & Courville, A. (2016). Deep Learning. MIT Press. Chapitres 5 et 6. https://www.deeplearningbook.org
  • Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer. Chapitres 4 et 5 (entropie croisée).
  • Bridle, J. S. (1990). Probabilistic interpretation of feedforward classification network outputs, with relationships to statistical pattern recognition. Dans Neurocomputing, Springer. DOI 10.1007/978-3-642-76153-9_28 (origine de softmax).