Auto-Encoder: che cos’è? E a cosa serve? (Parte 1)

Una Dolce Introduzione di Auto-Encoder e Di Alcuni Casi di Uso Comune Con il Codice Python

Sfondo:

Autoencoder è un incustoditi rete neurale artificiale che impara a comprimere in modo efficiente e codificare i dati, quindi impara a ricostruire i dati di ritorno dal ridotto codificato rappresentazione di una rappresentazione che è il più vicino all’originale possibile di input.

Autoencoder, in base alla progettazione, riduce le dimensioni dei dati imparando come ignorare il rumore nei dati.

Ecco un esempio dell’immagine di input/output dal set di dati MNIST a un autoencoder.

Autoencoder per MNIST

Autoencoder Componenti:

Autoencoders si compone di 4 parti principali:

1 – Encoder: In cui il modello impara a ridurre le dimensioni di input e comprimere i dati di input in una rappresentazione codificata.

2 – Collo di bottiglia: che è il livello che contiene la rappresentazione compressa dei dati di input. Questa è la dimensione più bassa possibile dei dati di input.

3 – Decoder: In cui il modello impara a ricostruire i dati dalla rappresentazione codificata per essere il più vicino possibile all’input originale.

4 – Perdita di ricostruzione: Questo è il metodo che misura misura quanto bene il decoder sta eseguendo e quanto vicino l’uscita è l’ingresso originale.

L’addestramento prevede quindi l’utilizzo della propagazione posteriore per ridurre al minimo la perdita di ricostruzione della rete.

Ti starai chiedendo perché dovrei allenare una rete neurale solo per produrre un’immagine o dati esattamente uguali all’input! Questo articolo tratterà i casi d’uso più comuni per Autoencoder. Iniziamo:

Architettura Autoencoder:

L’architettura di rete per gli autoencoder può variare tra una semplice rete FeedForward, una rete LSTM o una rete neurale convoluzionale a seconda del caso d’uso. Esploreremo alcune di queste architetture nelle prossime righe.

Esistono molti modi e tecniche per rilevare anomalie e valori anomali. Ho trattato questo argomento in un altro post qui sotto:

Tuttavia, se hai correlato i dati di input, il metodo autoencoder funzionerà molto bene perché l’operazione di codifica si basa sulle funzionalità correlate per comprimere i dati.

Diciamo che abbiamo addestrato un autoencoder sul set di dati MNIST. Utilizzando una semplice rete neurale FeedForward, possiamo raggiungere questo obiettivo costruendo una semplice rete a 6 strati come di seguito:

L’output del codice sopra è:

Come puoi vedere nell’output, l’ultima perdita/errore di ricostruzione per il set di convalida è 0.0193 che è ottimo. Ora, se passo un’immagine normale dal set di dati MNIST, la perdita di ricostruzione sarà molto bassa (< 0.02) MA se provo a passare qualsiasi altra immagine diversa (outlier o anomalia), otterremo un valore di perdita di ricostruzione elevato perché la rete non è riuscita a ricostruire l’immagine/input che è considerata un’anomalia.

Avviso nel codice di cui sopra, è possibile utilizzare solo la parte encoder per comprimere alcuni dati o immagini e si può anche utilizzare solo la parte decoder per decomprimere i dati caricando i livelli decoder.

Ora, facciamo un po ‘ di rilevamento delle anomalie. Il codice seguente utilizza due immagini diverse per prevedere il punteggio di anomalia (errore di ricostruzione) utilizzando la rete di autoencoder che abbiamo addestrato sopra. la prima immagine è dal MNIST e il risultato è 5.43209. Ciò significa che l’immagine non è un’anomalia. La seconda immagine che ho usato è un’immagine completamente casuale che non appartiene al set di dati di allenamento e i risultati sono stati: 6789.4907. Questo errore elevato significa che l’immagine è un’anomalia. Lo stesso concetto si applica a qualsiasi tipo di set di dati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.