Un bloc d'étranglement est un bloc résiduel spécialisé utilisé dans les réseaux de neurones profonds, en particulier dans l'architecture ResNet. Il a été introduit en 2015 par des chercheurs de Microsoft Research (dont Kaiming He, Xiangyu Zhang, Shaoqing Ren et Jian Sun) pour la reconnaissance d'images, et le réseau résultant a remporté le défi de reconnaissance visuelle à grande échelle ImageNet (ILSVRC) de cette année-là. Le bloc est conçu pour réduire le coût de calcul tout en maintenant la puissance de représentation, ce qui permet d'entraîner des réseaux très profonds avec des centaines de couches.
Le bloc d'étranglement est un raffinement du bloc résiduel standard. Dans un bloc résiduel standard, la fonction \(F(x)\) est généralement une pile de deux ou trois couches convolutives. Le bloc d'étranglement remplace cela par une pile de trois couches : une convolution 1x1 qui réduit la dimension des canaux, une convolution 3x3 qui opère sur la dimension réduite, et une autre convolution 1x1 qui restaure la dimension originale des canaux. Cette conception réduit le nombre de paramètres et d'opérations en virgule flottante (FLOPs) par rapport à l'utilisation directe de deux convolutions 3x3, tout en préservant la capacité d'apprendre des caractéristiques complexes.
Architecture
Un bloc d'étranglement se compose de trois couches convolutives. La première couche est une convolution 1x1 qui réduit le nombre de canaux par un facteur (généralement 4). Par exemple, si l'entrée a 256 canaux, la première convolution 1x1 la réduit à 64 canaux. La deuxième couche est une convolution 3x3 qui opère sur ces 64 canaux, effectuant l'extraction de caractéristiques spatiales. La troisième couche est une autre convolution 1x1 qui augmente le nombre de canaux à 256. L'entrée du bloc est ajoutée à la sortie via une connexion résiduelle, qui est un mappage d'identité contournant les couches convolutives.
La connexion résiduelle est définie comme \(y = F(x) + x\), où \(F(x)\) est la sortie de la pile de trois couches. Cette addition est possible car l'entrée et la sortie ont les mêmes dimensions. Si les dimensions d'entrée et de sortie diffèrent (par exemple, lorsque le bloc change le nombre de canaux), une connexion de projection est utilisée : \(y = F(x) + P(x)\), où \(P(x)\) est généralement une convolution 1x1 avec un pas de 2 pour correspondre aux dimensions spatiales.
Le bloc d'étranglement est utilisé dans ResNet-50, ResNet-101 et ResNet-152, qui sont des variantes plus profondes du ResNet-34 original. Dans ces réseaux, le bloc d'étranglement remplace les blocs résiduels à deux couches utilisés dans les versions moins profondes. La réduction du calcul permet au réseau d'avoir plus de couches sans augmentation proportionnelle du temps d'entraînement ou de l'utilisation de la mémoire.
Motivation
La motivation principale du bloc d'étranglement est l'efficacité computationnelle. Dans un bloc résiduel standard avec deux convolutions 3x3, le nombre de paramètres pour un nombre de canaux d'entrée donné \(C\) est \(2 \times 9 \times C^2 = 18C^2\). Dans un bloc d'étranglement, le nombre de paramètres est \(1 \times 1 \times C \times (C/4) + 3 \times 3 \times (C/4) \times (C/4) + 1 \times 1 \times (C/4) \times C = C^2/4 + 9C^2/16 + C^2/4 = (8/16 + 9/16)C^2 = 17C^2/16\), ce qui est approximativement 1.06C^2, soit environ 6 % des paramètres du bloc standard. Cette réduction est significative pour les grands nombres de canaux.
La conception d'étranglement aide également à la stabilité de l'entraînement. En réduisant le nombre de paramètres, le bloc réduit le risque de surajustement et permet des réseaux plus profonds. La connexion résiduelle, qui est un composant clé du bloc, aide à atténuer le problème de gradient vanishing, permettant un entraînement efficace de réseaux avec des centaines de couches.
Relation avec les réseaux résiduels
Le bloc d'étranglement est une implémentation spécifique du concept de bloc résiduel. La connexion résiduelle a été introduite dans l'article original de ResNet, qui a montré que l'ajout de mappages d'identité aux couches d'un réseau permet l'entraînement de réseaux très profonds. Le bloc d'étranglement est une optimisation de cette idée, rendant pratique l'entraînement de réseaux avec 50, 101 ou 152 couches.
Dans un réseau résiduel, les couches apprennent des fonctions résiduelles par rapport aux entrées des couches. Le bloc d'étranglement suit ce principe : les trois couches convolutives apprennent un résidu \(F(x)\), et la sortie est \(F(x) + x\). Cela permet au réseau d'apprendre des mappages d'identité si nécessaire, ce qui est bénéfique pour l'optimisation.
Le succès du bloc d'étranglement dans ResNet a influencé de nombreuses architectures ultérieures. Par exemple, U-Net utilise des connexions résiduelles dans sa structure d'encodeur-décodeur, et les modèles Transformer utilisent des connexions résiduelles dans leurs couches d'attention et de feed-forward. Le concept d'étranglement a également été adapté dans d'autres domaines, tels que les grands modèles de langage et les modèles d'IA générative.
Efficacité computationnelle
L'efficacité computationnelle du bloc d'étranglement est mesurée en termes de FLOPs (opérations en virgule flottante). Pour un tenseur d'entrée de taille \(H \times W \times C\), un bloc résiduel standard avec deux convolutions 3x3 nécessite approximativement \(2 \times 9 \times C^2 \times H \times W\) FLOPs. Un bloc d'étranglement avec un facteur de réduction de 4 nécessite approximativement \(1 \times 1 \times C \times (C/4) \times H \times W + 3 \times 3 \times (C/4) \times (C/4) \times H \times W + 1 \times 1 \times (C/4) \times C \times H \times W = (C^2/4 + 9C^2/16 + C^2/4) \times H \times W = (17C^2/16) \times H \times W\). Cela représente environ 6 % des FLOPs du bloc standard.
Cette réduction est particulièrement importante pour l'entraînement sur du matériel avec une mémoire ou une puissance de calcul limitée, comme les instances AWS ou les TPU Google Cloud. Elle permet également une inférence plus rapide, ce qui est critique pour les applications en temps réel comme les voitures autonomes de Waymo ou Tesla Autopilot.
Variantes et améliorations
Plusieurs variantes du bloc d'étranglement ont été proposées. Une variante courante est le bloc d'étranglement à pré-activation, où la normalisation par lots et les fonctions d'activation sont appliquées avant les convolutions plutôt qu'après. Cela a été montré pour améliorer l'entraînement et la régularisation dans des travaux ultérieurs.
Une autre variante est le bloc d'étranglement inversé, utilisé dans des modèles comme MobileNetV2. Dans cette conception, la convolution 1x1 élargit d'abord la dimension des canaux, puis une convolution 3x3 en profondeur opère sur la dimension élargie, et une autre convolution 1x1 la réduit à nouveau. Cela est opposé au bloc d'étranglement standard, mais c'est plus efficace pour les appareils mobiles et embarqués.
Dans la normalisation par lots et la normalisation de couche, le bloc d'étranglement inclut souvent des couches de normalisation entre les convolutions. La connexion résiduelle aide à stabiliser la variance des entrées des couches, et certains travaux suggèrent de mettre à l'échelle la connexion résiduelle par \(1/L\), où \(L\) est le nombre total de couches résiduelles, pour stabiliser davantage l'entraînement.
Applications
Le bloc d'étranglement est utilisé dans de nombreux modèles de pointe. En vision par ordinateur, c'est le bloc de construction central de ResNet, qui est largement utilisé pour la classification d'images, la détection d'objets et la segmentation. Par exemple, Intuitive Surgical utilise l'apprentissage profond pour l'analyse d'images médicales, et Fermata utilise la vision par ordinateur pour l'agriculture.
En traitement du langage naturel, les connexions résiduelles sont utilisées dans les modèles Transformer, qui sont la base des grands modèles de langage comme GPT de OpenAI et Claude d'Anthropic. Bien que ces modèles n'utilisent pas de convolutions 1x1, le concept de connexion résiduelle est emprunté à ResNet.
En apprentissage par renforcement, l'architecture ResNet avec des blocs d'étranglement a été utilisée dans des systèmes comme AlphaGo Zero et AlphaStar de DeepMind, qui utilisent des réseaux résiduels pour traiter les états du plateau ou les écrans de jeu.
Impact sur l'apprentissage profond
Le bloc d'étranglement a eu un impact significatif sur le domaine de l'apprentissage profond. En permettant l'entraînement de réseaux très profonds, il a contribué aux progrès rapides dans la reconnaissance d'images et d'autres tâches. L'idée d'utiliser des convolutions 1x1 pour réduire le calcul a été adoptée dans de nombreuses architectures ultérieures, y compris U-Net et divers modèles génératifs.
La connexion résiduelle, qui est un composant clé du bloc d'étranglement, est devenue un motif standard dans la conception de réseaux de neurones. Elle est utilisée dans les modèles Transformer, les grands modèles de langage et de nombreuses autres architectures. Le bloc d'étranglement est un exemple parfait de la manière dont les innovations architecturales peuvent conduire à des améliorations significatives en termes de performance et d'efficacité.