Come possono essere utilizzati i codificatori automatici per il clustering?


9

Supponiamo che io abbia una serie di segnali nel dominio del tempo senza assolutamente etichette . Voglio raggrupparli in 2 o 3 classi. I codificatori automatici sono reti senza supervisione che imparano a comprimere gli input. Quindi, dato un input , pesi e , distorsioni b_1 e b_2 e output \ hat {x} ^ {(i)} , possiamo trovare le seguenti relazioni:X(io)W1W2B1B2X^(io)

z(io)=W1X(io)+B1
X^(io)=W2z(io)+B2

Quindi z(io) sarebbe una forma compressa di X(io) e X^(io) la ricostruzione di quest'ultimo. Fin qui tutto bene.

Quello che non capisco è come questo potrebbe essere usato per il clustering (se c'è un modo per farlo). Ad esempio, nella prima figura di questo documento , c'è uno schema a blocchi che non sono sicuro di aver capito. Utilizza z(io) come input per la rete feed-forward, ma non viene menzionato il modo in cui tale rete viene addestrata. Non so se c'è qualcosa che sto ignorando o se il documento è incompleto. Inoltre, questo tutorial alla fine mostra i pesi appresi dall'auto-codificatore e sembrano essere dei kernel che una CNN imparerebbe a classificare le immagini. Quindi ... immagino che i pesi dell'autoencoder possano essere usati in qualche modo in una rete feed-forward per la classificazione, ma non sono sicuro di come.

I miei dubbi sono:

  1. Se X(io) è un segnale nel dominio del tempo di lunghezza N (ovvero X(io)R1×N ), può z(io) anche solo un vettore? In altre parole, avrebbe senso che z(io) fosse una matrice con una delle sue dimensioni maggiore di 1 ? Credo che non lo farebbe, ma voglio solo controllare.
  2. Quale di queste quantità sarebbe l'input per un classificatore? Ad esempio, se voglio usare un MLP classico che ha tante unità di output quante sono le classi in cui voglio classificare i segnali, cosa dovrei inserire all'ingresso di questa rete completamente connessa ( z(io) , X^(io) , qualsiasi altra cosa)?
  3. Come posso usare i pesi e le inclinazioni apprese in questo MLP? Ricorda che abbiamo presupposto che non siano assolutamente disponibili etichette , quindi è impossibile addestrare la rete. Penso che i dotti e dovrebbero essere utili in qualche modo nella rete completamente connessa, ma non vedo come usarli.WioBio

Osservazione: nota che ho usato un MLP come esempio perché è l'architettura più elementare, ma la domanda si applica a qualsiasi altra rete neurale che potrebbe essere usata per classificare i segnali nel dominio del tempo.

Risposte:


11

Il clustering è difficile da eseguire in dimensioni elevate perché la distanza tra la maggior parte delle coppie di punti è simile. L'uso di un codificatore automatico consente di rappresentare nuovamente i punti di dimensione elevata in uno spazio di dimensione inferiore. Non esegue il clustering di per sé, ma è un passaggio di preelaborazione utile per un passaggio di clustering secondario. Dovresti mappare ogni vettore di input su un vettore (non una matrice ...) con una dimensionalità più piccola, diciamo 2 o 3. Quindi utilizzeresti qualche altro algoritmo di clustering su tutti i valori di . Xioziozio

Forse qualcun altro può intervenire sull'uso degli auto-codificatori per le serie storiche, perché non l'ho mai fatto. Sospetto che vorresti che uno dei livelli fosse un livello convoluzionale 1D, ma non ne sono sicuro.

Alcune persone usano i codificatori automatici come fase di pre-elaborazione dei dati anche per la classificazione. In questo caso, dovresti prima utilizzare un codificatore automatico per calcolare la mappatura -to- , quindi eliminare la parte -to- e utilizzare la mappatura -to- come primo livello nel MLP.XzzX^Xz


E nell'ultimo caso, come verrebbero appresi i pesi degli altri strati nella MLP se i dati non fossero totalmente etichettati? Oppure questo approccio (cioè la combinazione autoencoder-MLP) avrebbe senso solo se le etichette fossero disponibili?
Tendero,

Sì, un MLP (noto anche come rete neurale feed-forward) viene realmente utilizzato solo se i dati sono etichettati. Altrimenti non hai informazioni da utilizzare per aggiornare i pesi. Un codificatore automatico è una sorta di "trucco" per utilizzare le reti neurali perché stai cercando di prevedere l'input originale e non hai bisogno di etichette.
Tom,

Quindi l'unico modo per usare un NN per fare il clustering sarebbe il metodo che hai citato, giusto? Vale a dire, utilizzare un codificatore automatico e quindi eseguire un algoritmo di clustering standard come K-medie.
Tendero,

Questo è l'unico modo che conosco. Se qualcun altro ha un'idea sarei felice di ascoltarla. Potresti provare altri algoritmi oltre a K-significa però, poiché ci sono alcune ipotesi piuttosto rigorose associate a quel particolare algoritmo (ma comunque è una buona cosa provare prima b / c è veloce e facile).
Tom,

1

Prima di chiedere "come si può utilizzare il codificatore automatico per raggruppare i dati?" dobbiamo prima chiedere "I codificatori automatici possono raggruppare i dati?"


Poiché un autoencoder impara a ricreare i punti dati dallo spazio latente. Se assumiamo che il codificatore automatico esegua il mapping dello spazio latente in modo "continuo", i punti dati che provengono dallo stesso cluster devono essere mappati insieme. Quindi, in un certo senso, l'encoder raggrupperà punti simili "insieme", raggruppandoli "insieme". In letteratura abbiamo visto che gli autoencoder non riescono a sostenere questa ipotesi di continuità nello spazio latente.

Ma a nostro vantaggio, gli autoencoder variazionali funzionano esattamente in questo modo. Gli encoder variazionali apprendono le mappature dello spazio latente con le due proprietà principali: continuità, completezza1.
  • La proprietà di continuità assicura che due punti vicini l'uno all'altro nello spazio latente non forniscano due output completamente diversi quando decodificati.
  • La proprietà completezza assicura che durante il campionamento un punto dallo spazio latente fornirà un output significativo quando viene decodificato.

Pertanto, l'utilizzo di una codifica automatica dei codificatori può a volte essere sufficiente. Tuttavia, è stato fatto un lavoro per improvvisare / apprendere esplicitamente il clustering. L'algoritmo proposto da Xie et al. (2016) 2 è un esempio, che "perfeziona in modo iterativo i cluster con una distribuzione del target ausiliario derivata da un'attuale assegnazione di soft cluster".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.