Trend-Themen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Ich habe 74 % der Neuronen aus einem neuronalen Netzwerk entfernt.
Die Genauigkeit sank nur um 0,50 %.
Hier ist eine Aufschlüsselung (mit Code):
Ein trainiertes neuronales Netzwerk hat immer Neuronen, die nicht wesentlich zur Leistung beitragen.
Aber sie verbrauchen immer noch Speicher.
Diese können entfernt werden, ohne die Genauigkeit erheblich zu beeinträchtigen.
Lass uns sehen, wie man sie identifizieren kann!
Hier sind die Schritte:
Schritt 1) Trainiere das neuronale Netzwerk wie gewohnt.
Schritt 2) Leite den Validierungsdatensatz durch das trainierte Netzwerk und berechne für jedes Neuron in den versteckten Schichten:
- Die durchschnittliche Aktivierung
- Die Varianz der Aktivierungen (wenn Aktivierungen negativ sein können)
Überprüfe das👇

Schritt 3) Schneiden Sie Neuronen, die einen nahezu null Aktivierungsdurchschnitt und eine geringe Varianz aufweisen, da sie wenig Einfluss auf die Ausgabe des Modells haben.
Idealerweise sollten Sie die Leistung über mehrere Beschneidungsgrenzen hinweg plotten, um das Modell auszuwählen, das Ihren Größen- und Genauigkeitskompromissen entspricht.
Überprüfen Sie dies 👇

Lass uns den Code ansehen.
Wir beginnen damit, ein einfaches neuronales Netzwerk zu definieren und es zu trainieren.
Da wir später die Aktivierungen auf Neuronenebene für das Pruning berechnen werden, geben wir alle Zwischenaktivierungen im Vorwärtsdurchlauf zurück.
Überprüfe das👇

Als Nächstes definieren wir zwei Listen mit drei Elementen:
- Eine wird den Mittelwert der Aktivierungen speichern
- Eine andere wird die Standardabweichung der Aktivierungen speichern
Wir lassen den Validierungsdatensatz durch unser Modell laufen, um diese Statistiken für jede versteckte Schicht zu berechnen.
Überprüfen Sie das 👇

An diesem Punkt lassen Sie uns ein Verteilungsdiagramm der neuronalen Statistiken erstellen, die wir oben generiert haben.
Wie unten dargestellt, sind die durchschnittlichen Aktivierungen der meisten Neuronen und deren Standardabweichung stark um Werte nahe Null verteilt.
Lassen Sie uns als Nächstes versuchen, sie zu beschneiden.

Für das Pruning durchlaufen wir eine Liste von Schwellenwerten und:
- Erstellen ein neues Netzwerk und übertragen die Gewichte, die den Schwellenwert überschreiten.
- Bewerten das neue Netzwerk und berechnen die Gesamtparameter.
- Fügen die Ergebnisse einer Liste hinzu.
Überprüfen Sie dies 👇

Diese Tabelle vergleicht die Genauigkeit und die Größenreduktion des beschnittenen Modells über mehrere Schwellenwerte im Vergleich zum ursprünglichen Modell.
Bei mean=0.1 und std-dev=0.4:
- Die Genauigkeit des Modells sinkt um 0,08%.
- Die Größe des Modells reduziert sich um 62%.
Das ist eine enorme Reduktion.
Überprüfen Sie dies 👇

Hier ist ein weiteres interessantes Ergebnis.
Bei mean=0.5 und std-dev=1:
- Die Genauigkeit des Modells sinkt um 0,5%.
- Die Größe des Modells reduziert sich um 74%.
Im Grunde genommen erhalten wir eine fast ähnliche Leistung mit 1/4 der Parameter.
Überprüfen Sie das 👇

Natürlich gibt es einen Kompromiss zwischen Genauigkeit und Größe. Wenn wir die Größe reduzieren, sinkt die Genauigkeit (siehe das Video).
Aber in den meisten Fällen ist die Genauigkeit nicht das einzige Kriterium, das wir optimieren.
Stattdessen sind mehrere betriebliche Kennzahlen wie Effizienz, Speicher usw. die entscheidenden Faktoren.
48,61K
Top
Ranking
Favoriten