Wie können Autoencoder für das Clustering verwendet werden?

9

Angenommen, ich habe eine Reihe von Zeitbereichssignalen ohne Beschriftung . Ich möchte sie in 2 oder 3 Klassen gruppieren. Autoencoder sind unbeaufsichtigte Netzwerke, die lernen, die Eingänge zu komprimieren. also eine Eingabe , und , und und ausgegeben wird , können wir die folgenden Beziehungen finden:x(i)W 2 b 1 b 2 x ( i )W1W2b1b2x^(i)

x ( i ) = W 2 z ( i ) + b 2

z(i)=W1x(i)+b1
x^(i)=W2z(i)+b2

Also wäre eine komprimierte Form von und die Rekonstruktion der letzteren. So weit, ist es gut. x ( i ) x ( i )z(i)x(i)x^(i)

Was ich nicht verstehe, ist, wie dies für das Clustering verwendet werden könnte (wenn es überhaupt eine Möglichkeit gibt, dies zu tun). In der ersten Abbildung dieses Dokuments gibt es beispielsweise ein Blockdiagramm, das ich nicht sicher verstehe. Es verwendet das als Eingaben für das Feed-Forward-Netzwerk, es wird jedoch nicht erwähnt, wie dieses Netzwerk trainiert wird. Ich weiß nicht, ob ich etwas ignoriere oder ob das Papier unvollständig ist. Außerdem zeigt dieses Tutorial am Ende die vom Autoencoder gelernten Gewichte und sie scheinen Kernel zu sein, die ein CNN lernen würde, Bilder zu klassifizieren. Also ... Ich denke, die Gewichte des Autoencoders können irgendwie in einem Feed-Forward-Netzwerk zur Klassifizierung verwendet werden, aber ich bin mir nicht sicher, wie.z(i)

Meine Zweifel sind:

  1. Wenn ein Zeitdomänensignal der Länge (dh ), kann nur auch ein Vektor sein? Mit anderen Worten, wäre es sinnvoll, wenn eine Matrix mit einer ihrer Dimensionen größer als ? Ich glaube es würde nicht, aber ich möchte nur überprüfen. N x ( i )R 1 × N z ( i ) z ( i ) 1x(i)Nx(i)R1×Nz(i)z(i)1
  2. Welche dieser Größen wäre die Eingabe für einen Klassifikator? Wenn ich zum Beispiel einen klassischen MLP verwenden möchte, der so viele Ausgabeeinheiten wie Klassen hat, in die ich die Signale klassifizieren möchte, was soll ich am Eingang dieses vollständig verbundenen Netzwerks setzen ( , , irgendetwas anderes)?x ( i )z(i)x^(i)
  3. Wie kann ich die erlernten Gewichte und Vorurteile in diesem MLP verwenden? Denken Sie daran, dass wir davon ausgegangen sind, dass absolut keine Labels verfügbar sind, sodass es unmöglich ist, das Netzwerk zu trainieren. Ich denke, das erlernte und sollte irgendwie im vollständig verbundenen Netzwerk nützlich sein, aber ich sehe nicht, wie man sie verwendet.b iWibi

Beobachtung: Beachten Sie, dass ich ein MLP als Beispiel verwendet habe, da es die grundlegendste Architektur ist. Die Frage gilt jedoch für jedes andere neuronale Netzwerk, das zur Klassifizierung von Zeitbereichssignalen verwendet werden kann.

Tendero
quelle

Antworten:

11

Clustering ist in hohen Dimensionen schwierig durchzuführen, da der Abstand zwischen den meisten Punktpaaren ähnlich ist. Mit einem Autoencoder können Sie hochdimensionale Punkte in einem niedrigerdimensionalen Raum neu darstellen. Clustering an sich wird nicht ausgeführt - es ist jedoch ein nützlicher Vorverarbeitungsschritt für einen sekundären Clustering-Schritt. Sie würden jeden Eingabevektor einem Vektor (keine Matrix ...) mit einer kleineren Dimensionalität , z. B. 2 oder 3. Sie würden dann einen anderen Clustering-Algorithmus für alle Werte verwenden. z i z ixizizi

