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 | modifica wikitesto]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]
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 | modifica wikitesto]- ^ Autocodificatori, su it.mathworks.com. URL consultato il 22 luglio 2022.
- ^ Nonlinear principal component analysis using autoassociative neural networks, vol. 37, DOI:10.1002/aic.690370209.
- ^ a b c Deep Learning book, ISBN 978-0262035613.
- ^ 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.
- ^ An Introduction to Variational Autoencoders, vol. 12, DOI:10.1561/2200000056, arXiv:1906.02691.
- ^ 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.
- ^ a b Aurélien Géron, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, O’Reilly Media, Inc., 2019, pp. 739–740.
- ^ Modeling word perception using the Elman network, vol. 71, DOI:10.1016/j.neucom.2008.04.030.
- ^ Autoencoder for words, vol. 139, DOI:10.1016/j.neucom.2013.09.055.
- ^ Deep Learning in Neural Networks: An Overview, vol. 61, DOI:10.1016/j.neunet.2014.09.003, PMID 25462637, arXiv:1404.7828.
- ^ 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).
- ^ Pedro Domingos, The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World, Basic Books, 2015, ISBN 978-046506192-1.
- ^ Learning Deep Architectures for AI (PDF), vol. 2, DOI:10.1561/2200000006, PMID 23946944.