Sparse Autoencoder [Hyper] -Parameter

8

Ich habe gerade angefangen, das Autoencoder- Paket in R zu verwenden.

Eingaben in die autoencode()Funktion umfassen Lambda, Beta, Rho und Epsilon.

Was sind die Grenzen für diese Werte? Variieren sie für jede Aktivierungsfunktion? Werden diese Parameter "Hyperparameter" genannt?

Ist rho = .01 unter der Annahme eines spärlichen Autoencoders gut für die logistische Aktivierungsfunktion und rho = -. 9 gut für die hyperbolische Tangentenaktivierungsfunktion?

Warum setzt das Handbuch epsilon auf .001? Wenn ich mich richtig erinnere, empfiehlt "Efficient Backpropagation" von LeCun Startwerte, die nicht so nahe bei Null liegen.

Wie wichtig ist ein "guter" Wert für die Beta?

Gibt es eine "Faustregel" für die Auswahl der Anzahl der Nuerons in der verborgenen Ebene? Wenn die Eingabeebenen beispielsweise N Knoten haben, ist es sinnvoll, 2N Nuerons in der verborgenen Ebene zu haben?

Können Sie Literatur zum praktischen Einsatz von Autoencodern empfehlen?

Leistung
quelle

Antworten:

10

Das autoencoderPaket ist nur eine Implementierung des Autoencoder in Andrew Ng beschrieben Klasse Noten , die ein guter Ausgangspunkt für die weitere Lektüre sein könnte. Nun, um Ihre Fragen zu beantworten


Menschen unterscheiden manchmal zwischen Parametern , die der Lernalgorithmus selbst berechnet, und Hyperparametern , die diesen Lernprozess steuern und dem Lernalgorithmus zur Verfügung gestellt werden müssen. Es ist wichtig zu wissen, dass es für die Hyperparameter KEINE MAGISCHEN WERTE gibt . Der optimale Wert hängt von den Daten ab, die Sie modellieren: Sie müssen sie an Ihren Daten ausprobieren.

λ

ρ)(ββα

ϵ)N(0,ϵ2)

Ihre Rho-Werte scheinen nicht unangemessen zu sein, da beide nahe am unteren Rand des Bereichs der Aktivierungsfunktion liegen (0 bis 1 für logistische, -1 bis 1 für tanh). Dies hängt jedoch offensichtlich von der gewünschten Spärlichkeit und der Anzahl der versteckten Einheiten ab, die Sie ebenfalls verwenden.


m1/2m


Es gibt viele "Faustregeln" für die Auswahl der Anzahl der versteckten Einheiten. Ihre anfängliche Vermutung (2x Eingabe) scheint mit den meisten übereinzustimmen. Das heißt, diese Schätzungen sind viel mehr Vermutungen als Schätzungen. Angenommen, Sie haben die Rechenleistung, würde ich mich auf die Seite von mehr versteckten Einheiten irren und dann die Spärlichkeit mit einem niedrigen Rho-Wert erzwingen.
Eine offensichtliche Verwendung von Autoencodern besteht darin, kompaktere Merkmalsdarstellungen für andere Lernalgorithmen zu erzeugen. Ein Rohbild kann Millionen von Pixeln haben, aber ein (spärlicher) Autoencoder kann dies auf viel kleinerem Raum wiedergeben. Geoff Hinton (und andere) haben gezeigt, dass sie nützliche Merkmale für die nachfolgende Klassifizierung generieren. Einige der Deep-Learning-Arbeiten verwenden Autoencoder oder ähnliches, um das Netzwerk vorab zu trainieren. Vincent et al. Verwenden Sie Autoencoder direkt, um die Klassifizierung durchzuführen.

Die Fähigkeit, prägnante Feature-Darstellungen zu generieren, kann auch in anderen Kontexten verwendet werden. Hier ist ein hübsches kleines Projekt, in dem von Autoencodern erzeugte Zustände verwendet werden, um einen Verstärkungslernalgorithmus durch Atari-Spiele zu führen .

Schließlich kann man auch verwenden , um Autoencoder verrauscht oder degradierten Eingangs zu rekonstruieren, wie so , die einen nützlichen Zweck in sich selbst sein kann.

Matt Krause
quelle
Vielen Dank. Wie kommt es also beta = 6im autoencoderBeispielcode?
Macht
1
αββ=6
1
Danke für's Annehmen! Ich habe über etwas Ähnliches für die Arbeit nachgedacht und es hat Spaß gemacht, es aufzuschreiben. In Zukunft haben Sie möglicherweise mehr Glück, wenn Sie kleinere Fragen stellen (z. B. Fragen zu Bereich, Startwerten und versteckten Einheiten separat). Die Leute scheinen Antworten zu mögen, die sie in zehn Minuten ausschalten können.
Matt Krause
Ja, macht Sinn. Vor allem, wenn Sie nur 10 Minuten Ausfallzeit bei der Arbeit haben.
Macht
2

Ein Teil von Matt Krauses Antwort scheint mir nicht richtig zu sein (Lambda und Beta), auch Epsilon wird nicht erwähnt. Eigentlich sollte dieser Beitrag ein Kommentar sein, aber ich beantworte die Frage wegen 50 Reputationsbeschränkungen. Fühlen Sie sich frei zu kommentieren, wenn Sie einen Fehler sehen.

Von http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdf Lambda ist ein Begriff für den Gewichtsabfall, der Gewichte davon abhält, große Werte zu erreichen, da er möglicherweise überpasst. Der Gewichtszerfallsterm (oder Gewichtsregulierungsterm) ist ein Teil der Kostenfunktion wie der unten erläuterte Sparsity-Term.

rho ist eine Sparsity-Einschränkung, die die durchschnittliche Anzahl der Aktivierungen auf der verborgenen Ebene steuert. Es ist enthalten, damit der Autoencoder auch mit einer relativ großen Anzahl versteckter Einheiten in Bezug auf Eingabeeinheiten funktioniert. Wenn beispielsweise die Eingabegröße 100 und die verborgene Größe 100 oder mehr beträgt (sogar kleiner, aber nahe 100), kann die Ausgabe ohne Verlust erstellt werden, da versteckte Einheiten die Identitätsfunktion lernen können. Beta ist der Koeffizient des Sparsity-Terms, der Teil der Kostenfunktion ist. Es steuert die relative Bedeutung des Sparsity-Terms. Lambda und Beta geben die relative Bedeutung ihrer Begriffe für die Kostenfunktion an.

Epsilon (wenn sie dieselbe Notation wie Andrew Ng verwendet haben) ist ein Regularisierungsparameter für den Bleaching-Prozess, der einen Tiefpassfiltereffekt auf die Eingabe hat. Das hat einige wichtige Auswirkungen auf die Rekonstruktionsmethoden. Überprüfen Sie den Link unter rekonstruktionsbasierte Modelle. Ich denke, sie haben die lineare Aktivierung für die Ausgabeschicht verwendet und eine Art von Bleaching (univariate Merkmale) verwendet.

Die Aktualisierungsrate der Parameter (Gewichte und Verzerrungen) wird als Lernrate bezeichnet und im Allgemeinen mit eta bezeichnet. Es wurde jedoch von Andrew Ng als Alpha verwendet. Überprüfen Sie den ersten Link.

yasin.yazici
quelle
ϵ2