Vielleicht kann jemand anderes Auto-Encoder für Zeitreihen verwenden, weil ich das noch nie gemacht habe. Ich würde vermuten, dass Sie möchten, dass eine der Schichten eine 1D-Faltungsschicht ist, aber ich bin mir nicht sicher.

Einige Leute verwenden Autoencoder auch als Datenvorverarbeitungsschritt für die Klassifizierung. In diesem Fall würden Sie zuerst einen Autoencoder verwenden, um die to- Zuordnung zu berechnen , dann den to- -Teil wegwerfen und die to- Zuordnung als erste Ebene in der verwenden MLP.Z z x x zxzzx^xz

Tom
quelle
Und wie würden im letzten Fall die Gewichte der anderen Schichten im MLP gelernt, wenn die Daten vollständig unbeschriftet sind? Oder wäre dieser Ansatz (dh Autoencoder-MLP-Kombination) nur dann sinnvoll, wenn Etiketten verfügbar sind?
Tendero
Ja, ein MLP (auch bekannt als Feed-Forward-Neuronales Netzwerk) wird nur dann wirklich verwendet, wenn die Daten beschriftet sind. Andernfalls haben Sie keine Informationen zum Aktualisieren der Gewichte. Ein Autoencoder ist eine Art Trick, um neuronale Netze zu verwenden, da Sie versuchen, die ursprüngliche Eingabe vorherzusagen und keine Beschriftungen benötigen.
Tom
Die einzige Möglichkeit, ein NN für das Clustering zu verwenden, ist die von Ihnen erwähnte Methode, oder? Verwenden Sie nämlich einen Autoencoder und führen Sie dann einen Standard-Clustering-Algorithmus wie K-means aus.
Tendero
Nur so weiß ich es. Wenn jemand anderes eine Idee hat, würde ich mich freuen, sie zu hören. Sie können aber auch andere Algorithmen als K-means ausprobieren, da mit diesem bestimmten Algorithmus einige ziemlich strenge Annahmen verbunden sind (aber es ist trotzdem eine gute Sache, zuerst b / c zu versuchen, es ist schnell und einfach).
Tom
1

Bevor Sie fragen, wie Autoencoder zum Clustering von Daten verwendet werden kann. Wir müssen zuerst fragen: Können Autoencoder Daten gruppieren?


Da ein Autoencoder lernt, die Datenpunkte aus dem latenten Raum neu zu erstellen. Wenn wir davon ausgehen, dass der Autoencoder den latenten Raum „kontinuierlich“ abbildet, müssen die Datenpunkte, die aus demselben Cluster stammen, zusammen abgebildet werden. In gewisser Weise gruppiert der Encoder ähnliche Punkte „zusammen“ und gruppiert sie „zusammen“. Wir haben in der Literatur gesehen, dass Autoencoder diese Annahme der Kontinuität im latenten Raum nicht halten.

Zu unserem Vorteil arbeiten Variations-Autoencoder genau auf diese Weise. Variationscodierer lernen die latenten Raumabbildungen mit den beiden Haupteigenschaften: Kontinuität, Vollständigkeit1.
  • Die Kontinuitätseigenschaft stellt sicher, dass zwei nahe beieinander liegende Punkte im latenten Raum beim Decodieren nicht zwei völlig unterschiedliche Ausgaben ergeben.
  • Die Vollständigkeitseigenschaft stellt sicher, dass ein Punkt aus dem latenten Raum beim Abtasten eine aussagekräftige Ausgabe liefert, wenn er dekodiert wird.

Daher kann die Verwendung einer Autoencoder-Codierung selbst manchmal ausreichen. Es wurde jedoch daran gearbeitet, das Clustering explizit zu improvisieren / zu lernen. Der von Xie et al. (2016) 2 ist ein Beispiel, das "Cluster iterativ mit einer zusätzlichen Zielverteilung verfeinert, die aus einer aktuellen Zuweisung von weichen Clustern abgeleitet ist".

Parth Shah
quelle