Generative Models

In questo post, tanto per cambiare, parleremo di qualcosa di interessantissimo che, a dirla tutta, ha già il nome molto interessante: parliamo infatti di Modelli Generativi (o Generative Models) 

Come al sempre in questa guida non tecnica all'Intelligenza Artificiale, sebbene abbiamo a che fare con qualcosa che può risultare un po' ostico, faremo in modo di mantenere tutto il più semplice e chiaro possibile, concentrandoci sui concetti che ci interessa estrarre, piuttosto che a quello che avviene nel dettaglio sotto la superficie.

Entriamo quindi nel "magico" mondo dei modelli generativi.

Un modello generativo è un modello trainato su una vastissima quantità di dati con lo scopo di fargli generare una nuova entità del dato stesso.

Ora chiariremo tutto, non vi preoccupate. Quello che mi interessa ora, non è capire a fondo come funzionano davvero i modelli generativi, voglio invece provare a farvi vedere una cosa sotto un punto di vista che, sono certo, vi può far riflettere.

E per fare ciò, facciamo un piccolo salto indietro.

Nei post precedenti abbiamo visto alcuni esempi di differenti tipi di modelli.

Nel caso del classificatore, ad esempio, avevamo un modello che, a partire da un'immagine, era in grado di dirci se all'interno dell'immagine fosse presente un cane o un gatto.

Questo veniva fatto trainando la nostra rete tramite un dataset opportunamente etichettato in modo tale che per ogni immagine, il modello potesse sapere se fosse presente un cane o un gatto.

Ovviamente quello dei cani e gatti è solo un esempio. Il concerto di classificatore può essere esteso sia ad altre tipologie di immagini (macchina VS camion, uomo VS donna, etc) Ma anche ad altri oggetti (persona che parla VS rumore di fondo, musica rock VS musica pop, etc).

Allo stesso modo, gli esempi non si limitano a classificare una cosa piuttosto che un'altra.

Possiamo sviluppare classificatori su dataset molto grandi, in grado di classificare molti più oggetti anche contemporaneamente, partendo ad esempio da una foto, e individuare i singoli elementi che la compongono (es. gatto, prato, cielo, nuvole, etc)

Dopo la classificazione, che faceva parte della categoria dell' Apprendimento Supervisionato, abbiamo visto invece il clustering che faceva invece parte della categoria dell'Apprendimento Non Supervisionato.

In questo caso abbiamo visto che il modello era in grado di clusterizzare in gruppi distinti,  diversi elementi nel dataset senza necessità di etichette che lo guidassero.

Soprattutto nel caso del clustering quindi, è evidente come il modello sia in grado di estrapolare dai dati quelle che sono le caratteristiche principali che rappresentano il dato stesso. Spiego meglio…

Se partendo da un dataset composto da foto di macchine, aerei e treni mescolati, il modello è in grado di creare 3 cluster diversi in cui si separa le macchine, gli aerei e i treni, possiamo allora dire che il modello è stato in grado di estrapolare dalle immagini quelle che sono proprio le caratteristiche principali che distinguono un aereo da un treno e da una macchina.

E sia chiaro che se il nostro dataset è ben strutturato e contiene esempi eterogenei di questi tre oggetti, non necessariamente c'è bisogno che l'aereo sia in volo è che il treno sia sui binari affinché il nostro modello sia in grado di svolgere il suo lavoro, allo stesso modo in cui il nostro cervello non ha bisogno che un aereo sia in volo per riconoscere che lo abbiamo di fronte.

Poeticamente parlando, potremmo dire che il nostro modello è in grado di riconoscere l'essenza dell'oggetto che si trova ad analizzare.

Il punto su cui voglio farvi riflettere è proprio questo e, sebbene non sia tecnicamente accurato, ci permette di capire per bene quello che vedremo.

 A questo punto infatti siamo pronti per fare un nuovo salto di paradigma.

La domanda è, “se il nostro sistema ha imparato a riconoscere l'essenza che rappresenta l'oggetto stesso, allora, non può creare un nuovo oggetto da zero in maniera autonoma?”

Mi spiego meglio. Il nostro sistema ha imparato quelli che sono i principi che rappresentano l'immagine di un gatto allora non può creare un'immagine di un gatto dal nulla?

E attenzione, non sto dicendo di tirarmi fuori dalla sua memoria un’immagine di un gatto che ha già visto da qualche parte durante una qualche fase di training.

Sto parlando di generare da zero un'immagine che non esiste, che è il modello stesso a creare dal nulla.

E questo discorso non vale solo per le immagini di gatti, ma per tutto: canzoni rock, canzoni rock belle, immagini, poesie, copy, copy che convertono, articoli, lettere d'amore, etc, etc.

Se una cosa del genere vi può sembrare fantascienza sappiate che non lo è!

Anzi, i modelli generativi esistono già, sono già realtà concreta e nei prossimi capitoli ne vedremo alcuni meravigliosi.

E senza entrare in dettagli tecnici inutili cercando di capire i diversi metodi di funzionamento degli attuali Modelli Generativi, se ci limitiamo a rimanere su questa linea di ragionamento, il discorso fila.

È plausibile infatti pensare che se questo sistema è in grado di capire che cosa rende l’immagine di un gatto, effettivamente un'immagine di un gatto, allora può anche imparare a creare da zero un’immagine di un gatto, basandosi sull'utilizzo di quegli stessi elementi che ha imparato ad associare a un gatto.

O quantomeno potrebbe provarci e poi sarebbe in grado da solo di giudicare se quello che ha creato è un gatto o meno

E da questa ultima frase ci colleghiamo al prossimo capitolo della serie: le Generative Adversarial Networks

Tutti i post della serie