Autoencoder

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springenZur Suche springen

EinAutoencoder ist einkü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.

Schema eines Autoencoders

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 derHauptkomponentenanalyse sehr ähnlich.

Inhaltsverzeichnis

Definition

[Bearbeiten |Quelltext bearbeiten]

Ein Autoencoder ist ein geordnetes Tupel(X,Z,(Eϕ)ϕΦ,(Dθ)θΘ){\displaystyle ({\mathcal {X}},{\mathcal {Z}},(E_{\phi })_{\phi \in \Phi },(D_{\theta })_{\theta \in \Theta })}, wobeiX{\displaystyle {\mathcal {X}}} einmessbarer Raum,Z{\displaystyle {\mathcal {Z}}} eine beliebige Menge undEϕ:XZ,Dθ:ZX{\displaystyle E_{\phi }:{\mathcal {X}}\to {\mathcal {Z}},D_{\theta }:{\mathcal {Z}}\to {\mathcal {X}}} durch die IndexmengenΦ,Θ{\displaystyle \Phi ,\Theta } parametrisierte Funktionen sind. DieEϕ{\displaystyle E_{\phi }} werdenEncoder und dieDθ{\displaystyle D_{\theta }}Decoder genannt.

In Anwendungen wird oftX=Rm,Z=Rn{\displaystyle {\mathcal {X}}=\mathbb {R} ^{m},{\mathcal {Z}}=\mathbb {R} ^{n}} fürmn{\displaystyle m\geq n} gewählt. Für die Encoder und Decoder werden oft Familien vonmehrlagigen 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 Funktiond:X×X[0,]{\displaystyle d:{\mathcal {X}}\times {\mathcal {X}}\to [0,\infty ]} (d{\displaystyle d} kann beispielsweise eineMetrik sein) und eine gegebene Wahrscheinlichkeitsverteilungμ{\displaystyle \mu } aufX{\displaystyle {\mathcal {X}}} denerwarteten Rekonstruktionsfehler

L(ϕ,θ)=E[d(X,Dθ(Eϕ(X)))]{\displaystyle L(\phi ,\theta )=\mathbb {E} [d(X,D_{\theta }(E_{\phi }(X)))]}

zu minimieren. Hierbei bezeichnetX{\displaystyle X} eineμ{\displaystyle \mu }-verteilte,X{\displaystyle {\mathcal {X}}}-wertige Zufallsvariable.

In Anwendungen ist oftmalsμ=1Nk=1Nδxk{\displaystyle \mu ={\frac {1}{N}}\sum _{k=1}^{N}\delta _{x_{k}}}, wobei(x1,,xN){\displaystyle (x_{1},\dots ,x_{N})} ein Datensatz bestehend ausN{\displaystyle N} Datenpunkten ist (hier bezeichnetδx{\displaystyle \delta _{x}} das Dirac-Maß im Punktex{\displaystyle x}). Zudem wird fürX=Rm{\displaystyle {\mathcal {X}}=\mathbb {R} ^{m}} oftmals der quadratische Abstandd((x1,,xm),(y1,,ym))=k=1m(xkyk)2{\displaystyle d((x_{1},\dots ,x_{m}),(y_{1},\dots ,y_{m}))=\sum _{k=1}^{m}(x_{k}-y_{k})^{2}} gewählt.

Training

[Bearbeiten |Quelltext bearbeiten]

Das Training des Auto-Encoders besteht in der Suche nachϕΦ,θΘ{\displaystyle \phi \in \Phi ,\theta \in \Theta }, für dieL(ϕ,θ){\displaystyle L(\phi ,\theta )} möglichst klein wird.Ein Autoencoder wird häufig mit einer der vielenBackpropagation-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. Zur Verbesserung verwendet man initiale Gewichtungen, die dem Ergebnis schon ungefähr entsprechen. Dies wird Pretraining genannt.

Bei einer Pretraining-Technik, die vonGeoffrey Hinton dazu entwickelt wurde, vielschichtige Autoencoder zu trainieren, werden benachbarte Schichten alsRestricted Boltzmann Machine behandelt, um eine gute Annäherung zu erreichen und dann Backpropagation als Fine-Tuning zu benutzen.

Erweiterungen

[Bearbeiten |Quelltext bearbeiten]

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

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. https://angusturner.github.io/generative_models/2021/06/29/diffusion-probabilistic-models-I.html
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Autoencoder&oldid=249346012
Kategorie: