05 / 09 Du neurone au réseau multi-couches
  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 · 05 / 09

Du neurone au réseau multi-couches

Empiler des neurones pour résoudre XOR, puis approcher presque n'importe quelle fonction.

Au chapitre 4, on a démontré qu’un perceptron seul ne peut pas réaliser XOR : aucune droite ne sépare les points où XOR vaut 11 de ceux où il vaut 00. Mais on a aussi remarqué quelque chose. XOR s’écrit comme une combinaison de fonctions qui, elles, sont séparables : XOR(x1,x2)=(x1x2)¬(x1x2)\text{XOR}(x_1, x_2) = (x_1 \vee x_2) \wedge \neg(x_1 \wedge x_2).

Ce chapitre transforme cette remarque en méthode générale. On va brancher des neurones sur la sortie d’autres neurones, résoudre XOR à la main, comprendre quelles formes de frontières ce branchement permet de dessiner, puis découvrir jusqu’où l’idée nous mène : presque toutes les fonctions.

Résoudre XOR à la main

L’analogie des deux assistants

Imagine qu’on t’interdit de répondre directement à la question « les deux entrées sont-elles différentes ? ». En revanche, tu as le droit de poser deux questions plus simples à deux assistants, puis de combiner leurs réponses.

  • Premier assistant : « au moins une entrée vaut-elle 11 ? » C’est la fonction OR.
  • Deuxième assistant : « est-il faux que les deux entrées valent 11 ? » C’est la fonction NAND.

Réfléchis un instant. Quand exactement une entrée vaut 11, le premier assistant répond oui (il y en a bien au moins une) et le deuxième aussi (les deux ne valent pas 11 ensemble). Quand les deux valent 00, le premier répond non. Quand les deux valent 11, le deuxième répond non. Les deux assistants ne disent oui en même temps que dans le cas « exactement une entrée à 11 », qui est précisément XOR. Il te suffit donc de répondre oui quand tes deux assistants disent oui : un simple ET.

La couche cachée

Chaque assistant est un perceptron. On les place dans une couche cachée Couche cachée Couche intermédiaire d'un réseau de neurones, située entre la couche d'entrée et la couche de sortie. Ses neurones ne reçoivent ni les données brutes ni ne produisent la prédiction finale, ils calculent des représentations intermédiaires. Un réseau « profond » a plusieurs couches cachées. : une couche intermédiaire dont les sorties ne sont pas la réponse finale, mais des questions intermédiaires que la couche suivante va combiner. Le réseau obtenu, qui empile une ou plusieurs couches cachées entre l’entrée et la sortie, s’appelle un perceptron multicouches Perceptron multicouches Réseau de neurones organisé en couches successives (entrée, une ou plusieurs couches cachées, sortie), où chaque neurone applique une combinaison affine suivie d'une fonction d'activation. En empilant des neurones, il dépasse la limite du perceptron simple et réalise des fonctions non linéairement séparables comme XOR. Source : Rumelhart, Hinton & Williams, 1986 .

On reprend la convention de seuil du chapitre 4 : la fonction de Heaviside HH vaut 11 si son argument est positif ou nul, et 00 sinon. La couche cachée calcule deux valeurs h1h_1 et h2h_2 :

h1  =  H(x1+x20,5)(OR).h_1 \;=\; H(x_1 + x_2 - 0{,}5) \qquad (\text{OR}).

Cette équation se lit : h1h_1 vaut 11 dès que x1+x20,5x_1 + x_2 \geq 0{,}5, c’est-à-dire dès qu’au moins une des deux entrées vaut 11.

h2  =  H(1,5x1x2)(NAND).h_2 \;=\; H(1{,}5 - x_1 - x_2) \qquad (\text{NAND}).

Celle-ci se lit : h2h_2 vaut 11 tant que x1+x21,5x_1 + x_2 \leq 1{,}5, donc partout sauf quand les deux entrées valent 11 en même temps.

