Qu'est-ce que Réseau de neurones convolutif (CNN) ?

Réseau de neurones construit autour de couches de convolution, qui calculent des sommes de produits en faisant glisser un petit filtre (noyau) sur l'entrée, auxquelles s'ajoutent des couches de pooling, etc. Comme le même filtre est réutilisé sur toute l'entrée, il a moins de paramètres qu'un réseau à couches entièrement connectées et extrait des caractéristiques locales, comme les contours ou les motifs d'une image, quelle que soit leur position. On l'utilise pour la reconnaissance d'images, la détection d'objets, le traitement de la parole, etc.

Nom japonais: 畳み込みニューラルネットワーク(CNN)

« Réseau de neurones convolutif (CNN) » apparaît dans 2 questions d'entraînement réparties sur 2 thèmes, dont Pile matérielle et logicielle de l'IA, Bases de l'apprentissage automatique.

Domaine: Bases de l'apprentissage automatique

Calcul d'une couche de convolution

Dans une couche de convolution, on fait glisser par exemple un filtre 3×3 depuis le coin supérieur gauche de l'image avec un pas (stride) constant, en calculant à chaque position la somme des produits des pixels recouverts par les poids du filtre, ce qui produit une carte de caractéristiques (feature map). La taille de sortie vaut (N + 2P − F) ÷ S + 1, où N est la taille de l'entrée, F celle du filtre, P le remplissage (padding) et S le pas. Une couche utilise plusieurs filtres, dont chacun extrait une caractéristique différente : contours verticaux, contours horizontaux, variations de couleur, etc. Plus une couche est profonde, plus elle réagit à des caractéristiques grandes et complexes, comme des yeux ou des roues.

Pourquoi il a peu de paramètres

Une couche de convolution qui applique 64 filtres 3×3 à une entrée à 3 canaux compte 3 × 3 × 3 × 64 + 64 = 1792 paramètres, indépendamment de la taille de l'image d'entrée. Relier la même image 32×32×3 à une couche entièrement connectée à 64 sorties exige 32 × 32 × 3 × 64 + 64 = 196 672 paramètres. Le fait de ne regarder que les pixels voisins (connexions locales) et de réutiliser le même filtre sur toute l'image (partage des poids) permet d'apprendre efficacement avec peu de paramètres.

Pooling et architecture d'ensemble

La couche de pooling prend le maximum (max-pooling) ou la moyenne de chaque zone, de 2×2 par exemple, pour réduire la taille des données et les calculs, et rendre le réseau moins sensible aux petits décalages de position. Un CNN typique empile plusieurs blocs formés d'une couche de convolution, d'une fonction d'activation (ReLU, etc.) et d'une couche de pooling, puis classe les données avec une couche entièrement connectée et la fonction softmax. Les connexions résiduelles, qui font passer le signal par-dessus des couches, permettent d'entraîner des réseaux profonds de plus de 100 couches.

S'entraîner : questions sur Réseau de neurones convolutif (CNN)

Dans les réseaux de neurones convolutifs, pourquoi le calcul de convolution est-il parfois converti en produit matriciel par une méthode comme im2col ?

  1. AParce que la conversion divise le nombre d'opérations par dix
  2. BParce qu'elle permet d'utiliser des bibliothèques de produit matriciel hautement optimisées et des unités de calcul matriciel comme les Tensor Cores
  3. CParce que la conversion réduit toujours la consommation mémoire
Afficher la réponse et l'explication

Réponse : B. Parce qu'elle permet d'utiliser des bibliothèques de produit matriciel hautement optimisées et des unités de calcul matriciel comme les Tensor Cores

im2col construit une grande matrice où les valeurs d'entrée de chaque fenêtre de convolution sont alignées en colonne, puis calcule la convolution par produit avec la matrice des filtres. Le chevauchement des fenêtres duplique les entrées et augmente la mémoire, mais les bibliothèques de produit matriciel optimisées depuis des décennies et les unités matricielles comme les Tensor Cores sont directement exploitables, ce qui accélère souvent l'ensemble. Il existe aussi des implémentations obtenant le même résultat sans duplication.

Questions fréquentes

Le calcul d'une couche de convolution est-il identique à la convolution mathématique ?

Dans la plupart des frameworks, on appelle convolution un calcul qui fait la somme des produits sans retourner le filtre, appelé corrélation croisée. Comme les poids du filtre sont déterminés par l'apprentissage, le fait de le retourner ou non n'influe pas sur les performances du modèle.

Un CNN peut-il servir pour autre chose que des images ?

Oui. On utilise des convolutions à une dimension pour les formes d'onde audio et les séries temporelles, et à trois dimensions pour les vidéos ou les images médicales en volume. Il convient aux données disposées en grille, où les données voisines sont liées entre elles.

« Réseau de neurones convolutif (CNN) » dans les explications

Questions mentionnant « Réseau de neurones convolutif (CNN) » (2)

  1. Dans les réseaux de neurones convolutifs, pourquoi le calcul de convolution est-il parfois converti en produit matriciel par une méthode comme im2col ?
  2. Quelle description de l'apprentissage par transfert, qui réutilise un modèle pré-entraîné sur une grande quantité de données pour une autre tâche disposant de peu de données, est correcte ?

Termes associés

Apprentissage par transfert (transfer learning) Algorithme des k-moyennes (k-means) Analyse en composantes principales (ACP) Apprentissage non supervisé Apprentissage par renforcement Apprentissage supervisé Descente de gradient (gradient descent) Fonction d'activation Matrice de confusion Précision et rappel (precision and recall)

Retour au glossaire