Apprentissage de base en apprentissage profond - le rôle du noyau de convolution 1x1 (dans CNN)

avant-propos

Je n'entrerai pas dans les détails du réseau de neurones convolutifs ici, j'ai fait une intégration par moi-même grâce à des informations lues par des blogueurs, et le patron va le contourner.
Le rôle du noyau de convolution 1x1 peut être résumé comme suit

  1. Augmenter la profondeur du réseau (augmenter le nombre de mappages non linéaires)
  2. Ascension dimensionnelle / Réduction dimensionnelle
  3. Échange d'informations entre les canaux
  4. Réduire les paramètres du noyau de convolution (modèle simplifié)

insérez la description de l'image ici

1. Convolution ordinaire

insérez la description de l'image ici

Ici, nous montrons d'abord l'une de nos méthodes de convolution les plus courantes (le nombre de canaux est de 1), une image 5x5 est effrayée et un résultat 3x3 est obtenu en extrayant des caractéristiques via un noyau de convolution 3x3. Si le noyau de convolution ici est 1x1, alors l'effet est le suivant
insérez la description de l'image ici

2. Fonction noyau de convolution 1x1

2.1 Augmenter la profondeur du réseau (augmenter le nombre de mappages non linéaires)

Tout d'abord, comprenez directement à partir de la profondeur du réseau. Bien que le noyau de convolution 1x1 soit petit, c'est aussi un noyau de convolution. L'ajout d'une couche de convolution augmentera naturellement la profondeur du réseau.
Le noyau de convolution 1x1 peut augmenter considérablement les caractéristiques non linéaires (en utilisant la fonction d'activation non linéaire ultérieure) tout en gardant l'échelle de la carte de caractéristiques inchangée (c'est-à-dire sans perte de résolution) et rendre le réseau très profond. Et le processus de convolution du noyau de convolution 1x1 est équivalent au processus de calcul de la connexion complète.En ajoutant une fonction d'activation non linéaire, la non linéarité du réseau peut être augmentée, de sorte que le réseau peut exprimer des caractéristiques plus complexes.
Plus précisément, citant le contenu du blog "frank909":
En fait, le problème est de creuser, quels devraient être les avantages d'augmenter la profondeur du réseau? Pourquoi devez-vous utiliser 1x1 pour augmenter la profondeur ? Les autres ne peuvent-ils pas ?

En fait, cela implique le problème du champ réceptif. Nous savons que plus le noyau de convolution est grand, plus le champ réceptif d'un seul nœud sur le featuremap qu'il génère est grand. À mesure que la profondeur du réseau augmente, le champ réceptif du nœud sur le dernier featuremap est également plus grand. Par conséquent, les caractéristiques deviennent de plus en plus abstraites.

Mais parfois, on veut approfondir le réseau sans augmenter le champ récepteur, afin d'introduire plus de non-linéarité.

Et le noyau de convolution 1x1 est capable de le faire.

Nous savons que la taille de l'image générée après convolution est affectée par la taille et l'étendue du noyau de convolution, mais si le noyau de convolution est 1x1 et que l'étendue est également de 1, la taille de l'image générée ne changera pas.

Mais généralement, un processus de convolution comprend une fonction d'activation, telle que Sigmoid et Relu.

Par conséquent, lorsque la taille de l'entrée ne change pas, une plus grande non-linéarité est introduite, ce qui améliorera la capacité d'expression du réseau neuronal.

2.2. Amélioration de dimension/réduction de dimension

En fait, l'augmentation de la dimensionnalité et la réduction de la dimensionnalité se réfèrent ici spécifiquement au changement du nombre de canaux. Après avoir déterminé la taille du noyau de convolution, notre hauteur et notre largeur restent inchangées, de sorte que la dimension ici se réfère spécifiquement aux canaux. Nous modifions les canaux de la carte des caractéristiques convolutives en modifiant le nombre de noyaux de convolution pour obtenir l'effet d'amélioration et de réduction de la dimensionnalité. De cette façon, le volume de données d'origine peut être augmenté ou diminué.
Les deux exemples suivants peuvent clairement voir l'effet
insérez la description de l'image ici

2.2.1 Mise à niveau des dimensions

insérez la description de l'image ici

2.2.2 Réduction de dimensionnalité

insérez la description de l'image ici

insérez la description de l'image ici

En fait, on peut clairement voir que, qu'il s'agisse d'une augmentation ou d'une réduction de dimension, nous y parvenons tous en modifiant le nombre de noyaux de convolution.Le nombre de canaux de la carte de caractéristiques convolutives est cohérent avec le nombre de noyaux de convolution.Ici, en fait, non seulement le noyau de convolution 1x1 peut réaliser cette fonction, mais aussi le noyau de convolution d'autres tailles, alors pourquoi choisissons-nous le noyau de convolution 1x1 ?

2.2.3 Raisons d'utiliser le noyau de convolution 1x1 pour augmenter/réduire la dimensionnalité

Lorsque nous voulons simplement modifier le nombre de canaux, le noyau de convolution 1x1 est le plus petit choix, car le noyau de convolution supérieur à 1x1 augmentera sans aucun doute la quantité de paramètres de calcul , et la mémoire augmentera également en conséquence, donc je veux juste simplement Pour améliorer ou réduire le canal de la carte de caractéristiques, il est plus approprié de choisir un noyau de convolution 1x1, qui utilisera moins de paramètres de poids .

2.3 Interaction des informations entre canaux

Le noyau de convolution 1x1 n'a qu'un seul paramètre. Lorsqu'il agit sur une carte de caractéristiques multicanal, il équivaut à une combinaison linéaire de différents canaux. En fait, il est additionné et multiplié par un coefficient, mais la carte de caractéristiques de sortie est multiple Les informations intégrées du canal peuvent enrichir les fonctionnalités extraites par le réseau.

En utilisant un noyau de convolution 1x1, l'opération de réduction de dimensionnalité et d'amélioration de dimensionnalité est en fait une combinaison linéaire d'informations entre les canaux.

Par exemple : Ajouter un noyau de convolution avec une taille de 1x1 et un nombre de 28 canaux après un noyau de convolution avec une taille de 3x3 et un nombre de 64 canaux devient un noyau de convolution avec une taille de 3x3 et une taille de 28. Les 64 canaux d'origine peuvent être compris comme la combinaison linéaire des canaux croisés est devenue 28 canaux, ce qui correspond à l'interaction des informations entre les canaux.

Remarque : il s'agit uniquement d'une combinaison linéaire sur la dimension du canal, et W et H sont des fenêtres coulissantes avec des poids partagés.

2.4 Réduire les paramètres du noyau de convolution (modèle simplifié)

Ce qui suit n'est qu'un exemple de calcul du nombre de poids (sans ajouter de biais)

2.4.1 Ajouter un noyau de convolution 1x1 à une couche de convolution et calculer les poids séparément

(1) Ne pas utiliser le noyau de convolution 1x1
insérez la description de l'image ici
(2) Utiliser le noyau de convolution 1x1
insérez la description de l'image ici
On peut voir que le noyau de convolution sans 1x1 est environ 10 fois celui de l'utilisation du noyau de convolution

2.4.2 Module 3a de GoogLeNet

(1) Ne pas utiliser le noyau de convolution 1x1
insérez la description de l'image ici
insérez la description de l'image ici

Nombre de poids : 192 × (1×1×64) +192 × (3×3×128) + 192 × (5×5×32) = 387072 La description de ce réseau est la suivante (1) En utilisant les noyaux de convolution de Différentes
tailles
signifient Avec différentes tailles de champs récepteurs, l'assemblage final signifie la fusion de caractéristiques de différentes échelles ;
(2) La raison pour laquelle la taille du noyau de convolution est de 1, 3 et 5 est principalement pour la commodité de l'alignement. Après avoir défini la foulée du pas de convolution = 1, tant que vous définissez pad = 0, 1, 2 respectivement, les caractéristiques de la même dimension peuvent être obtenues après convolution, puis ces caractéristiques peuvent être directement collées ensemble ; (3 )
Article On dit que la mise en commun est très efficace dans de nombreux endroits, elle est donc également intégrée à Inception.
(4) Plus le réseau va loin, plus les caractéristiques sont abstraites et plus le champ récepteur impliqué dans chaque caractéristique est grand, de sorte que plus le nombre de couches augmente, plus le rapport des convolutions 3x3 et 5x5 augmente également.
(2) Utiliser le noyau de convolution 1x1

insérez la description de l'image ici
insérez la description de l'image ici

Nombre de poids : 192 × (1×1×64) + (192×1×1×96+ 96 × 3×3×128) + (192×1×1×16+16×5×5×32) = 157184

Le noyau de convolution sans 1x1 est le double du poids du noyau de convolution avec 1x1

2.4.3 ResNet

ResNet utilise également la convolution 1 × 1, et il est utilisé avant et après la couche convolutive 3 × 3. Il réduit non seulement la dimension, mais augmente également la dimension, et le nombre de paramètres est encore réduit. L'image de droite est également appelée "goulot d'étranglement"
insérez la description de l'image ici
. conception", le but est clair en un coup d'œil, afin de réduire le nombre de paramètres, la première convolution 1x1 réduit le canal de 256 dimensions à 64 dimensions, puis le restaure par une convolution 1x1 à la fin. Lorsque le nombre de nos canaux de carte de caractéristiques est de 256,
changer Le problème est que la complexité du calcul sera très élevée. La méthode ici consiste à cartographier à 64 dimensions via une projection de convolution 1 × 1, puis à effectuer une convolution avec un nombre constant de 3 × 3 canaux, puis passez 1 × 1 La projection de convolution revient à 256 dimensions, car l'entrée est de 256 dimensions et la sortie doit correspondre, de sorte que la complexité de la conception est presque la même que celle de l'image de gauche.
Le nombre de paramètres dans l'image de gauche : 64 x ( 3 x 3 x 64 )+64 x ( 3 x 3 x 64 ) = 73728
Lorsque le nombre de canaux passe à 256 : 256 x ( 3 x 3 x 256 ) + 256 x ( 3 x 3 x 256 ) = 1179648
Paramètres dans la figure de droite : 256 x ( 1 x 1 x 64) + 64 x ( 3 x 3 x 64 ) + 256 x ( 1 x 1 x 64) = 69632

Lorsque le nombre de canaux est augmenté à 256, on peut trouver que la quantité de paramètre d'ajout de deux couches de convolution 1x1 est presque la même que 64 pour la quantité de paramètre de bloc résiduel d'origine.

Pour ResNet conventionnel, il peut être utilisé dans des réseaux avec 34 couches ou moins.Pour ResNet de Bottleneck Design, il est généralement utilisé dans des réseaux plus profonds, afin de réduire les calculs et les paramètres (à des fins pratiques).

Les références


Un article pour comprendre le rôle du noyau de convolution 1x1 dans le réseau de neurones convolutifs
[Deep Learning] Le rôle du noyau de convolution 1x1 dans CNN
Apprentissage en profondeur du rôle du noyau de convolution 1x1 et du
rôle de la convolution 1x1

Je suppose que tu aimes

Origine blog.csdn.net/m0_47146037/article/details/127769028
conseillé
Classement