# Qu’est-ce qu’un réseau résiduel (ResNet), et pourquoi a-t-il permis aux réseaux de neurones de devenir si profonds?

Date: 2021-08-15 · Author: Robert Scales · https://guidetoartificialintelligence.com/fr/apprendre/qu-est-ce-qu-un-reseau-residuel-resnet/

**Answer:** Un réseau résiduel, ou ResNet, est un réseau de neurones formé de blocs qui n’apprennent chacun qu’une petite modification de leur entrée, puis y rajoutent l’entrée d’origine par un raccourci. Présentée par Kaiming He et trois collègues de Microsoft Research dans un article mis en ligne le 10 décembre 2015, cette conception a rendu entraînables des réseaux de 152 couches, a remporté le concours ImageNet de 2015 et est devenue une brique de base de l’IA moderne.

En 2015, la leçon de l’apprentissage profond semblait claire : plus un réseau est profond, plus il voit de choses. Un réseau doté de plus de couches peut passer des contours aux textures, puis aux parties, puis aux objets entiers, et chaque gain de profondeur avait amélioré les résultats en reconnaissance d’images. Pourtant, les chercheurs se heurtaient toujours à un mur. Au-delà d’une certaine profondeur, ajouter des couches rendait les réseaux pires, et non meilleurs, même sur les images mêmes qui avaient servi à les entraîner.

Le 10 décembre 2015, quatre chercheurs de Microsoft Research ont mis en ligne sur arXiv un article intitulé « Deep Residual Learning for Image Recognition » qui a traversé ce mur de part en part. Leur astuce était un raccourci si simple qu’il tient en une ligne : laisser chaque bloc de couches transmettre son entrée telle quelle et y ajouter sa propre petite correction.

## Ce qui s’est passé, et qui y a participé

Les auteurs étaient Kaiming He et trois collègues : Xiangyu Zhang, Shaoqing Ren et Jian Sun. Leurs réseaux, qu’ils ont appelés **réseaux résiduels** ou **ResNets**, ont été testés sur ImageNet, une collection d’environ 1,28 million de photos d’entraînement classées en 1 000 catégories, qui sert de base à un concours annuel appelé le défi ImageNet.

Les résultats étaient frappants. L’équipe a entraîné des réseaux d’une profondeur allant jusqu’à 152 couches, environ huit fois plus profonds que les réseaux VGG bien connus, mais moins coûteux à exécuter. Un groupe de ces réseaux travaillant ensemble ne s’est trompé que sur 3,57 % des images de test, en comptant une réponse comme bonne si la bonne étiquette figurait parmi ses cinq meilleures suppositions. Cela lui a valu la première place de la tâche de classification d’ImageNet 2015. Les ResNets ont aussi pris la première place des tâches de détection et de localisation d’ImageNet, ainsi que des tâches de détection et de segmentation du concours COCO.

## Le problème : plus profond, c’était pire

L’article s’ouvre sur une énigme. L’équipe a entraîné deux réseaux « simples » ordinaires, l’un de 20 couches et l’autre de 56. Le plus profond avait une erreur *plus élevée*, non seulement sur de nouvelles images, mais aussi sur les images d’entraînement elles-mêmes. Cela écarte le surapprentissage (mémoriser l’ensemble d’entraînement). Le réseau plus profond était simplement plus difficile à entraîner.

Sur papier, cela n’a guère de sens. Prenez un bon réseau de 20 couches et ajoutez-y 36 couches qui ne font que recopier leur entrée sans la modifier; le résultat devrait être exactement aussi bon. Un réseau plus profond peut donc toujours faire au moins aussi bien, en théorie. En pratique, la méthode d’entraînement standard, qui ajuste chaque connexion un peu à la fois, n’arrivait pas à trouver cette solution. Apprendre à « ne rien faire » s’est révélé étonnamment difficile pour une pile de couches.

## Comment fonctionne l’apprentissage résiduel

He et ses collègues ont changé ce qu’on demande d’apprendre à chaque bloc. Au lieu de produire une sortie entièrement nouvelle, un bloc apprend seulement le **résidu**, la différence entre ce qu’il devrait produire et ce qu’il a reçu. Une **connexion raccourcie** fait ensuite passer l’entrée d’origine autour du bloc et la rajoute :

