„Autoencoder“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung Erweiterte mobile Bearbeitung |
Aka (Diskussion | Beiträge) K Leerzeichen vor Beleg entfernt, https, deutsch, Links normiert, Kleinkram |
||
Zeile 2: | Zeile 2: | ||
Das Ziel eines Autoencoders ist es, eine komprimierte Repräsentation (Encoding) für einen Satz Daten zu lernen und somit auch wesentliche Merkmale zu extrahieren. |
Das Ziel eines Autoencoders ist es, eine komprimierte Repräsentation (Encoding) für einen Satz Daten zu lernen und somit auch wesentliche Merkmale zu extrahieren. |
||
Dadurch kann er zur Dimensionsreduktion genutzt werden. |
Dadurch kann er zur Dimensionsreduktion genutzt werden. |
||
[[ |
[[Datei:Autoencoder schema.png|mini|Schema eines Autoencodes]] |
||
Der Autoencoder benutzt drei oder mehr Schichten: |
Der Autoencoder benutzt drei oder mehr Schichten: |
||
Zeile 15: | Zeile 15: | ||
Ein Autoencoder ist ein geordnetes Tupel <math>(\mathcal X, \mathcal Z, (E_\phi)_{\phi\in\Phi}, (D_\theta)_{\theta\in\Theta})</math>, wobei <math>\mathcal X</math> ein [[Messraum (Mathematik)|messbarer Raum]], <math>\mathcal Z</math> eine beliebige Menge und <math>E_\phi:\mathcal X\to\mathcal Z, D_\theta:\mathcal Z\to \mathcal X</math> durch die Indexmengen <math>\Phi,\Theta</math> parametrisierte Funktionen sind. Die <math>E_\phi</math> werden ''Encoder'' und die <math>D_\theta</math> ''Decoder'' genannt. |
Ein Autoencoder ist ein geordnetes Tupel <math>(\mathcal X, \mathcal Z, (E_\phi)_{\phi\in\Phi}, (D_\theta)_{\theta\in\Theta})</math>, wobei <math>\mathcal X</math> ein [[Messraum (Mathematik)|messbarer Raum]], <math>\mathcal Z</math> eine beliebige Menge und <math>E_\phi:\mathcal X\to\mathcal Z, D_\theta:\mathcal Z\to \mathcal X</math> durch die Indexmengen <math>\Phi,\Theta</math> parametrisierte Funktionen sind. Die <math>E_\phi</math> werden ''Encoder'' und die <math>D_\theta</math> ''Decoder'' genannt. |
||
In Anwendungen wird oft <math>\mathcal X=\mathbb R^m,\mathcal Z = \mathbb R^n</math> für <math>m\ge n</math> gewählt. Für die Encoder und Decoder werden oft Familien von [[Perzeptron# |
In Anwendungen wird oft <math>\mathcal X=\mathbb R^m,\mathcal Z = \mathbb R^n</math> für <math>m\ge n</math> gewählt. Für die Encoder und Decoder werden oft Familien von [[Perzeptron#Mehrlagiges Perzeptron|mehrlagigen Perzeptronen]] gewählt. |
||
Intuitiv gesehen projiziert der Encoder die anfänglichen Daten in einen Raum mit üblicherweise tieferer Dimension, und der Decoder hat als Aufgabe, die ursprünglichen Daten wieder zu rekonstruieren. Das Ziel ist es nun, Encoder und Decoder so zu wählen, dass der Unterschied zwischen den ursprünglichen Daten und den rekonstruierten Daten möglichst gering ist. Dies formalisiert sich wie folgt. |
Intuitiv gesehen projiziert der Encoder die anfänglichen Daten in einen Raum mit üblicherweise tieferer Dimension, und der Decoder hat als Aufgabe, die ursprünglichen Daten wieder zu rekonstruieren. Das Ziel ist es nun, Encoder und Decoder so zu wählen, dass der Unterschied zwischen den ursprünglichen Daten und den rekonstruierten Daten möglichst gering ist. Dies formalisiert sich wie folgt. |
||
Die Aufgabe des Autoencoders ist es, für eine gegebene Funktion <math>d:\mathcal X\times\mathcal X\to[0,\infty]</math> (<math>d</math> kann beispielsweise eine [[metrischer Raum|Metrik]] sein) und eine gegebene Wahrscheinlichkeitsverteilung <math>\mu</math> auf <math>\mathcal X</math> den ''erwarteten Rekonstruktionsfehler'' |
Die Aufgabe des Autoencoders ist es, für eine gegebene Funktion <math>d:\mathcal X\times\mathcal X\to[0,\infty]</math> (<math>d</math> kann beispielsweise eine [[metrischer Raum|Metrik]] sein) und eine gegebene Wahrscheinlichkeitsverteilung <math>\mu</math> auf <math>\mathcal X</math> den ''erwarteten Rekonstruktionsfehler'' |
||
: <math> L(\phi,\theta) = \mathbb E[d(X, D_\theta(E_\phi(X)))]</math> |
: <math> L(\phi,\theta) = \mathbb E[d(X, D_\theta(E_\phi(X)))]</math> |
||
zu minimieren. Hierbei bezeichnet <math>X</math> eine <math>\mu</math>-verteilte, <math>\mathcal X</math>-wertige Zufallsvariable. |
zu minimieren. Hierbei bezeichnet <math>X</math> eine <math>\mu</math>-verteilte, <math>\mathcal X</math>-wertige Zufallsvariable. |
||
In Anwendungen ist oftmals <math>\mu=\frac{1}N\sum_{k=1}^N \delta_{x_k}</math>, wobei <math>(x_1,\dots,x_N)</math> ein Datensatz bestehend aus <math>N</math> Datenpunkten ist (hier bezeichnet <math>\delta_x</math> das Dirac-Maß im Punkte <math>x</math>). Zudem wird für <math>\mathcal X=\mathbb R^m</math> oftmals der quadratische Abstand <math>d((x_1,\dots,x_m), (y_1,\dots,y_m))=\sum_{k=1}^m (x_k-y_k)^2</math> gewählt. |
In Anwendungen ist oftmals <math>\mu=\frac{1}N\sum_{k=1}^N \delta_{x_k}</math>, wobei <math>(x_1,\dots,x_N)</math> ein Datensatz bestehend aus <math>N</math> Datenpunkten ist (hier bezeichnet <math>\delta_x</math> das Dirac-Maß im Punkte <math>x</math>). Zudem wird für <math>\mathcal X=\mathbb R^m</math> oftmals der quadratische Abstand <math>d((x_1,\dots,x_m), (y_1,\dots,y_m))=\sum_{k=1}^m (x_k-y_k)^2</math> gewählt. |
||
Zeile 34: | Zeile 34: | ||
== Erweiterungen == |
== Erweiterungen == |
||
[[Variational Autoencoder]] erlauben das Generieren von neuen Daten, da als interne Repräsentation eine Parametrisierung einer Verteilung gelernt wird. [[Diffusions Modell]]e können als eine Art hierarchische Variational Autoencoder aufgefasst werden |
[[Variational Autoencoder]] erlauben das Generieren von neuen Daten, da als interne Repräsentation eine Parametrisierung einer Verteilung gelernt wird. [[Diffusions Modell]]e können als eine Art hierarchische Variational Autoencoder aufgefasst werden<ref>https://angusturner.github.io/generative_models/2021/06/29/diffusion-probabilistic-models-I.html</ref>. |
||
== Weblinks == |
== Weblinks == |
||
* [ |
* [https://science.sciencemag.org/content/313/5786/504.abstract Reduzierung der Dimensionalität von Daten mit Neuronalen Netzwerken] (Science, 28 July 2006, Hinton & Salakhutdinov) |
||
== Einzelnachweise == |
== Einzelnachweise == |
Version vom 3. Januar 2023, 19:44 Uhr
Ein Autoencoder ist ein künstliches neuronales Netz, das dazu genutzt wird, effiziente Codierungen zu lernen. Das Ziel eines Autoencoders ist es, eine komprimierte Repräsentation (Encoding) für einen Satz Daten zu lernen und somit auch wesentliche Merkmale zu extrahieren. Dadurch kann er zur Dimensionsreduktion genutzt werden.

Der Autoencoder benutzt drei oder mehr Schichten:
- Eine Eingabeschicht. Bei der Gesichtserkennung könnten die Neuronen beispielsweise die Pixel einer Fotografie abbilden.
- Einige signifikant kleinere Schichten, die das Encoding bilden.
- Eine Ausgabeschicht, in der jedes Neuron die gleiche Bedeutung hat wie das entsprechende in der Eingabeschicht.
Wenn lineare Neuronen benutzt werden, ist er der Hauptkomponentenanalyse sehr ähnlich.
Definition
Ein Autoencoder ist ein geordnetes Tupel , wobei ein messbarer Raum, eine beliebige Menge und durch die Indexmengen parametrisierte Funktionen sind. Die werden Encoder und die Decoder genannt.
In Anwendungen wird oft für gewählt. Für die Encoder und Decoder werden oft Familien von mehrlagigen Perzeptronen gewählt.
Intuitiv gesehen projiziert der Encoder die anfänglichen Daten in einen Raum mit üblicherweise tieferer Dimension, und der Decoder hat als Aufgabe, die ursprünglichen Daten wieder zu rekonstruieren. Das Ziel ist es nun, Encoder und Decoder so zu wählen, dass der Unterschied zwischen den ursprünglichen Daten und den rekonstruierten Daten möglichst gering ist. Dies formalisiert sich wie folgt.
Die Aufgabe des Autoencoders ist es, für eine gegebene Funktion ( kann beispielsweise eine Metrik sein) und eine gegebene Wahrscheinlichkeitsverteilung auf den erwarteten Rekonstruktionsfehler
zu minimieren. Hierbei bezeichnet eine -verteilte, -wertige Zufallsvariable.
In Anwendungen ist oftmals , wobei ein Datensatz bestehend aus Datenpunkten ist (hier bezeichnet das Dirac-Maß im Punkte ). Zudem wird für oftmals der quadratische Abstand gewählt.
Training
Das Training des Auto-Encoders besteht in der Suche nach , für die möglichst klein wird. Ein Autoencoder wird häufig mit einer der vielen Backpropagation-Varianten (CG-Verfahren, Gradientenverfahren etc.) trainiert. Obwohl diese Methode oft sehr effektiv ist, gibt es fundamentale Probleme damit, neuronale Netzwerke mit verborgenen Schichten zu trainieren. Sind die Fehler einmal zu den ersten paar Schichten rückpropagiert, werden sie unbedeutend. Das bedeutet, dass das Netzwerk fast immer lernt, den Durchschnitt der Trainingsdaten zu lernen. Obwohl es fortgeschrittene Backpropagation-Methoden (wie die conjugate gradient method) gibt, die diesem Problem zum Teil abhelfen, läuft dieses Verfahren auf langsames Lernen und schlechte Ergebnisse hinaus. Um dem abzuhelfen, verwendet man anfängliche Gewichtungen, die dem Ergebnis schon ungefähr entsprechen. Dies wird Pretraining genannt.
Bei einer Pretraining-Technik, die von Geoffrey Hinton dazu entwickelt wurde, vielschichtige Autoencoder zu trainieren, werden benachbarte Schichten als begrenzte Boltzmann-Maschine behandelt, um eine gute Annäherung zu erreichen und dann Backpropagation als Fine-Tuning zu benutzen.
Erweiterungen
Variational Autoencoder erlauben das Generieren von neuen Daten, da als interne Repräsentation eine Parametrisierung einer Verteilung gelernt wird. Diffusions Modelle können als eine Art hierarchische Variational Autoencoder aufgefasst werden[1].
Weblinks
- Reduzierung der Dimensionalität von Daten mit Neuronalen Netzwerken (Science, 28 July 2006, Hinton & Salakhutdinov)