Lezione: https://elearning.unimib.it/mod/kalvidres/view.php?id=1198546

Prima parte — Autoencoder

Nella metodologia di apprendimento non supervisionato, ci troviamo di fronte a dati di input senza una classificazione predefinita. Solitamente, in questo contesto, si cercano modi per organizzare i dati in cluster attraverso algoritmi come k-means o silhouette, senza la presenza di un target esplicito.

Gli autoencoder rappresentano una forma di apprendimento non supervisionato, ma introducono un "task fittizio" in cui gli input vengono mappati agli stessi input come output. In pratica, si crea una forma di apprendimento supervisionato in un contesto in cui l'etichettatura dei dati non era originariamente fornita. L'obiettivo è addestrare la rete a minimizzare l'errore, e se nel tradizionale approccio supervisionato l'errore è dato dalla differenza tra il target desiderato e l'output prodotto dalla rete, nell'autoencoder si traduce nell'incapacità della rete di ricostruire fedelmente l'input originale.

La struttura dell'autoencoder si compone di un layer centrale, detto bottleneck, che produce il risultato finale. Nella disposizione a forma di clessidra della rete, la parte sinistra prima del bottleneck si occupa della codifica dell'input, mentre la parte destra si occupa della decodifica, cercando di ricostruire l'input originale dal valore compresso. La particolarità di questo approccio è che fornisce due strumenti separati: uno per la compressione e uno per la ricostruzione, i quali possono essere utilizzati singolarmente. Assegnando valori specifici ai neuroni nel layer bottleneck, è possibile esplorare diverse ricostruzioni associate a codici particolari.

L'applicazione della backpropagation all'autoencoder è possibile, trattando ogni neurone di output come una variabile su cui calcolare l'errore da retropropagare. Tuttavia, è importante notare che non tutte le possibili architetture di rete possono essere considerate autoencoder. È essenziale includere il layer bottleneck per garantire che la rete abbia uno scopo ben definito e utile.

L'architettura dell'autoencoder rimane radicata nei principi fondamentali del deep learning, con neuroni che guidano l'inferenza in avanti e l'errore che consente di aggiustare i pesi attraverso il processo di backpropagation. La struttura della rete è caratterizzata dalla mancanza di connessioni che saltano il layer bottleneck, poiché l'obiettivo è portare la compressione dall'input al collo di bottiglia senza interruzioni.

Delle possibili domande potrebbero essere:


Seconda parte

Cosa centrano questi autoencoder con quello che succede oggi? Oggi abbiamo strutture di calcolo neurale come i Transformers (T di “ChatGPT”), ovvero strutture basate sempre su neuroni ma MOLTO più complicate, con la particolarità che si sono presi gruppi di neuroni e si sono incapsulati per funzioni via via diverse.

Untitled

Vediamo funzionalità come la normalizzazione, softmax, ecc, che entrano a far parte di una costruzione complessiva dove il grosso lo fanno i neuroni (es: feedforward).

Una particolarità è che gli output vengono presi e riportati in ingresso shiftati

Un altro elemento nuovo basato sempre sui neuroni è il rettangolo arancione “Attention” che è una componente molto importante dei transformers, che sostanzalmente permette alla macchina di dare maggior peso a determinati elementi dell’input.

Per arrivare a questo è stato abbastanza veloce (ultimi 5 anni), ma il cammino arriva da lontano.