Un autoencoder è un tipo di architettura di rete neurale progettata per comprimere (codificare) in modo efficiente i dati di input fino alle caratteristiche essenziali, quindi ricostruire (decodificare) l'input originale a partire da questa rappresentazione compressa.
Utilizzando il machine learning senza supervisione, gli autoencoder vengono addestrati a scoprire le variabili latenti dei dati di input, ossia variabili nascoste o casuali che, nonostante non siano direttamente osservabili, informano il modo in cui i dati vengono distribuiti. L'insieme delle variabili latenti di un determinato set di dati di input è chiamato spazio latente. Nel corso dell'addestramento, l'autoencoder apprende quali variabili latenti possono essere utilizzate per ricostruire più accuratamente i dati originali: questa rappresentazione dello spazio latente rappresenta quindi solo le informazioni più essenziali contenute nell'input originale.
La maggior parte dei tipi di autoencoder viene utilizzata per attività di intelligenza artificiale relative all'estrazione delle caratteristiche, come la compressione dei dati, il denoising nelle immagini, il rilevamento delle anomalie e il riconoscimento facciale. Alcuni tipi di autoencoder, come gli autoencoder variazionali (VAE) e gli autoencoder antagonisti (AAE), adattano l'architettura dell'autoencoder per l'uso in attività generative, come la generazione di immagini o la generazione di dati di serie temporali.
Sebbene tutti i modelli di autoencoder includono sia un encoder che un decoder, non tutti i modelli encoder-decoder sono autoencoder.
I framework di encoder-decoder , in cui una rete encoder estrae le caratteristiche principali dei dati di input e una rete decoder riceve i dati delle caratteristiche estratte come input, vengono utilizzati in una varietà di modelli di deep learning, come le reti neurali convoluzionali (CNN) utilizzate nelle attività di computer vision come la segmentazione delle immagini o le reti neurali ricorrenti (RNN) utilizzate nelle attività sequence-to-sequence (seq2seq).
Nella maggior parte delle applicazioni di modelli di encoder-decoder, l'output della rete neurale è diverso dal suo input. Ad esempio, nei modelli di segmentazione delle immagini come U-Net, la rete encoder estrae i dati delle caratteristiche dall'immagine di input per determinare la classificazione semantica di diversi pixel; utilizzando la mappa delle caratteristiche e le classificazioni dei pixel, la rete decoder costruisce quindi maschere di segmentazione per ciascun oggetto o regione nell'immagine. L'obiettivo di questi modelli encoder-decoder è etichettare accuratamente i pixel in base alla loro classe semantica: vengono addestrati tramite apprendimento supervisionato, ottimizzando le previsioni del modello rispetto a un set di dati di "ground truth" costituito da immagini etichettate da esperti umani.
Gli autoencoder sono un sottoinsieme specifico di architetture di encoder-decoder addestrate tramite apprendimento non supervisionato a ricostruire i propri dati di input.
Poiché non si basano su dati di addestramento etichettati, gli autoencoder non sono considerati un metodo di apprendimento supervisionato. Come tutti i metodi di apprendimento non supervisionato, gli autocodificatori sono addestrati a scoprire modelli nascosti nei dati non etichettati, piuttosto che a prevedere modelli noti dimostrati nei dati di addestramento etichettati; tuttavia, come i modelli di apprendimento supervisionato (e a differenza della maggior parte degli esempi di apprendimento non supervisionato) gli autoencoder hanno una verità fondamentale con cui misurare il loro output: l'input originale stesso (o una sua versione modificata). Per questo motivo, sono considerati “apprendimento auto-supervisionato”, quindi autoencoder.
Gli autoencoder scoprono le variabili latenti passando i dati di input attraverso un “collo di bottiglia” prima che raggiungano il decoder. Questo costringe l'encoder a imparare a estrarre e a far passare solo le informazioni più utili a ricostruire con precisione l'input originale.
Sebbene diverse varianti di autoencoder alterino alcuni elementi della loro rete neurale artificiale per adattarsi al meglio a obiettivi e tipi di dati specifici, tutti gli autoencoder condividono elementi strutturali fondamentali:
L'encoder comprende strati che codificano una rappresentazione compressa dei dati di input attraverso la riduzione della dimensionalità. In un tipico autoencoder, gli strati nascosti della rete neurale contengono un numero progressivamente inferiore di nodi rispetto allo strato di input: mentre i dati attraversano gli strati dell'encoder, vengono compressi dal processo di “spremitura” in meno dimensioni.
Il collo di bottiglia (o “codice”) contiene la rappresentazione più compressa dell'input: è sia lo strato di output della rete di encoder che lo strato di input della rete di decoder. Un obiettivo fondamentale della progettazione e dell'addestramento di un autoencoder è la scoperta del numero minimo di caratteristiche importanti (o dimensioni) necessarie per una ricostruzione efficace dei dati di input. La rappresentazione dello spazio latente, ovvero il codice, che emerge da questo livello viene quindi inserita nel decoder.
Il decoder comprende strati nascosti con un numero progressivamente maggiore di nodi che decomprimono (o decodificano) la rappresentazione codificata dei dati, ricostruendo infine i dati nella loro forma originale precedente alla codifica. Questo output ricostruito viene quindi confrontato con la “ground truth” (i dati veri), che nella maggior parte dei casi è semplicemente l'input originale, per valutare l'efficacia dell'autoencoder. La differenza tra l'output e la ground truth è chiamata errore di ricostruzione.
In alcune applicazioni di autoencoder, il decoder può essere scartato dopo l'addestramento: in questi casi, l'unico scopo del decoder è addestrare l'encoder (in modo simile al ruolo del discriminatore in una rete generativa avversaria (GAN)), che viene poi utilizzato come componente di una rete neurale diversa. In molti autoencoder, il decoder continua a svolgere uno scopo dopo l'addestramento: ad esempio, nei VAE, il decoder emette nuovi campioni di dati.
Uno dei principali vantaggi dell'utilizzo degli autoencoder rispetto ad altre tecniche di dimensionalità, come l'analisi delle componenti principali (PCA), è che gli autoencoder possono acquisire complesse correlazioni non lineari. Di conseguenza, le funzioni di attivazione utilizzate negli autoencoder sono tipicamente funzioni non lineari come la funzione sigmoidea.
Diversi tipi di autoencoder apportano adattamenti a questa struttura per adattarsi meglio a compiti e tipi di dati diversi. Oltre a selezionare il tipo appropriato di rete neurale, ad esempio un'architettura basata su CNN, un'architettura basata su RNN come la long short-term memory, un'architettura trasformativa o una semplice rete neurale feed-forward, la progettazione di un autoencoder comporta molteplici iperparametri:
Gli autoencoder incompleti sono una semplice struttura di autoencoder utilizzata principalmente per la riduzione della dimensionalità. I loro livelli nascosti contengono meno nodi rispetto ai livelli di input e output e la capacità del collo di bottiglia è fissa.
L'obiettivo di questo collo di bottiglia è impedire che l'autoencoder si adatti eccessivamente ai suoi dati di addestramento. Senza limitare sufficientemente la capacità del collo di bottiglia, la rete tende ad apprendere la funzione identità tra input e l'uscita: in altre parole, può imparare a minimizzare la perdita di ricostruzione semplicemente copiando direttamente l'input. Forzando una compressione significativa dei dati, la rete neurale deve imparare a conservare solo le caratteristiche più essenziali per la ricostruzione.
Ma se l'encoder e il decoder hanno una capacità abbastanza elevata, vale a dire, se stanno elaborando input di dati grandi o complessi, allora l'autoencoder (anche con un collo di bottiglia) potrebbe comunque apprendere la funzione di identità, rendendola inutile. Ciò rende inflessibili gli autoencoder incompleti e ne limita la capacità.
Gli autoencoder regolarizzati risolvono le carenze degli autoencoder incompleti introducendo la regolarizzazione: tecniche che limitano o modificano il modo in cui il modello calcola l'errore di ricostruzione. Questi termini di regolarizzazione non solo riducono il sovraccarico, ma consentono anche all'autoencoder di apprendere caratteristiche o funzioni utili.
Gli autoencoder sparsi (SAE) impongono un vincolo di scarsità: invece di creare un collo di bottiglia delle informazioni riducendo il numero di nodi in ogni livello nascosto, i SAE creano un collo di bottiglia riducendo il numero di nodi che possono essere attivati contemporaneamente.
Mentre un autoencoder standard incompleto utilizzerà l'intera rete neurale per ogni osservazione, gli autoencoder con una funzione di scarsità sono penalizzati per ogni neurone che è stato attivato oltre una certa soglia. Questo permette all'encoder e al decoder di avere una capacità maggiore senza un corrispondente rischio di overfitting ai dati di addestramento (perché non tutti i neuroni saranno attivati). Consente inoltre agli strati nascosti di contenere nodi dedicati alla scoperta di caratteristiche specifiche: la funzione di scarsità garantisce che “vale la pena” attivare tali nodi solo se queste caratteristiche sono presenti.
Sebbene il calcolo dell'errore di ricostruzione e la successiva ottimizzazione dei pesi dei parametri attraverso la retropropagazione avvengano separatamente, questa ottimizzazione viene regolarizzata da questa funzione di scarsità. L'autoencoder è quindi costretto ad apprendere la rappresentazione dello spazio latente più efficace entro i vincoli di scarsità dati.
Le funzioni utilizzate per imporre un vincolo di scarsità sono tipicamente la regolarizzazione L1 o la divergenza di KL.
La divergenza di Kullback-Leibler (KL) misura la differenza tra due distribuzioni di probabilità. Se utilizzata nel contesto dei SAE, la penalità inflitta alla rete dopo ogni batch di addestramento è proporzionata alla divergenza di KL tra la distribuzione target dei valori di attivazione, la scarsità desiderata e la distribuzione effettiva dei valori di attivazione. Come verrà discusso più avanti in questo articolo, la divergenza di KL viene utilizzata anche per ottimizzare l'accuratezza delle distribuzioni di probabilità apprese dagli autoencoder variazionali (VAE).
Introdotti per la prima volta nel 2011 da ricercatori dell'Université de Montréal, gli autoencoder contrattivi1 sono progettati per essere insensibili a piccole variazioni (o “rumore”) nei dati di input al fine di ridurre il sovraccarico e acquisire più efficacemente le informazioni essenziali.
Ciò si ottiene aggiungendo un termine di regolarizzazione nella formazione, penalizzando la rete per aver modificato l'output in risposta a cambiamenti non sufficientemente ampi nell'input. Questo termine di penalità viene calcolato utilizzando due concetti matematici:
Nello specifico, il termine di penalità è la norma di Frobenius della matrice Jacobiana delle attivazioni neuronali nella rete di codifica rispetto all'input. Questo termine di penalità e l'algoritmo della funzione di perdita utilizzati per ridurre l'errore di ricostruzione sono avversari: la funzione di perdita di ricostruzione tende a osservare le variazioni nei dati di input mentre il termine di penalità tende a ignorarle. Combinando entrambi i termini, la rete è costretta ad apprendere una rappresentazione compressa dell'input che contiene solo le variabili più consequenziali.
Gli autoencoder di denoising ricevono dati di input parzialmente corrotti e vengono addestrati a ripristinare l'input originale rimuovendo le informazioni inutili attraverso la riduzione della dimensionalità.
A differenza della maggior parte degli autoencoder, gli autoencoder di denoising non hanno come input i dati di verità. Invece, il rumore gaussiano viene aggiunto ai dati originali, ad esempio aggiungendo un'immagine statica casuale, e l'autoencoder di denoising (DAE) impara a filtrarlo. Durante l'addestramento del modello, l'errore di ricostruzione dell'output negato non viene misurato rispetto ai dati di input danneggiati, ma rispetto all'immagine originale.
Oltre a evitare l'overfitting, questa tecnica di addestramento rende gli autoencoder di denoising molto utili per ripulire file audio e immagini rumorose o corrotte. Gli autoencoder di denoising sono utlizzati anche come paradigmi di addestramento fondamentali per modelli di generazione di immagini all'avanguardia come Stable Diffusion.4
Gli autoencoder variazionali (VAE) sono modelli generativi che apprendono le rappresentazioni compresse dei loro dati di addestramento come distribuzioni di probabilità, che vengono utilizzati per generare nuovi dati di esempio creando variazioni di tali rappresentazioni apprese.
La differenza fondamentale tra i VAE e gli altri tipi di autoencoder è che mentre la maggior parte degli autoencoder apprende modelli di spazio latente discreto, i VAE apprendono modelli a variabili latenti continue. Piuttosto che un singolo vettore di codifica per lo spazio latente, i VAE modellano due vettori diversi: un vettore delle medie, “μ”, e un vettore delle deviazioni standard, “σ”. Poiché questi vettori acquisiscono gli attributi latenti come una distribuzione di probabilità, ovvero apprendono una codifica stocastica anziché una codifica deterministica, i VAE consentono l'interpolazione e il campionamento casuale, ampliando notevolmente le loro capacità e i loro casi d'uso. Ciò significa che i VAE sono modelli di intelligenza artificiale generativa.
In termini più semplici, i VAE imparano a codificare le caratteristiche importanti apprese dagli input nei dataset su cui sono addestrati in un modo flessibile e approssimativo, che consente loro di generare nuovi campioni che assomigliano ai dati di formazione originali. La funzione di perdita utilizzata per ridurre al minimo l'errore di ricostruzione è regolarizzata dalla divergenza di KL tra la distribuzione di probabilità dei dati di addestramento (la distribuzione a priori) e la distribuzione di variabili latenti apprese dal VAE (la distribuzione a posteriori). Questa funzione di perdita regolarizzata consente ai VAE di generare nuovi campioni simili ai dati su cui sono stati addestrati evitando il sovradattamento, il che in questo caso significherebbe generare nuovi campioni troppo identici ai dati originali.
Per generare un nuovo campione, il VAE campiona un vettore latente casuale (ε) dall'interno dell'unità gaussiana, in altre parole, seleziona un punto di partenza casuale dall'interno della distribuzione normale, lo sposta in base alla media della distribuzione latente (μ) e lo scala in base alla varianza della distribuzione latente (σ). Questo processo, chiamato trucco della riparametrizzazione,,5 evita il campionamento diretto della distribuzione variazionale: poiché il processo è casuale, non ha derivate, il che elimina la necessità di retropropagazione durante il processo di campionamento.
Quando un VAE viene utilizzato per attività generative, spesso l'encoder può essere scartato dopo l'addestramento. Le evoluzioni più avanzate dei VAE, come i VAE condizionali, offrono all'utente un maggiore controllo sui campioni generati fornendo input condizionali che modificano l'output dell'encoder.
Sia gli autoencoder generativi che quelli deterministici hanno un'ampia varietà di casi d'uso per diversi campi e tipi di dati.
Ottieni una comprensione approfondita delle reti neurali, delle loro funzioni di base e dei fondamenti per costruirne una.
IBM Granite è la nostra famiglia di modelli AI aperti, efficienti e affidabili, su misura per le aziende e ottimizzati per scalare le applicazioni di AI. Esplora le opzioni di linguaggio, codice, serie temporali e guardrail.
Abbiamo intervistato 2.000 organizzazioni in merito alle loro iniziative di AI per scoprire cosa funziona, cosa non funziona e come giocare d’anticipo.
Scopri come incorporare in tutta sicurezza l’AI generativa e il machine learning nella tua azienda.
Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.
Tutti i link sono esterni a ibm.com
1 "Contractive Auto-Encoders: Explicit Invariance During Feature Extraction", Proceedings of the 28th International Conference on Machine Learning, luglio 2011
2 "Frobenius Norm," Wolfram Mathworld
3 "Matrix Norms," UC Berkeley, febbraio 2021
4 "High-Resolution Image Synthesis With Latent Diffusion Models," Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), giugno 2022
5 "Auto-Encoding Variational Bayes," arXiv, dicembre 2013 (ultimo aggiornamento 10 dicembre 2022)
6 "DALL-E: Creating Images from Text," OpenAI, 5 gennaio 2021
7 "Junction Tree Variational Autoencoder for Molecular Graph Generation," Proceedings of the 35th International Conference on Machine Learning, luglio 2018
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com