[wp_sitemap_page]

Neurale Netzwerke komprimieren

Als ich mich für eine Doktorandenstelle bewarb, wollte ich dem Professor einen Grund geben, mich einzustellen, also habe ich eine meiner Ideen umgesetzt. Ich hatte den Verdacht, dass die Gewichte der neuronalen Netze zu dicht ist. Es gibt eine Menge Redundanz. Die herkömmliche Methode zur Verringerung der Komplexität besteht darin, einen Trichter in die Architektur des neuronalen Netzes einzubauen. Dies ist jedoch eine ressourcenintensive Methode, das Problem zu lösen. Anstatt die Anzahl der Gewichte zu verringern, erhöhen wir sie. Die andere Möglichkeit, die Komplexität eines Modells zu reduzieren, besteht darin, die Genauigkeit der Gewichte von z. B. 32 Bit auf 8 Bit zu verringern. Dies ist ein legitimer Weg, ist jedoch uninspiriert. Und es ist schwer zu glauben, dass dies der einzige und richtige Weg für alle Situationen ist.

Meine Hypothese war, die Gewichtsmatrix mit einem gängigen Algorithmus wie JPEG zu komprimieren. Ich nahm MNIST und trainierte ein kleines CNN:

hidden_layer_size = 512
linear1 = torch.nn.Linear(784, hidden_layer_size, bias = True)
linear2 = torch.nn.Linear(hidden_layer_size, 10, bias = True)
relu = torch.nn.ReLU()

model = torch.nn.Sequential(linear1, relu, linear2)
  • Die Grösse von 512 für die hidden Layers war die erste Zweierpotenz, die zu guten Ergebnissen führte.
  • Die 784 ergibt sich aus der Eingabegrösse, die 28 × 28 beträgt.
  • Das hidden Layer ist also eine Liste von 512 unterschiedlichen 28 × 28-Matrizen.

Ich nahm jede Matrix und komprimierte sie mit JPEG auf eine Qualität von nur 20 %, wobei ich eine Menge Informationen verlor, wie hier zu sehen ist.

Unkomprimiert
JPEG komprimiert 20 % Qualität

Die Testgenauigkeit fiel nur von 97 % auf 96 %, was angesichts der geringeren Auflösung im latenten Raum erstaunlich ist.

Was haben wir gelernt? Und einige fundierte Vermutungen.

Die Gewichte in einem CNN sind sehr redundant. Wir können die Dimensionalität durch einen naiven Algorithmus wie JPEG erheblich reduzieren. Für eine Vorwärtspropagation im Netz benötige ich jedoch die Matrixversion von JPEG, die keinen Speicherplatz spart. Die komprimierten Gewichte könnten verwendet werden, um sie über ein Netzwerk mit geringer Bandbreite wie das Internet zu übertragen. Wir können jedoch einige fundierte Vermutungen anstellen:

  • Die Wahl einer anderen Basis für die Gewichte, z. B. der Fourier-Basis, als nur ein unabhängiges Gewicht an jeder Stelle, könnte es ermöglichen, grosse Netze mit einer begrenzten Anzahl von Gewichten zu erstellen.
  • Diese Methode könnte auch in deep neuronalen Netzen funktionieren.
  • Die Entwicklung einer differenzierbaren Methode, die mit wenigen Parametern eine erhebliche Komplexität erzeugt, könnte die Rechenkapazitäten der vorhandenen Hardware erhöhen.

Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert