Réseaux convolutifs pour l'image
Pourquoi un MLP est absurde sur des images, comment se calcule une convolution, et comment lire les dimensions d'un CNN réel de bout en bout.
Réseaux convolutifs pour l'image
Prenez une photo couleur de 224 × 224 pixels et branchez-la sur une couche dense de 1000 unités. Faites le calcul : $224 \times 224 \times 3 = 150,528$ entrées, multipliées par 1000 sorties, plus les biais. Cent cinquante millions de paramètres. Pour une seule couche, sur une seule image de résolution modeste. Six cents mégaoctets de poids avant d'avoir commencé à apprendre quoi que ce soit.
Le problème n'est pourtant pas d'abord une question de taille. C'est que ce modèle traite l'image comme un sac de 150 528 nombres indépendants. Le pixel en haut à gauche et son voisin immédiat sont, pour lui, aussi étrangers l'un à l'autre que deux pixels situés aux coins opposés. Toute la structure de l'image — le fait que le voisinage compte, qu'un contour est un contour où qu'il se trouve — est jetée avant le premier calcul. Le réseau devra la réapprendre à partir des exemples, ce qui est possible mais exige une quantité de données absurde pour redécouvrir une chose qu'on savait déjà.
Les réseaux convolutifs inscrivent cette connaissance dans l'architecture. Deux hypothèses seulement : les motifs utiles sont locaux, et un motif utile en un endroit l'est aussi ailleurs. La première remplace la connexion totale par un petit voisinage. La seconde permet de réutiliser les mêmes poids partout dans l'image. Ces deux idées font tomber les 150 millions de paramètres à quelques milliers, et surtout elles fournissent au modèle une structure qu'il n'a plus à deviner.