Le neurone de sortie calcule enfin le ET logique de h1h_1 et h2h_2 :

y  =  H(h1+h21,5)(AND).y \;=\; H(h_1 + h_2 - 1{,}5) \qquad (\text{AND}).

Il ne vaut 11 que si h1+h21,5h_1 + h_2 \geq 1{,}5, c’est-à-dire seulement si h1h_1 et h2h_2 valent tous les deux 11. Trois perceptrons, organisés en deux couches, réalisent donc XOR : ce qu’un perceptron isolé ne pouvait pas faire.

Construis-le toi-même

Les deux neurones cachés sont câblés en OR et NAND. À toi de régler le neurone de sortie (ses poids v1v_1, v2v_2 sur h1h_1, h2h_2, et son biais cc) pour obtenir un ET, et de voir la table de vérité passer au vert.

v₁ = 1.00v₂ = 1.00x₁x₂ORNANDANDOR = step(x₁ + x₂ - 0,5)NAND = step(1,5 - x₁ - x₂)

Construire XOR avec une couche cachée

poids sur OR (v₁)1.00
poids sur NAND (v₂)1.00
biais de sortie (c)-1.00
Table de vérité
(x₁, x₂)ORNANDyXOR
(0, 0)0110
(1, 0)1111
(0, 1)1111
(1, 1)1010
Sorties correctes2 / 4

Trois choses à observer en jouant :

  • Tant que la sortie n’est pas un vrai ET, au moins une des quatre lignes reste rouge. Le bouton « Révéler la solution (AND) » pose v1=v2=1v_1 = v_2 = 1 et c=1,5c = -1{,}5.
  • La colonne XOR (la cible) et la colonne yy (ce que calcule ton réseau) ne coïncident sur les quatre lignes que lorsque la sortie réalise exactement le ET de OR et NAND.
  • Les deux neurones cachés ont transformé le problème : dans les nouvelles coordonnées (h1,h2)(h_1, h_2), XOR est devenu linéairement séparable, alors qu’il ne l’était pas dans les coordonnées (x1,x2)(x_1, x_2).

Ce que des couches permettent de dessiner

L’analogie des clôtures

Un neurone seul, c’est une clôture droite posée dans un champ : d’un côté les bêtes, de l’autre rien. Avec une seule clôture, tu ne peux délimiter qu’un demi-champ. Mais avec plusieurs clôtures droites, et la règle « une bête est enfermée seulement si elle est du bon côté de toutes les clôtures à la fois », tu encercles une parcelle dont tu choisis la forme.

Du demi-plan à la courbe

Formalisons. La frontière de décision Frontière de décision Lieu des points de l'espace d'entrée où le modèle bascule d'une classe à l'autre, c'est-à-dire où sa sortie change. Pour un neurone seul c'est un hyperplan ; pour un réseau multi-couches elle peut devenir polygonale, puis courbe. Source : Bishop, 2006 d’un neurone est l’hyperplan où sa sortie bascule. Un neurone seul partage donc le plan en deux demi-plans. Une couche de kk neurones suivie d’un neurone de sortie qui calcule leur ET garde uniquement les points situés du bon côté des kk frontières simultanément : l’intersection de kk demi-plans, c’est-à-dire une région convexe (un polygone). En ajoutant une couche de plus, on peut réunir plusieurs de ces régions convexes, et obtenir des formes quelconques, y compris non convexes.

Composer une frontière de décision

Neurones cachés (k)1
k = 1 : un seul demi-plan, exactement comme un perceptron.

Région = intersection de k demi-plans. Un neurone caché trace une droite ; le ET logique de la couche de sortie ne garde que les points situés du bon côté des k droites à la fois.

Augmente k : le polygone circonscrit se rapproche du cercle. Avec assez de neurones, la frontière devient une courbe quelconque.

