Je suis novice dans les réseaux de neurones convolutionnels et je viens d’avoir une idée des cartes de caractéristiques et de la convolution sur les images pour en extraire les caractéristiques. Je serais heureux de connaître certains détails sur l’application de la normalisation des lots dans CNN.
J'ai lu cet article https://arxiv.org/pdf/1502.03167v3.pdf et pouvais comprendre l'algorithme de BN appliqué à une donnée, mais ils ont finalement indiqué qu'une légère modification est requise pour CNN:
Pour les couches convolutives, nous souhaitons en outre que la normalisation obéisse à la propriété convolutive, de sorte que différents éléments de la même carte de caractéristiques, à des emplacements différents, soient normalisés de la même manière. Pour ce faire, nous normalisons conjointement toutes les activations dans un mini-lot, sur tous les sites. À Alg. 1, on laisse B l’ensemble de toutes les valeurs d’une carte des caractéristiques, qu’il s’agisse de mini-lots ou de localisations spatiales. Ainsi, pour un mini-lot de taille m et des cartes de caractéristiques de taille p × q, on utilise - mini-lot productif de taille m '= | B | = m · pq. Nous apprenons une paire de paramètres γ (k) et β (k) par carte de caractéristiques, plutôt que par activation. Alg. 2 est modifié de manière similaire, de sorte que lors de l'inférence, la transformation BN applique la même transformation linéaire à chaque activation dans une carte de caractéristiques donnée.
Je suis totalement confus quand ils disent "afin que différents éléments de la même carte de caractéristiques, à différents endroits, soient normalisés de la même manière"
Je sais ce que signifient les cartes de caractéristiques et les différents éléments sont les poids dans chaque carte de caractéristiques. Mais je ne comprenais pas ce que signifiait localisation ou localisation spatiale.
Je ne comprenais pas du tout la phrase ci-dessous "Dans l’Alg. 1, on laisse B l’ensemble de toutes les valeurs d’une carte des traits, qu’il s’agisse de mini-batch ou d’emplacement spatial"
Je serais heureux si quelqu'un de froid élaborait et m'expliquait en termes beaucoup plus simples
Commençons par les termes. N'oubliez pas que le résultat de la couche de convolution est un tenseur à 4 rangs [B, H, W, C]
, où B
est la taille du lot, (H, W)
est la taille de feature map, C
est le nombre de canaux. Un index (x, y)
où 0 <= x < H
et 0 <= y < W
est un emplacement spatial.
Maintenant, voici comment le batchnorm est appliqué de manière habituelle (en pseudo-code):
# t is the incoming tensor of shape [B, H, W, C]
# mean and stddev are computed along 0 axis and have shape [H, W, C]
mean = mean(t, axis=0)
stddev = stddev(t, axis=0)
for i in 0..B-1:
out[i,:,:,:] = norm(t[i,:,:,:], mean, stddev)
Fondamentalement, il calcule les moyennes H*W*C
et les écarts-types H*W*C
sur les éléments B
. Vous remarquerez peut-être que différents éléments situés à des emplacements géographiques différents ont leurs propres moyenne et variance et ne rassemblent que des valeurs B
.
Cette voie est totalement possible. Mais la couche convolutive a une propriété spéciale: les poids de filtre sont partagés dans l’image d’entrée (vous pouvez le lire en détail dans this post ). C'est pourquoi il est raisonnable de normaliser la sortie de la même manière, de sorte que chaque valeur de sortie prenne la moyenne et la variance de B*H*W
, à des emplacements différents.
Voici à quoi ressemble le code dans ce cas (encore une fois pseudo-code):
# t is still the incoming tensor of shape [B, H, W, C]
# but mean and stddev are computed along (0, 1, 2) axes and have just [C] shape
mean = mean(t, axis=(0, 1, 2))
stddev = stddev(t, axis=(0, 1, 2))
for i in 0..B-1, x in 0..H-1, y in 0..W-1:
out[i,x,y,:] = norm(t[i,x,y,:], mean, stddev)
Au total, il n'y a que C
moyennes et écarts-types et chacun d'entre eux est calculé sur des valeurs de B*H*W
. C'est ce qu'ils veulent dire par "mini-lot efficace": la différence entre les deux réside uniquement dans la sélection de l'axe (ou, de manière équivalente, dans la "sélection du mini-lot").
Je ne suis sûr que de 70% de ce que je dis, alors si cela n’a aucun sens, veuillez le modifier ou le mentionner avant de voter à la baisse.
À propos de location
ou spatial location
: ils désignent la position des pixels dans une image ou une carte de fonctions. Une carte de caractéristiques est comparable à une version fragmentée modifiée de l'image, dans laquelle les concepts sont représentés.
À propos de so that different elements of the same feature map, at different locations, are normalized in the same way
: Certains algorithmes de normalisation sont locaux, ils dépendent donc de leur environnement proche (emplacement) et non des éléments éloignés dans l’image. Ils signifient probablement que chaque pixel, quel que soit son emplacement, est traité comme un élément d'un ensemble, indépendamment de son environnement spécial direct.
À propos de In Alg. 1, we let B be the set of all values in a feature map across both the elements of a mini-batch and spatial locations
: Ils obtiennent une liste simple de toutes les valeurs de chaque exemple d’entraînement dans le minibatch, et cette liste combine des éléments quelle que soit leur emplacement sur la carte des fonctionnalités.