Une couche convolutionnelle est un composant central de nombreux réseaux de neurones, en particulier ceux utilisés pour le traitement d'images et de signaux. Contrairement aux couches entièrement connectées, qui relient chaque neurone d'entrée à chaque neurone de sortie, une couche convolutionnelle applique un ensemble de filtres apprenables (également appelés noyaux) sur l'entrée de manière glissante. Cette opération, connue sous le nom de convolution, détecte des caractéristiques locales telles que les bords, les coins ou les textures, et produit des cartes de caractéristiques qui mettent en évidence où ces motifs apparaissent. La conception de la couche réduit le nombre de paramètres par rapport aux couches denses et offre une invariance par translation, ce qui signifie qu'un motif peut être reconnu indépendamment de sa position dans l'entrée.
Les couches convolutionnelles ont été inspirées par la recherche sur le cortex visuel biologique, notamment par David Hubel et Torsten Wiesel dans les années 1960, qui ont découvert que les neurones du système visuel du chat répondent à des stimuli localisés. Les premières implémentations artificielles incluent le néocognitron de Kunihiko Fukushima en 1980, puis l'architecture LeNet de Yann LeCun dans les années 1990, qui utilisait des couches convolutionnelles pour la reconnaissance de chiffres manuscrits. Depuis, les couches convolutionnelles sont devenues omniprésentes dans l'apprentissage profond, alimentant des applications allant de l'imagerie médicale à la conduite autonome.
Fonctionnement et hyperparamètres
Une couche convolutionnelle prend un tenseur d'entrée (par exemple, une image 2D avec plusieurs canaux de couleur) et applique un ensemble de filtres. Chaque filtre est une petite matrice de poids, généralement de taille 3x3 ou 5x5, qui glisse sur l'entrée avec un pas (taille de déplacement) spécifié. À chaque position, la couche calcule le produit scalaire entre les poids du filtre et la zone correspondante de l'entrée, produisant une seule valeur de sortie. Le résultat est une carte d'activation 2D pour chaque filtre, et l'empilement de ces cartes le long de la dimension de profondeur forme le tenseur de sortie.
Les hyperparamètres clés incluent la taille du filtre, le pas, le remplissage et le nombre de filtres. Le remplissage (souvent un remplissage par zéros) contrôle les dimensions spatiales de la sortie, permettant à la couche de préserver la taille de l'entrée ou de la réduire. Le pas affecte le sous-échantillonnage ; des pas plus grands réduisent la résolution de sortie. Le nombre de filtres détermine la profondeur des cartes de caractéristiques de sortie, chaque filtre apprenant à détecter un type différent de caractéristique. Après la convolution, une fonction d'activation telle que ReLU (unité linéaire rectifiée) est généralement appliquée pour introduire la non-linéarité.
Partage des paramètres et connectivité locale
Deux propriétés distinguent les couches convolutionnelles des couches entièrement connectées : la connectivité locale et le partage des paramètres. La connectivité locale signifie que chaque neurone de sortie ne se connecte qu'à une petite région de l'entrée, reflétant l'idée que les pixels voisins sont plus corrélés que les pixels éloignés. Le partage des paramètres signifie que les mêmes poids de filtre sont utilisés sur toutes les positions spatiales, réduisant considérablement le nombre de paramètres apprenables. Par exemple, un filtre 3x3 avec 3 canaux d'entrée et 64 filtres de sortie ne possède que 333*64 = 1 728 poids, alors qu'une couche entièrement connectée traitant une image 256x256 nécessiterait des millions de poids. Cette efficacité rend les couches convolutionnelles réalisables pour des entrées de haute dimension et aide à prévenir le surapprentissage.
Rôle dans les architectures modernes
Les couches convolutionnelles sont la base de nombreuses architectures de réseaux classiques et contemporaines. Le réseau résiduel (ResNet), introduit par Kaiming He et ses collègues en 2015, utilise des couches convolutionnelles avec des connexions de saut pour entraîner des réseaux très profonds (par exemple, 50, 101 ou 152 couches) et a obtenu des résultats de pointe sur ImageNet. L'architecture U-Net, conçue pour la segmentation d'images biomédicales, emploie des couches convolutionnelles dans une structure encodeur-décodeur avec des connexions de saut pour préserver les détails spatiaux. De plus, les couches convolutionnelles sont souvent combinées avec la normalisation par lots pour stabiliser l'entraînement et avec le abandon pour la régularisation.
Au-delà des images, les couches convolutionnelles sont appliquées à l'audio (par exemple, les spectrogrammes), au texte (par exemple, la convolution au niveau des caractères) et aux données de séries temporelles. Elles sont également utilisées dans des modèles hybrides qui intègrent des transformeurs ou de l'attention multi-têtes pour des tâches comme la légende d'images. Bien que les transformeurs aient gagné en importance dans de nombreux domaines, les couches convolutionnelles restent essentielles pour les tâches nécessitant une extraction de caractéristiques locales et un traitement efficace d'entrées à haute résolution.
Entraînement et optimisation
Les couches convolutionnelles sont entraînées par rétropropagation, où les gradients sont calculés par rapport aux poids des filtres et propagés à travers le réseau. L'optimiseur standard est la descente de gradient stochastique (SGD) ou ses variantes comme Adam (voir optimiseur Adam). Des hyperparamètres tels que le programme de taux d'apprentissage et l'initialisation des poids affectent significativement la convergence. Des techniques comme l'augmentation de données (par exemple, recadrages aléatoires, retournements) aident à améliorer la généralisation. Pendant l'entraînement, les filtres apprennent progressivement à détecter des caractéristiques de plus en plus complexes : les couches précoces capturent les bords et les couleurs, tandis que les couches plus profondes les combinent en parties d'objets et en objets complets.
Limites et alternatives
Les couches convolutionnelles présentent des limites, notamment un champ réceptif fixe qui ne croît qu'avec la profondeur, ce qui peut être inefficace pour capturer des dépendances à longue portée. Elles nécessitent également un réglage minutieux des hyperparamètres et peuvent être intensives en calcul, surtout pour de grandes entrées. Les alternatives et améliorations incluent les convolutions dilatées (qui élargissent le champ réceptif sans augmenter les paramètres), les convolutions séparables en profondeur (utilisées dans MobileNet pour l'efficacité) et les mécanismes d'attention qui pondèrent dynamiquement les positions spatiales. Malgré ces alternatives, les couches convolutionnelles restent un bloc de construction robuste et largement utilisé dans les systèmes de apprentissage profond, soutenues par des optimisations matérielles de sociétés comme NVIDIA et Google Cloud.