Contactez-moi

Définition Grouped Convolutions

Grouped Convolutions

Grouped Convolutions, ou convolutions en groupes, désignent une technique d’opération de convolution utilisée principalement dans les réseaux de neurones convolutifs (CNN). Il s’agit d’une variante de la convolution standard où les canaux d’entrée et les filtres de convolution sont divisés en un certain nombre de groupes distincts, et les opérations de convolution sont effectuées indépendamment au sein de chaque groupe avant que leurs résultats ne soient concaténés.

Le concept fondamental des Grouped Convolutions repose sur la division du processus de convolution standard. Dans une convolution 2D standard, si une couche d’entrée a `C_in` canaux et que la couche de sortie doit avoir `C_out` canaux, chaque filtre de sortie (il y en a `C_out`) traite l’ensemble des `C_in` canaux d’entrée. Avec les Grouped Convolutions, les `C_in` canaux d’entrée sont divisés en `g` groupes, chacun contenant `C_in / g` canaux. De même, les `C_out` filtres (ou canaux de sortie) sont divisés en `g` groupes, chacun contenant `C_out / g` filtres. Crucialement, le i-ème groupe de filtres ne convolue qu’avec le i-ème groupe de canaux d’entrée. Les sorties de ces `g` convolutions indépendantes, chacune produisant `C_out / g` canaux, sont ensuite concaténées le long de la dimension des canaux pour former la couche de sortie finale avec `C_out` canaux. Le nombre de groupes, `g`, est un hyperparamètre clé de cette opération.

L’importance majeure des Grouped Convolutions réside dans leur capacité à réduire considérablement la complexité computationnelle et le nombre de paramètres d’un réseau de neurones, par rapport aux convolutions standard équivalentes en termes de dimensions d’entrée et de sortie. Le nombre de paramètres passe de `(taille_filtre * taille_filtre * C_in * C_out)` pour une convolution standard à `(taille_filtre * taille_filtre * (C_in / g) * (C_out / g)) * g = (taille_filtre * taille_filtre * C_in * C_out) / g`. De même, le coût computationnel (mesuré en FLOPs) est réduit d’un facteur `g`. Cette efficacité accrue permet de construire des réseaux plus profonds ou plus larges (avec plus de canaux) pour une même enveloppe computationnelle, ou de déployer des modèles sur des appareils aux ressources limitées comme les smartphones ou les systèmes embarqués. De plus, elles peuvent encourager les filtres à apprendre des caractéristiques plus spécialisées, car chaque filtre n’opère que sur un sous-ensemble des canaux d’entrée.

Les Grouped Convolutions ont trouvé des applications pratiques significatives dans de nombreuses architectures de réseaux de neurones profonds. L’une des premières utilisations notables, bien que motivée par des contraintes matérielles, fut dans AlexNet (2012), où l’entraînement était réparti sur deux GPU, chaque GPU traitant un groupe de canaux. Plus tard, l’architecture ResNeXt (2017) a systématisé l’utilisation des Grouped Convolutions comme un moyen fondamental d’améliorer la performance en augmentant la « cardinalité » (le nombre de groupes) comme une nouvelle dimension d’amélioration des modèles, aux côtés de la profondeur et de la largeur. Les architectures MobileNet et ShuffleNet les utilisent aussi, souvent en combinaison avec d’autres techniques d’efficacité. Elles sont particulièrement courantes dans les modèles destinés à la vision par ordinateur pour des tâches comme la classification d’images, la détection d’objets et la segmentation sémantique, surtout lorsque l’efficacité est une priorité.

Il existe plusieurs nuances et variations importantes du concept de Grouped Convolutions. Lorsque le nombre de groupes `g` est égal à 1, l’opération se réduit à une convolution standard. À l’autre extrême, lorsque le nombre de groupes `g` est égal au nombre de canaux d’entrée `C_in` (et donc aussi au nombre de canaux de sortie `C_out`), chaque filtre traite un seul canal d’entrée. Cette configuration est connue sous le nom de Convolution Depthwise (convolution séparable en profondeur, ou plus précisément la partie « depthwise » de celle-ci). Les Convolutions Depthwise sont un cas particulier très important et largement utilisé des Grouped Convolutions. Pour pallier la limitation du flux d’information entre les groupes, des architectures comme ShuffleNet introduisent une opération de « channel shuffling » après les Grouped Convolutions pour mélanger les canaux entre les différents groupes avant la couche suivante.

Plusieurs concepts sont étroitement liés aux Grouped Convolutions. La Convolution Standard est le cas de base (`g=1`). La Convolution Depthwise est le cas extrême (`g=C_in`). La Convolution Pointwise (une convolution 1×1) est souvent utilisée en conjonction avec les Convolutions Depthwise (notamment dans les Convolutions Séparables en Profondeur ou Depthwise Separable Convolutions) pour recombiner les informations des canaux après l’étape depthwise. ResNeXt et ShuffleNet sont des architectures de réseaux qui exploitent intensivement les Grouped Convolutions. Il n’y a pas de véritable antonyme direct, mais on pourrait opposer leur structure « par groupe » ou « parcimonieuse » en termes de connexions inter-canaux à la structure « dense » d’une convolution standard où chaque sortie dépend de toutes les entrées.

Historiquement, l’idée des Grouped Convolutions est apparue avec l’architecture AlexNet en 2012. À l’époque, les GPU avaient une mémoire limitée, et l’entraînement du modèle nécessitait de le répartir sur deux GPU. Les Grouped Convolutions ont été utilisées pour diviser le modèle, chaque GPU traitant la moitié des canaux (g=2). Initialement vue comme une astuce d’ingénierie due à des limitations matérielles, l’approche a été réévaluée plus tard pour ses bénéfices intrinsèques en termes d’efficacité et de capacité de modélisation. Les travaux sur ResNeXt en 2017 ont démontré que l’augmentation du nombre de groupes (« cardinalité ») pouvait améliorer la précision des modèles de manière plus efficace que l’augmentation de la profondeur ou de la largeur seule, relançant l’intérêt pour cette technique comme un principe de conception architectural.

Les avantages principaux des Grouped Convolutions sont leur efficacité computationnelle et paramétrique, réduisant les besoins en calcul et en mémoire d’un facteur `g`. Cela permet des modèles plus rapides et plus légers. Elles peuvent aussi, dans certains cas, améliorer la précision en permettant des réseaux plus larges ou en encourageant l’apprentissage de caractéristiques diversifiées et spécialisées au sein des groupes. Cependant, elles présentent aussi des inconvénients potentiels. Le principal est la réduction du flux d’information entre les canaux appartenant à différents groupes au sein d’une même couche. Si les groupes restent trop isolés à travers les couches, cela peut nuire à la capacité du modèle à apprendre des relations complexes impliquant des combinaisons de caractéristiques issues de différents groupes. C’est pourquoi des techniques comme le channel shuffling (ShuffleNet) ont été développées. Le choix du nombre de groupes `g` est également un hyperparamètre qui peut nécessiter un ajustement pour équilibrer efficacité et performance. Enfin, bien que les implémentations soient courantes dans les bibliothèques de deep learning modernes, les optimisations matérielles spécifiques peuvent parfois être moins matures que pour les convolutions standard.