Autocodificatore

rete neurale che apprende codifiche di dati efficienti in maniera non supervisionata
(Reindirizzamento da Autoencoder)

Un autocodificatore[1] o autoencoder è un tipo di rete neurale artificiale utilizzato per apprendere codifiche efficienti di dati non etichettati, rientrando quindi nel campo dell'apprendimento non supervisionato.[2] La codifica viene convalidata e perfezionata tentando di ricostruire l'input dalla codifica. L'autocodificatore apprende una rappresentazione (codifica) di un insieme di dati, tipicamente per la riduzione della dimensionalità, addestrando la rete a ignorare i dati insignificanti ("rumore").

Esistono varianti che mirano a vincolare le rappresentazioni apprese ad assumere proprietà utili.[3] Esempi sono gli autoencoder regolarizzati (Sparse, Denoising e Contractive), che sono efficaci nell'apprendimento delle rappresentazioni che verranno usate in una successiva classificazione,[4] e gli autoencoder variazionali, impiegati come modelli generativi.[5] Gli autoencoder vengono applicati a molti problemi, tra cui il riconoscimento facciale,[6] il rilevamento di caratteristiche[7],di anomalie e la comprensione del significato delle parole.[8][9] Gli autoencoder sono anche modelli generativi che possono generare casualmente nuovi dati simili ai dati di addestramento di input alla rete.[7]

Architettura di base modifica

Un autoencoder ha due parti principali: un codificatore che mappa l'input nel codice e un decodificatore che fornisce una ricostruzione dell'input a partire dal codice.

Il modo più semplice per eseguire perfettamente la copia è duplicare il segnale. Invece, gli autoencoder sono in genere costretti a ricostruire l'input in modo approssimativo, preservando solo gli aspetti più rilevanti dei dati nella copia.

L'idea degli autoencoder è stata popolare per decenni, con le prime applicazioni risalenti agli anni 1980.[3][10][11] Tradizionalmente, sono stati usati per la riduzione della dimensionalità o l'apprendimento delle caratteristiche, ma il concetto è diventato ampiamente utilizzato per l'apprendimento di modelli generativi di dati. Alcune delle intelligenze artificiali (IA) più potenti degli anni 2010 hanno coinvolto autoencoder impilati all'interno di reti neurali profonde.[12]

 
Schema basilare di un autoencoder: X sono i dati iniziali, h è la codifica, mentre X' è la ricostruzione dei dati iniziali dalla codifica

La forma più semplice di un autocodificatore è una rete neurale feed-forward, non ricorrente, simile ai singoli percettroni che costituiscono un percettrone multistrato, utilizzando uno strato di input e uno strato di output collegati da uno o più strati nascosti. Lo strato di output ha lo stesso numero di nodi (o neuroni) dello strato di input. Il suo scopo è ricostruire i suoi input (minimizzando la differenza tra input e output), invece di prevedere un valore obiettivo   dati gli input  . Pertanto, gli autoencoder rientrano negli algoritmi di apprendimento non supervisionato.

Un autoencoder è costituito da due parti, il codificatore e il decodificatore, che possono essere definiti come le mappe   e  , tali che:

 
 
 

Nel caso più semplice, dato uno strato nascosto, lo stadio di codifica prende il valore iniziale   e lo mappa su   :

 

Questa immagine   viene solitamente indicato come codice, variabili latenti o rappresentazione latente, mentre   è una funzione d'attivazione, ad esempio una funzione sigmoidea o un rettificatore. Inoltre,   è una matrice dei pesi e   è un vettore di bias. I pesi e i bias vengono in genere inizializzati in modo casuale e poi aggiornati iterativamente tramite retropropagazione. Successivamente, si ha la fase di decodifica, nel quale si passa dalla mappa   alla ricostruzione   dei dati  :

 

dove   per il decodficatore non sono necessariamente correlata con gli equivalenti del codificatore.

Gli autoencoder sono addestrati per minimizzare l'errore di ricostruzione, cioè la differenza tra  e  . La cosiddetta "funzione di perdita" (dall'inglese loss function), considerato l'errore quadratico medio, è

 

dove   è di solito mediato su tutto l'insieme di addestramento.

Come accennato in precedenza, l'addestramento dell'autoencoder viene eseguito tramite la retropropagazione dell'errore, proprio come in altre reti neurali feed-forward.

Nei casi in cui lo spazio delle caratteristiche   abbia una dimensionalità inferiore allo spazio di input  , il vettore delle caratteristiche   può essere considerato come una rappresentazione compressa dell'input  . Questo è il caso degli autoencoder non completi. Se gli strati nascosti sono più grandi (detti "sovracompleti", o overcomplete) o uguali allo strato di input, o se le unità nascoste hanno una capacità sufficiente, un autocodificatore può potenzialmente apprendere la funzione identità e diventare inutile. Tuttavia, i risultati sperimentali hanno rilevato che gli autoencoder sovracompleti potrebbero ancora apprendere funzioni utili.[13] Nell'ambiente ideale, la dimensione del codice e la capacità del modello potrebbero essere impostate sulla base della complessità della distribuzione dei dati da modellare. Un modo per farlo è sfruttare le varianti del modello note come autoencoder regolarizzati.[3]

Note modifica

  1. ^ Autocodificatori, su it.mathworks.com. URL consultato il 22 luglio 2022.
  2. ^ Nonlinear principal component analysis using autoassociative neural networks, vol. 37, DOI:10.1002/aic.690370209.
  3. ^ a b c Deep Learning book, ISBN 978-0262035613.
  4. ^ Pascal Vincent e Hugo Larochelle, Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion, in Journal of Machine Learning Research, vol. 11, 3371–3408, 2010.
  5. ^ An Introduction to Variational Autoencoders, vol. 12, DOI:10.1561/2200000056, arXiv:1906.02691.
  6. ^ Hinton GE, Krizhevsky A, Wang SD. Transforming auto-encoders. In International Conference on Artificial Neural Networks 2011 Jun 14 (pp. 44-51). Springer, Berlin, Heidelberg.
  7. ^ a b Aurélien Géron, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, O’Reilly Media, Inc., 2019, pp. 739–740.
  8. ^ Modeling word perception using the Elman network, vol. 71, DOI:10.1016/j.neucom.2008.04.030.
  9. ^ Autoencoder for words, vol. 139, DOI:10.1016/j.neucom.2013.09.055.
  10. ^ Deep Learning in Neural Networks: An Overview, vol. 61, DOI:10.1016/j.neunet.2014.09.003, PMID 25462637, arXiv:1404.7828.
  11. ^ Hinton, G. E., & Zemel, R. S. (1994). Autoencoders, minimum description length and Helmholtz free energy. In Advances in neural information processing systems 6 (pp. 3-10).
  12. ^ Pedro Domingos, The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World, Basic Books, 2015, ISBN 978-046506192-1.
  13. ^ Learning Deep Architectures for AI (PDF), vol. 2, DOI:10.1561/2200000006, PMID 23946944.