Trois choses à observer en jouant :

  • Avec k=1k = 1, la frontière est une simple droite, exactement comme un perceptron. Avec k=2k = 2, c’est une bande. À partir de k=3k = 3, c’est un polygone fermé.
  • Plus tu ajoutes de neurones cachés, plus le polygone a de côtés et plus il épouse le cercle. La frontière passe de linéaire à polygonale, puis tend vers une courbe.
  • Chaque neurone caché n’apporte qu’une seule droite. C’est leur combinaison par la couche suivante qui crée la richesse des formes.

La notation matricielle

Écrire la somme pondérée de chaque neurone séparément devient vite illisible dès qu’une couche en compte des centaines. La matrice du chapitre 2 résout ce problème : elle empile toutes les sommes pondérées d’une couche en une seule opération.

Pour une couche qui reçoit un vecteur d’entrée xRninx \in \mathbb{R}^{n_{\text{in}}} et produit noutn_{\text{out}} neurones, on rassemble les poids dans une matrice WRnout×ninW \in \mathbb{R}^{n_{\text{out}} \times n_{\text{in}}} et les biais dans un vecteur bRnoutb \in \mathbb{R}^{n_{\text{out}}}. La couche calcule alors :

a  =  f(Wx+b).a \;=\; f(Wx + b).

Cette équation se lit : on multiplie le vecteur d’entrée xx par la matrice de poids WW, on ajoute le vecteur de biais bb, puis on applique la fonction d’activation ff à chaque composante du résultat. Chaque ligne de WW est le vecteur de poids d’un neurone de la couche, et chaque composante de bb son biais. Une seule ligne d’algèbre remplace ainsi noutn_{\text{out}} sommes pondérées écrites à la main.

Un réseau à une couche cachée : deux entrées, une couche cachée, une sortie

Le perceptron multicouches comme composition

Un réseau profond empile ces couches : la sortie de l’une devient l’entrée de la suivante. Avec LL couches, le réseau calcule

a(L)  =  f(W(L)f(W(1)x+b(1))+b(L)).a^{(L)} \;=\; f\big(W^{(L)} \cdots f(W^{(1)} x + b^{(1)}) \cdots + b^{(L)}\big).

C’est une composition de fonctions : on applique une couche, puis une autre au résultat de la première, et ainsi de suite. Or cette composition n’a d’intérêt que parce qu’une activation non linéaire est intercalée entre chaque couche. Sans elle, composer plusieurs couches linéaires donnerait encore une fonction linéaire (on l’a vu au chapitre 3), et tout l’empilement s’effondrerait en une seule couche. C’est exactement l’alternance « couche linéaire, puis activation non linéaire » qui donne au réseau son pouvoir expressif Pouvoir expressif Étendue des fonctions qu'un modèle peut représenter en faisant varier ses paramètres. Un perceptron simple n'exprime que des séparations linéaires ; ajouter des couches cachées élargit le pouvoir expressif jusqu'à pouvoir approcher n'importe quelle fonction continue. Source : Goodfellow, Bengio & Courville, 2016 .

Jusqu’où peut-on aller ? Le théorème d’approximation universelle

L’intuition des bosses

Prends une fonction d’activation en forme de marche douce, comme la sigmoïde du chapitre 3. La différence de deux sigmoïdes légèrement décalées dessine une bosse : une fonction qui vaut presque zéro partout, sauf sur un petit intervalle où elle forme une butte. En additionnant beaucoup de bosses, placées et dosées comme il faut, tu peux épouser le profil de n’importe quelle courbe continue, comme on approche le relief d’une montagne en empilant des briques de plus en plus fines.

Une couche cachée fait exactement cela : chaque neurone caché fabrique une marche, et le neurone de sortie en fait la somme pondérée. Avec assez de neurones, cette somme approche d’aussi près qu’on veut la fonction cible.

L’énoncé

C’est le contenu du théorème d’approximation universelle Théorème d'approximation universelle Résultat (Cybenko 1989, Hornik 1989) établissant qu'un réseau à une seule couche cachée, avec assez de neurones et une activation non polynomiale, peut approcher d'aussi près qu'on veut n'importe quelle fonction continue sur un domaine borné. Il garantit l'existence d'un tel réseau, pas qu'on sache l'apprendre. Source : Cybenko, 1989 ; Hornik, 1989 .