> sortie = entrée + correction

Si un bloc n’a rien d’utile à ajouter, il lui suffit de ramener sa correction vers zéro, ce qui est facile, et l’entrée passe intacte. Les raccourcis n’ajoutent aucun nombre supplémentaire à apprendre et presque aucun calcul de plus.

Une analogie de tous les jours : réviser un document avec le « suivi des modifications ». Plutôt que de retaper toute la page à chaque ronde de révision, chaque réviseur marque seulement ce qui doit changer. Si un réviseur n’a rien à dire, la page passe telle quelle. Avec cinquante réviseurs à la file, le suivi des modifications risque beaucoup moins de déformer le texte que cinquante retranscriptions complètes.

Voici un exemple jouet avec un seul nombre qui traverse trois blocs :

| Bloc | Entrée | Correction apprise | Sortie (entrée + correction) |
|---|---|---|---|
| 1 | 5,0 | +0,8 | 5,8 |
| 2 | 5,8 | 0,0 (rien d’utile à ajouter) | 5,8 |
| 3 | 5,8 | −0,3 | 5,5 |

Le bloc 2 a appris à ne pas nuire, et le signal survit intact. Le même raccourci aide aussi pendant l’entraînement, quand les signaux d’erreur remontent le réseau à rebours : ils peuvent circuler le long des raccourcis au lieu de s’estomper en traversant des dizaines de couches.

> **À essayer :** prenez une phrase et faites-la passer le long d’une chaîne de cinq amis. À la première ronde, chaque ami la réécrit de mémoire. À la deuxième, chaque ami reçoit la phrase écrite et ne peut que rayer ou ajouter un mot ou deux. Comparez à quel point chaque version finale est proche de l’originale.

L’article a aussi poussé l’idée à l’extrême. Sur un ensemble d’images plus petit appelé CIFAR-10, l’équipe a entraîné un réseau de plus de 1 000 couches. L’entraînement a réussi, même si ce réseau a obtenu un résultat légèrement moins bon sur de nouvelles images qu’une version de 110 couches, probablement parce qu’il était beaucoup plus gros que ce qu’un si petit jeu de données exigeait.

## Pourquoi c’était important

Les connexions résiduelles ne sont pas nées de rien. Des chercheurs avaient déjà essayé des connexions de « saut », et les réseaux LSTM utilisés pour le langage, tout comme les « highway networks » publiés en 2015, contiennent des idées apparentées. Mais ResNet a montré, de façon convaincante et à grande échelle, qu’un simple raccourci d’identité suffit à rendre entraînables des réseaux très profonds.

La conception s’est répandue rapidement. Des travaux de suivi comme Wide ResNets et DenseNet en 2016, puis ResNeXt en 2017, s’en sont inspirés, et les modèles ResNet sont devenus un point de départ courant pour la reconnaissance d’images.

## Où trouve-t-on des connexions résiduelles dans les modèles d’IA d’aujourd’hui?

Presque partout. Le Transformer de 2017, la conception derrière les grands modèles de langage d’aujourd’hui, entoure chacune de ses sous-couches d’une connexion résiduelle et cite l’article sur ResNet pour cette idée. Cela signifie que BERT, GPT-2 et GPT-3 reposent tous sur la même structure « entrée plus correction », empilée des dizaines de fois. Sans elle, les Transformers très profonds seraient extrêmement difficiles à entraîner.

Les connexions résiduelles apparaissent aussi dans des systèmes de jeu et de science. AlphaGo Zero de DeepMind, de 2017, est construit sur un réseau résiduel, et le système AlphaFold, qui prédit la structure des protéines, en utilise aussi.

Si vous regardez à l’intérieur de presque n’importe quel réseau de neurones moderne, vous trouverez l’idée d’une ligne de décembre 2015 : garder ce qu’on a, et n’apprendre que ce qu’il faut changer.

## Sources

- Deep Residual Learning for Image Recognition: https://arxiv.org/abs/1512.03385
- Residual neural network: https://en.wikipedia.org/w/index.php?title=Residual_neural_network&oldid=1038140520
- Attention Is All You Need: https://arxiv.org/abs/1706.03762
