Autocodificatore

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

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 Y {\displaystyle Y} dati gli input X {\displaystyle X} . 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 ϕ {\displaystyle \phi } e ψ {\displaystyle \psi } , tali che:

ϕ : X F {\displaystyle \phi :{\mathcal {X}}\rightarrow {\mathcal {F}}}
ψ : F X {\displaystyle \psi :{\mathcal {F}}\rightarrow {\mathcal {X}}}
ϕ , ψ = a r g m i n ϕ , ψ X ( ψ ϕ ) X 2 {\displaystyle \phi ,\psi ={\underset {\phi ,\psi }{\operatorname {arg\,min} }}\,\|{\mathcal {X}}-(\psi \circ \phi ){\mathcal {X}}\|^{2}}

Nel caso più semplice, dato uno strato nascosto, lo stadio di codifica prende il valore iniziale x R d = X {\displaystyle \mathbf {x} \in \mathbb {R} ^{d}={\mathcal {X}}} e lo mappa su h R p = F {\displaystyle \mathbf {h} \in \mathbb {R} ^{p}={\mathcal {F}}}  :

h = σ ( W x + b ) {\displaystyle \mathbf {h} =\sigma (\mathbf {Wx} +\mathbf {b} )}

Questa immagine h {\displaystyle \mathbf {h} } viene solitamente indicato come codice, variabili latenti o rappresentazione latente, mentre σ {\displaystyle \sigma } è una funzione d'attivazione, ad esempio una funzione sigmoidea o un rettificatore. Inoltre, W {\displaystyle \mathbf {W} } è una matrice dei pesi e b {\displaystyle \mathbf {b} } è 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 h {\displaystyle \mathbf {h} } alla ricostruzione x {\displaystyle \mathbf {x'} } dei dati x {\displaystyle \mathbf {x} } :

x = σ ( W h + b ) {\displaystyle \mathbf {x'} =\sigma '(\mathbf {W'h} +\mathbf {b'} )}

dove σ , W ,  e  b {\displaystyle \mathbf {\sigma '} ,\mathbf {W'} ,{\text{ e }}\mathbf {b'} } 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 x {\displaystyle \mathbf {x'} } e x {\displaystyle \mathbf {x} } . La cosiddetta "funzione di perdita" (dall'inglese loss function), considerato l'errore quadratico medio, è

L ( x , x ) = x x 2 = x σ ( W ( σ ( W x + b ) ) + b ) 2 {\displaystyle {\mathcal {L}}(\mathbf {x} ,\mathbf {x'} )=\|\mathbf {x} -\mathbf {x'} \|^{2}=\|\mathbf {x} -\sigma '(\mathbf {W'} (\sigma (\mathbf {Wx} +\mathbf {b} ))+\mathbf {b'} )\|^{2}}

dove x {\displaystyle \mathbf {x} } è 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 F {\displaystyle {\mathcal {F}}} abbia una dimensionalità inferiore allo spazio di input X {\displaystyle {\mathcal {X}}} , il vettore delle caratteristiche ϕ ( x ) {\displaystyle \phi (x)} può essere considerato come una rappresentazione compressa dell'input x {\displaystyle x} . 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

  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.
  Portale Informatica
  Portale Statistica