Gibt es einen Unterschied zwischen dem Training eines gestapelten Autoencoders und einem neuronalen Netzwerk mit zwei Schichten?

14

Angenommen, ich schreibe einen Algorithmus zum Aufbau eines gestapelten 2-Schichten-Autoencodierers und eines neuronalen 2-Schichten-Netzwerks. Sind sie die gleichen Dinge oder der Unterschied?

Ich verstehe, dass ich beim Erstellen eines gestapelten Autoencoders Schicht für Schicht erstellen würde. Für ein neuronales Netzwerk initialisiere ich alle Parameter im Netzwerk und leite sie dann für jeden Datenpunkt durch das Netzwerk, berechne den Verlust (z. B. die Euclean-Distanz) und führe eine Backpropagation durch.

RockTheStar
quelle

Antworten:

16

Gestapelte Autoencoder und die mehrschichtigen neuronalen Netze sind unterschiedlich. In der Praxis teilen sich die beiden Netzwerke Gewichte und möglicherweise auch Speicherpuffer. In Ihrer Implementierung verschränken sich die beiden Netzwerke.

In der Regel werden Autoencoder unbeaufsichtigt, gierig und schichtweise trainiert. (Keine Etiketten, beginnen Sie mit dem Training nur mit der ersten Schicht des Netzwerks und fügen Sie dann nach und nach neue Schichten hinzu.) Die Gewichte können mit einer Vielzahl von Techniken gelernt werden, die vom "Batch" -Gradientenabstieg reichen (bitte tun Sie das nicht). zu Mini-Batch-Stochastic-Gradient-Descent (SGD), zu Quasi-Newton-Methoden wie L-BFGS.

Die Idee ist, dass die Gewichte, die auf unbeaufsichtigte Weise gelernt werden, um den Rekonstruktionsfehler für die Repräsentationslernaufgabe zu minimieren, einen guten Ausgangspunkt bieten, um ein Netzwerk für eine überwachte Unterscheidungsaufgabe wie Klassifizierung oder Ähnlichkeit zu initialisieren. Das heißt, das Netzwerk lernt etwas über die zugrunde liegende Verteilung, indem es sich die unbeschrifteten Daten ansieht, wodurch es zwischen den beschrifteten Daten unterscheiden kann. Die Gewichte müssen für diese neue Aufgabe jedoch noch "feinabgestimmt" werden. Fügen Sie also eine logistische Regressionsebene oben im Netzwerk hinzu und führen Sie dann ein überwachtes Lernen mit einem beschrifteten Datensatz durch. Der Feineinstellungsschritt führt einen Gradientenabstieg durch und passt die Gewichte für alle Layer im Netzwerk gleichzeitig an.

Die Vorteile dieser Art des Trainings von neuronalen Netzen sind:

  1. Durch unbeaufsichtigtes Training können Sie dem Netzwerk mehr Daten anzeigen, da es viel einfacher ist, große unbeaufsichtigte Datensätze abzurufen, als beschriftete.
  2. Sie können das vorab trainierte Netzwerk als "Ausgangspunkt" für das Training neuer Klassifikatoren verwenden, damit Sie nicht jedes Mal von vorne beginnen müssen.

Weitere Informationen finden Sie unter Gestapelte Entrauschungs-Autoencoder: Lernen Sie nützliche Darstellungen in einem tiefen Netzwerk mit einem lokalen Entrauschungskriterium .

Sabalaba
quelle
Ich bin verwirrt über den zweiten Schritt, in dem Sie die Codierungsschicht mit einer Klassifizierungsschicht (z. B. einer Softmax-Schicht) für eine Klassifizierungsaufgabe trainieren. Verwenden Sie den Trainingsdatensatz für diesen Teil erneut, um die Etiketten zu lernen? Ich finde das seltsam, weil das Trainingsset nur verwendet wurde, um eine Annäherung an sich selbst zu lernen.
Kerl
Es macht wenig Sinn, wenn Sie alle Daten beschriftet haben. Es ist eher für Situationen gedacht, in denen Sie viel mehr unbeschriftete Daten vorab trainieren und dann die beschrifteten "Trainings" -Daten zur Feinabstimmung verwenden müssen.
Miau