Netzwerkmodellbereinigung – Studiennotizen

Netzwerkmodellbereinigung

1. Was ist Modellbeschneidung?

Einige Gewichte und Neuronen im neuronalen Netzwerk können beschnitten werden, da diese Gewichte möglicherweise Null sind oder die Ausgabe der Neuronen die meiste Zeit Null ist, was darauf hinweist, dass diese Gewichte oder Neuronen redundant sind.
Die Netzwerkbereinigung kann den Vorteil haben, das Modell zu komprimieren und zu vereinfachen, hat aber auch bestimmte Nachteile. Das Wichtigste ist, dass die Genauigkeit abnimmt. Wenn das Beschneiden nicht gut durchgeführt wird, nimmt die Genauigkeit sehr stark ab. Wie dieses Problem gelöst werden kann, ist die Forschungsrichtung späterer Wissenschaftler. Wenn sich die Genauigkeit nach dem Beschneiden verbessert, bedeutet dies natürlich, dass das ursprüngliche Modell überpasst ist und das Beschneiden die Rolle der Regularisierung spielt.
**

2. Schnittklassifizierung

**
Aufgrund der Granularität der Netzwerkbereinigung kann sie in zwei Typen unterteilt werden: strukturierte Bereinigung (strukturierte Bereinigung) und unstrukturierte Bereinigung (unstrukturierte Bereinigung).
Fügen Sie hier eine Bildbeschreibung ein

(1) Strukturiertes Beschneiden
Gewichtsbeschneiden:
Unwichtige Verbindungen zwischen Neuronenknoten abschneiden. Entspricht dem Setzen eines einzelnen Gewichtungswerts in der Gewichtsmatrix auf 0. Im Allgemeinen
werden alle Werte in der Gewichtsmatrix nach ihrer Größe sortiert, und ein bestimmter Prozentsatz der dahinter liegenden Werte kann auf 0 gesetzt werden.
Fügen Sie hier eine Bildbeschreibung ein

(2) Unstrukturiertes Beschneiden
Neuronenbeschneiden:
Wenn ein Neuronenknoten in der Gewichtsmatrix entfernt wird, werden auch alle mit dem Neuron verbundenen Synapsen entfernt. Dies entspricht dem gleichzeitigen Entfernen einer bestimmten Zeile und Spalte in der Gewichtsmatrix. Wie lässt sich die Bedeutung neuronaler Knoten beurteilen? Es kann sortiert werden, indem die Größe der Wurzel der Summe der Quadrate der Gewichtswerte der den Neuronen entsprechenden Zeilen und Spalten berechnet und ein bestimmter Anteil der dahinter sortierten Neuronenknoten entfernt wird
Fügen Sie hier eine Bildbeschreibung ein

3. Faltungsstrukturiertes Beschneiden

(1) In Bezug auf den Filter
ändern sich die vorherige Feature-Map und die nächste Feature-Map entsprechend, wenn ein Faltungskern beschnitten wird
Fügen Sie hier eine Bildbeschreibung ein

Nehmen Sie das obige Bild als Beispiel: In der i-ten Faltungsschicht werden der 2. und der 5. Faltungskern abgeschnitten (die Anzahl der Faltungskerne nimmt ab und die Form jedes Faltungskerns bleibt unverändert); wenn i-1 Schicht Die Merkmalskarte der i-ten Schicht wird erhalten, nachdem die Featruemap durch die Faltungsmatrix der i-ten Schicht gefaltet wurde, und der 2. und 5. Kanal werden ebenfalls entsprechend entfernt. Um der Änderung der Featuremap-Kanaldimension der i-ten Schicht gerecht zu werden, werden die Gewichte des zweiten und fünften Kanals jedes Faltungskerns in der Faltung der i+1-Schicht entfernt (die Anzahl der Faltungskerne bleibt gleich). , aber jedes Volumen Die Form des Produkts ändert sich). Zur Vereinfachung der Beobachtung ist jede Schicht von Faltungskernen in der obigen Abbildung in Form einer Faltungskernmatrix angeordnet, wie in der Kernelmatrix in der folgenden Abbildung dargestellt. In dieser Form untersuchen wir zwei Arten des Beschneidens.

(2) Bereinigung des Faltungskerns in einer einzelnen Schicht
Fügen Sie hier eine Bildbeschreibung ein

Wie in der Abbildung oben gezeigt, repräsentiert ni in der Kernelmatrix die Kanaltiefe der Feature-Map der i-ten Ebene, ni+1 repräsentiert die Kanaltiefe der Feature-Map der i+1-ten Ebene. Die Größe jedes Faltungskerns in der Kernelmatrix beträgt kxk. Der Algorithmusprozess zum Ausschneiden von n Faltungskernen aus der i-ten Faltungsschicht ist wie folgt: (1) Berechnen Sie die Summe der absoluten Gewichte jedes Faltungskerns. (2) Sortieren Sie nach der Größe des Werts. (3) Schneiden Sie die kleinsten n Faltungskerne und die entsprechenden Feature-Maps aus. Der relevante Faltungskern in der nächsten Faltungsschicht wird ebenfalls entfernt. (4) Eine neue Gewichtsmatrix der i-ten Schicht und der i+1-ten Schicht wird generiert und die verbleibenden Gewichtsparameter werden in das neue Modell kopiert. (3) Die formweise filterweise Bereinigung erfolgt für die
vollständige
Faltung Kernel (kxkxc) Beschneiden; kanalweise dient das Beschneiden derselben Schicht in allen Faltungskernen. Die formbezogene Schnittkörnigkeit ist relativ geringer. Das Beschneidungsobjekt ist das Beschneiden von Teilgewichten an derselben Position in allen Faltungskernen. Der Unterschied zwischen den drei Schnitten ist in der Abbildung unten zu sehen.
Fügen Sie hier eine Bildbeschreibung ein

Da die Positionen unwichtiger Gewichtswerte in jedem Faltungskern nicht gleich sind, kann diese Bereinigungsmethode dazu führen, dass das Modellnetzwerk gültige Informationen verliert.
(4) Algorithmusbasis für das Bereinigen
Nehmen Sie als Beispiel „Lernen effizienter Faltungsnetzwerke durch Netzwerkverschlankung“. Die Bedeutung jedes Kanals der Conv-Schicht kann der Batchnorm-Schicht zugeordnet werden. Wenn der entsprechende Skalierungsfaktor in der Batchnorm-Schicht nach einem bestimmten Kanal klein genug ist, bedeutet dies, dass der Kanal von geringer Bedeutung ist und ignoriert werden kann.
Fügen Sie hier eine Bildbeschreibung ein

Wie in der Abbildung oben gezeigt, werden die beiden orangefarbenen Kanäle beschnitten.
Die Formel von Batchnorm lautet wie folgt:
Fügen Sie hier eine Bildbeschreibung ein

Wo: Fügen Sie hier eine Bildbeschreibung ein
gibt Kanalskalierungsfaktoren an. Um den Grad der Sparsität zu erhöhen und das Beschneiden des Kanals zu erleichtern, muss während des Trainings die Einschränkung von L1 auf den Skalierungsfaktor jeder Batchnorm-Schicht erhöht werden. Es gibt sowohl Unterschiede als auch Zusammenhänge zwischen Kanal und Filter. Die von den beiden verwendeten Bereinigungsbewertungsmethoden sind unterschiedlich, werden sich jedoch letztendlich in der Bereinigung des Faltungskerns oder einiger Schichten im Faltungskern widerspiegeln.

4. Erläuterung des offiziellen Beschneidungsalgorithmus von Torch

Deep-Learning-Techniken basieren auf überparametrisierten Modellen, was der Bereitstellung nicht förderlich ist. Im Gegensatz dazu nutzen biologische neuronale Netze effiziente, spärliche Verbindungen. Techniken zur Komprimierung von Modellen durch Reduzierung der Anzahl der darin enthaltenen Parameter sind wichtig,
um leichtgewichtige Modelle auf dem Gerät bereitzustellen und den Speicher-, Batterie- und Hardwareverbrauch zu reduzieren, ohne die Genauigkeit zu beeinträchtigen.
Erfahren Sie, wie Sie Torch.nn.utils.prune verwenden.
(1) Beschneiden

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

(2) Iteratives Beschneiden
Fügen Sie hier eine Bildbeschreibung ein

(3) Entfernen Sie die schweren Parameter des Beschneidens
Fügen Sie hier eine Bildbeschreibung ein

(4) Globales Beschneiden
Fügen Sie hier eine Bildbeschreibung ein

*

Fünftens: Torch-Pruning-Toolbox (strukturierter Schnitt)

Es handelt sich um eine Pytorch-Toolbox für die strukturelle Bereinigung. Im Gegensatz zur maskenbasierten unstrukturierten Bereinigung von Pytorch entfernt die Toolbox den gesamten Bereinigungskanal. Erkennt automatisch die Abhängigkeiten zwischen Ebenen und Bereinigung und kann DenseNet, ResNet und DeepLab verarbeiten.
Fügen Sie hier eine Bildbeschreibung ein

Features:
Convolutional Network Channel Pruning CNNs (z. B. ResNet, DenseNet, Deeplab) und Transformers (z. B. Bert)
Netzwerkdiagrammverfolgung und -abhängigkeit (Dependency).
Unterstützte Netzwerkschichten: Conv, Linear, BatchNorm, LayerNorm, Transposed Conv, PReLU, Embedding.
Unterstützung Operationen: Teilen, Verketten, Verbindung überspringen, reduzieren usw. Beschneidungsstrategie: Zufällig, L1, L2 usw.
Beschneidungsstrategie: Zufällig, L1, L2 usw.
Torch-Pruning verwendet gefälschte Eingaben. Das Eingabenetzwerk sammelt Netzwerkinformationen wie Torch .jit. Das Abhängigkeitsdiagramm wird verwendet, um die Beziehung zwischen dem Berechnungsdiagramm und den Ebenen darzustellen. Da sich das Beschneiden einer Ebene auf mehrere Ebenen auswirkt, wird die Abhängigkeit das Beschneiden automatisch auf andere Ebenen übertragen und im PruningPlan speichern. Wenn das Modell vorhanden ist Darin befindet sich Torch.split oder Torch.cat, und alle beschnittenen Indizes werden transformiert. 
Conv-Conv: Reduzieren Sie diesen Kanal in oc und reduzieren Sie den IC-Kanal jedes Faltungskerns in der nächsten Faltung durch diese
Skip-Verbindung: Es ist Es muss berücksichtigt werden, dass IC und OC der vorherigen Ebene miteinander in Beziehung stehen. Daher müssen hier sowohl Shortcut als auch Add diese Zuordnung übergeben

	结构化剪枝中,必须保持各层剪枝的兼容性:

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

	使用例子:

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Supongo que te gusta

Origin blog.csdn.net/weixin_43391596/article/details/128915474
Recomendado
Clasificación