Das autoencoder
Paket 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.
m−1/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.
beta = 6
imautoencoder
Beispielcode?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.
quelle