Exercices papier-crayon

Exercice 1 : vérifier la construction de XOR

Avec h1=H(x1+x20,5)h_1 = H(x_1 + x_2 - 0{,}5), h2=H(1,5x1x2)h_2 = H(1{,}5 - x_1 - x_2) et y=H(h1+h21,5)y = H(h_1 + h_2 - 1{,}5), calcule h1h_1, h2h_2 et yy sur les quatre entrées, et vérifie que yy reproduit bien XOR.

Exercice 2 : compter les paramètres

On considère un réseau d’architecture 2312 \to 3 \to 1 : deux entrées, une couche cachée de trois neurones, un neurone de sortie. Combien ce réseau a-t-il de paramètres (poids et biais) au total ?

Exercice 3 : la forme matricielle

Écris, en notation matricielle, les équations d’un réseau à deux entrées, une couche cachée de deux neurones et une sortie (2212 \to 2 \to 1). Précise les dimensions de chaque matrice de poids et de chaque vecteur de biais. La fonction d’activation est notée ff.

Exercice 4 : profondeur ou largeur ?

Le théorème d’approximation universelle affirme qu’une seule couche cachée suffit pour approcher n’importe quelle fonction continue. Pourquoi, en pratique, construit-on quand même des réseaux profonds (à plusieurs couches cachées) plutôt que de tout mettre dans une seule couche très large ?

En une phrase

Un neurone trace une droite ; empiler des neurones en couches, avec une activation non linéaire intercalée, suffit à dessiner n’importe quelle frontière, et même à approcher presque n’importe quelle fonction.

Quiz

Quiz
  1. 1. Pourquoi un perceptron simple ne peut-il pas réaliser XOR ?

  2. 2. Dans la construction à la main de XOR, que calcule le second neurone caché h₂ ?

  3. 3. Que représente géométriquement l’intersection de k demi-plans (une couche dont la sortie est un ET) ?

  4. 4. Que garantit le théorème d’approximation universelle ?

  5. 5. Universel implique-t-il apprenable ?

Vers le chapitre 6 : mesurer l’erreur pour apprendre

On sait maintenant qu’un réseau multi-couches peut tout exprimer. Il reste la vraie question, celle que le théorème d’approximation universelle laisse ouverte : comment régler ses poids sans les poser à la main, comme on vient de le faire pour XOR ?

La première brique de la réponse est de savoir mesurer à quel point le réseau se trompe. Le chapitre 6 introduit le passage avant (le calcul de la sortie, couche après couche) et la fonction de coût, qui chiffre l’écart entre la prédiction et la cible. C’est cette mesure de l’erreur qui, aux chapitres 7 et 8, guidera l’ajustement automatique des poids.

Sources

  • Cybenko, G. (1989). « Approximation by superpositions of a sigmoidal function. » Mathematics of Control, Signals and Systems 2(4), 303-314. DOI 10.1007/BF02551274
  • Hornik, K., Stinchcombe, M. & White, H. (1989). « Multilayer feedforward networks are universal approximators. » Neural Networks 2(5), 359-366. DOI 10.1016/0893-6080(89)90020-8
  • Rumelhart, D. E., Hinton, G. E. & Williams, R. J. (1986). « Learning representations by back-propagating errors. » Nature 323, 533-536. DOI 10.1038/323533a0
  • Leshno, M., Lin, V. Y., Pinkus, A. & Schocken, S. (1993). « Multilayer feedforward networks with a nonpolynomial activation function can approximate any function. » Neural Networks 6(6), 861-867. DOI 10.1016/S0893-6080(05)80131-5
  • Goodfellow, I., Bengio, Y. & Courville, A. (2016). Deep Learning, chapitre 6. MIT Press. deeplearningbook.org