Élagage approximatif du filtre Oracle pour les notes papier d'optimisation destructive de la largeur CNN

Adresse papier : https://arxiv.org/abs/1905.04748v1
Adresse github : https://github.com/ShawnDing1994/AOFP

Motivation

La méthode d'élagage proposée dans cet article est basée sur l'idée la plus simple et la plus directe, c'est-à-dire que l'importance du filtre dépend du degré d'évolution de la perte qu'il provoque : plus la perte est petite, moins le filtre est important. C'est l'oracle. Cependant, si vous utilisez oracle pour calculer l'indice d'importance de chaque filtre, puis effectuez un tri et un élagage, puis un réglage fin, cette méthode itérative prend beaucoup de temps et nécessite une énorme quantité de calculs. Sur la base de ce goulot d'étranglement, l'auteur propose une méthode d'élagage basée sur l'idée d'oracle.

Méthode

Tout d'abord, le calcul de l'oracle d'origine est obtenu en comparant les changements de perte de sortie de la dernière couche. L'auteur propose une amélioration, c'est-à-dire que le degré de changement de la featuremap de sortie de la couche suivante est utilisé à la place de la sortie finale pour évaluer l'impact de la suppression d'un filtre. Cette méthode est basée sur le fait que l'auteur estime que le réseau équivaut à une machine à états et qu'il existe une situation d'isolation des dommages, c'est-à-dire que la suppression du filtre de la couche actuelle n'affecte que l'entrée de la couche suivante, et les calques suivants ne peuvent pas voir les modifications du calque actuel. Le changement est considéré comme causé par le changement de son filtre de calque précédent. Cette méthode raccourcit considérablement le temps d'évaluation d'oracle, sinon chaque filtre doit exécuter l'ensemble du réseau. Les indicateurs d'importance sont définis comme suit :
indice d'importance

Deuxièmement, une fois la définition de l'indice d'importance résolue, l'auteur propose un réseau d'élagage de formation multi-chemins pour que les processus d'élagage et de réglage fin se déroulent simultanément. Comme indiqué ci-dessous.
Réseau de formation à l'élagage multi-chemins
Il y a trois chemins dans la figure, la gauche est le chemin de mise à jour du gradient de rétropropagation, et le milieu est le réseau élagué, appelé chemin de base, où uuLa couche u est la couche de masque, qui est utilisée pour marquer les filtres élagués, et le côté droit est le chemin de notation, qui est utilisé pour calculer l'indice d'importance de chaque filtre,vvLa couche v est sa couche de masque, qui est utilisée pour calculer l'indice d'importance du filtre qui continue à être élagué. Prenez l'image ci-dessus comme exemple, la couche conv1 a déjà élagué deux filtres, essayez maintenant d'élaguer le troisième filtre, à ce moment mettezvvLe masque de filtre en v est désactivé et en uuRetenu dans u , de sorte que la perte des deux chemins changeant sur la carte de caractéristiques sortie par conv2 revient à supprimer l'indice d'importance du filtre, c'est-à-dire "calculer t pour conv1" dans la figure. Par conséquent, dans le processus de propagation vers l'avant, le chemin de base est utilisé pour le réseau de réglage fin, et la sortie d'origine est générée en même temps, et le chemin de score obtient l'importance du filtre.Cette opération parallèle accélère le processus de formation et taille.

Afin de calculer les indicateurs d'importance de tous les filtres après plusieurs temps de propagation vers l'avant, l'auteur propose d'utiliser chaque couche pour masquer aléatoirement un lot de filtres (le nombre est fixe), au lieu de ne masquer qu'un seul filtre par couche pour calculer l'importance . L'indice d'importance (valeur t) calculé après chaque propagation vers l'avant est enregistré dans le filtre masqué. Après avoir entré n lots, plusieurs pertes sont enregistrées dans chaque filtre. Bien que ce ne soit pas le sien, mais l'espérance devrait être égale à la perte moyenne de autres filtres + sa propre perte. Par conséquent, l'espérance de la perte peut distinguer l'importance de chaque filtre.

Pour la détermination du nombre de masques à chaque fois, l'auteur propose l'idée d'une optimisation progressive, en utilisant une méthode binaire pour sélectionner au hasard la moitié des filtres de la moitié sans importance du jeu de filtres obtenu à partir de la propagation avant précédente à chaque fois, et l'utiliser Le masque de filtre avec une perte inférieure au seuil dans la moitié des ensembles est 0 (c'est-à-dire uuLe masque dans u est 0, et il sera élagué lors du prochain cycle de propagation vers l'avant). Les étapes spécifiques sont les suivantes : la
algorithme
condition de fin du processus est que la valeur de perte maximale dans l'ensemble sélectionné à masquer est supérieure ou égale au seuil défini et que le nombre d'éléments dans l'ensemble est 1.

Expérience


Ensemble de données : CIFAR-10, modèle ImageNet : AlexNet, ResNet, VGGNet

Résultats

CIFAR-10
ImageNet
VGG
Refonte de CNN

Pensées

Pour cette méthode, j'ai des doutes sur la sélection du nombre de lots, car lors des expériences précédentes, j'ai constaté que seule l'utilisation de l'ensemble d'apprentissage complet comme entrée peut refléter avec précision l'importance du filtre. D'une part, le calcul de la différence de sortie de la couche suivante n'est qu'une approximation de la différence de perte de la sortie finale. D'autre part, seule une partie de l'ensemble de données est utilisée pour calculer le score. L'importance ne doit pas être très précis, et il peut s'agir simplement d'améliorer le réseau grâce à un réglage fin continu. Vous pouvez également examiner de plus près les procédures expérimentales suivantes.

Je suppose que tu aimes

Origine blog.csdn.net/qq_43812519/article/details/105186972
conseillé
Classement