
Autore: Steven Wang
“Ciò che non posso creare, non lo capisco”. -
Richard Feynmann
Prefazione
Crea bellissime immagini con Stable Diffusion e MidJourney dalla tua parte.
Sei esperto nell'uso di ChatGPT e LLaMa per creare testo elegante.
Passa avanti e indietro tra MuseNet e MuseGAN per creare la musica delle montagne e dell'acqua corrente.
Non c'è dubbio che l'abilità più unica degli esseri umani sia la creazione, ma oggi con il rapido sviluppo della tecnologia, creiamo creando macchine! Le macchine possono disegnare opere d'arte originali in un determinato stile (disegnare), scrivere un articolo lungo e coerente (scrivere), creare musica meravigliosa (comporre) e sviluppare strategie vincenti per giochi complessi (giocare). Questa tecnologia è l'Intelligenza Artificiale Generativa (GenAI). Ora è solo l'inizio della rivoluzione GenAI. Ora è il momento migliore per imparare GenAI.
1. Generazione e discriminazione di modelli
GenAI è una parola d'ordine e l'essenza dietro di essa è il modello generativo, che è un ramo dell'apprendimento automatico. L'obiettivo è addestrare un modello a generare nuovi dati simili a un determinato set di dati.
Diciamo di avere un set di dati di cavalli. Innanzitutto, possiamo addestrare un modello generativo su questo set di dati per catturare le regole che governano le complesse relazioni tra i pixel nelle immagini dei cavalli. Quindi campiona da questo modello per creare immagini realistiche di cavalli che non sono presenti nel set di dati originale, come mostrato di seguito.

Per comprendere veramente gli obiettivi e l’importanza dei modelli generativi, è necessario confrontarli con i modelli discriminativi. In effetti, la maggior parte dei problemi nell'apprendimento automatico vengono risolti da modelli discriminanti. Vedere gli esempi seguenti.
Supponiamo di avere un set di dati di dipinti, alcuni dipinti da Van Gogh e altri dipinti da altri artisti. Con dati sufficienti, possiamo addestrare un modello discriminante per prevedere se un dato dipinto è stato dipinto da Van Gogh, come mostrato nella figura seguente.

Quando si utilizza il modello discriminativo, ogni esempio nel set di addestramento ha un'etichetta. Per il problema delle due classificazioni di cui sopra, solitamente l'etichetta del dipinto di Van Gogh è 1 e l'etichetta del dipinto non di Van Gogh è 0. L'ultima probabilità prevista per il modello nell'immagine sopra è 0,83, quindi è molto probabile che sia stato realizzato da Van Gogh. A differenza del modello discriminativo, il modello generativo non richiede che gli esempi contengano etichette perché il suo obiettivo è generare nuovi dati anziché prevedere etichette per i dati.
Dopo aver letto l'esempio, utilizziamo la notazione matematica per definire con precisione il modello generativo e il modello discriminativo:
Il modello discriminativo modella P(y|x), stimando la probabilità condizionale di un'etichetta y data una caratteristica x.
I modelli generativi modellano P(x), stimano direttamente la probabilità della caratteristica x e campionano da questa distribuzione di probabilità per generare nuove caratteristiche.
È importante notare che anche se fossimo in grado di costruire un modello discriminativo perfetto per identificare i dipinti di Van Gogh, non sapremmo comunque come creare un dipinto che assomigli a Van Gogh. Potrebbe solo produrre una probabilità l'immagine era di Van Gogh la possibilità della mano. Si può vedere che generare modelli è molto più difficile che discriminare modelli.
2. Quadro per la generazione di modelli
Prima di comprendere la struttura del modello generativo, facciamo un gioco. Supponiamo che i punti nella figura seguente siano generati da una certa regola, chiameremo questa regola Pdata, e ora generiamo un diverso x = (x1, x2) in modo che questo punto sembri generato dalla stessa regola Pdata.

Come genereresti questo punto? Puoi utilizzare i punti dati per generare un modello Pmodel nella tua mente e le posizioni occupate da questo modello possono generare i punti desiderati. Si può vedere che il modello Pmodel è la stima di Pdata. Quindi il modello più semplice Pmodel è come la casella arancione nella figura seguente I punti possono essere generati solo all'interno della casella, ma non all'esterno.

Per generare nuovi punti, possiamo selezionare casualmente un punto all'interno del riquadro o, più strettamente, un campione dalla distribuzione del modello Pmodel. Questo è un modello generativo minimalista. Crei un modello (riquadro arancione) dai dati di addestramento (punti neri), quindi campioni dal modello, sperando che i punti risultanti siano simili ai punti nel set di addestramento.
Ora possiamo proporre formalmente un quadro per l’apprendimento generativo.

Riveliamo ora la vera distribuzione Pdata della generazione dei dati e vediamo come applicare il framework di cui sopra a questo esempio. Dalla figura seguente possiamo vedere che la regola di generazione dei dati Pdata prevede che i punti siano distribuiti uniformemente solo sulla terra e non appaiano nell'oceano.

È ovvio che il nostro modello Pmodel è una semplificazione della regola Pdata. Controllare i punti A, B e C nella figura sopra può aiutarci a capire se il modello Pmodel imita con successo la regola Pdata.
Il punto A non rispetta la regola Pdata perché si trova in mare, ma può essere generato dal modello Pmodel perché si trova all'interno del riquadro arancione.
Il punto B non può essere generato dal modello Pmodel perché appare fuori dal riquadro arancione, ma è conforme alla regola Pdata perché si trova sulla terraferma.
Il punto C è generato dal modello Pmodel ed è conforme alla regola Pdata.
Questo esempio dimostra i concetti di base alla base della modellazione generativa Sebbene l'utilizzo dei modelli generativi nella realtà sia molto più complicato, la struttura di base è la stessa.
3. Il primo modello generativo
Supponiamo che tu sia il Chief Fashion Officer (CFO) di un'azienda e il tuo compito sia creare nuovi vestiti alla moda. Quest'anno riceverai 50 set di dati sulle combinazioni di moda (come mostrato di seguito) e dovrai creare 10 nuove combinazioni di moda.

Sebbene tu sia il Chief Fashion Officer, sei anche un data scientist, quindi decidi di utilizzare un modello generativo per risolvere questo problema. Dopo aver guardato le 50 immagini sopra, decidi di utilizzare cinque caratteristiche: tipo di accessori, colore di abbigliamento, tipo di abbigliamento, colore di capelli e tipo di capelli.
Le 10 principali funzionalità dei dati immagine sono le seguenti.

Ogni caratteristica ha anche un diverso numero di autovalori:
3 tipologie di accessi:
Vuoto, rotondo, occhiali da sole
8 colori di abbigliamento:
Nero, Blu01, Grigio01, Verde Pastello, Arancione Pastello, Rosa, Rosso, Bianco
4 tipi di abbigliamento:
Felpa con cappuccio, tuta, ShirtScoopNeck, ShirtVNeck
6 colori di capelli:
Nero, Biondo, Marrone, Rosa Pastello, Rosso, Grigio Argento
7 tipi di capelli:
NoHair, LongHairChignon, LongHairRicci, LunghiDritti, CortiCapelliCorti Ondulati, CortiCapelliCortiPiatti, CortiCapelliCrespi
Ci sono 3 * 8 * 4 * 6 * 7 = 4032 combinazioni di caratteristiche, quindi si può immaginare che lo spazio campionario contenga 4032 punti. Dai 50 punti dati forniti, possiamo vedere che Pdata preferisce determinati valori di funzionalità per funzionalità diverse. Dalla tabella sopra, possiamo vedere che nelle immagini sono presenti più colori di abbigliamento bianchi e colori di capelli grigio argento. Poiché non conosciamo i Pdata reali, possiamo utilizzare solo questi 50 dati per costruire un Pmodel in modo che possa essere vicino a Pdata.
3.1 Modello minimalista
Uno dei metodi più semplici consiste nell'assegnare un parametro di probabilità a ciascun punto nelle 4032 combinazioni di caratteristiche, quindi il modello conterrà 4031 parametri, poiché la somma di tutti i parametri di probabilità dà 1. Ora controlliamo i 50 dati uno per uno, quindi aggiorniamo i parametri del modello (θ1, θ2,…, θ4031).

Tra questi, N è il numero di dati di osservazione, che è 50, e nj è il numero di j-esime combinazioni di caratteristiche che compaiono in 50 dati.
Ad esempio, la combinazione di funzioni (chiamata combinazione 1) di (LongHairStraight, Red, Round, ShirtScoopNeck, White) appare due volte, quindi

Ad esempio, la combinazione di funzioni (chiamata combinazione 2) di (LongHairStraight, Red, Round, ShirtScoopNeck, Blue01) non viene visualizzata, quindi

Secondo le regole di cui sopra, calcoliamo un valore θ per tutte le 4031 combinazioni. Non è difficile vedere che molti valori θ sono 0. Ciò che è peggio è che non possiamo generare nuove immagini invisibili (θ = 0 significa da Nessuna immagine. con questa combinazione di caratteristiche sono state osservate). Per risolvere questo problema, basta aggiungere il numero totale di caratteristiche d al denominatore e 1 al numeratore, un trucco chiamato livellamento di Laplace.

Ora, ogni combinazione (comprese quelle non presenti nel dataset originale) ha una probabilità di campionamento diversa da zero, tuttavia questo non è ancora un modello generativo soddisfacente perché la probabilità di un punto non presente nel dataset originale è costante. Se proviamo a utilizzare un modello di questo tipo per generare un dipinto di Van Gogh, esso opererà su entrambi i dipinti con la stessa probabilità:
Riproduzione del dipinto originale di Van Gogh (non nel set di dati originale)
Dipinto fatto di pixel casuali (non nel set di dati originale)
Questo ovviamente non è il modello generativo che vogliamo, vogliamo che apprenda una struttura intrinseca dai dati e quindi sia in grado di aumentare i pesi di probabilità delle regioni nello spazio campionario che ritiene più probabili, piuttosto che inserire tutti i pesi di probabilità in il punto di esistenza del set di dati.
3.2 Modello di semplicità secondario
Il modello Naive Bayes può ridurre notevolmente il numero di combinazioni delle caratteristiche di cui sopra. Secondo il suo modello, si presuppone che ciascuna caratteristica sia indipendente l'una dall'altra. Tornando ai dati sopra riportati, non esiste alcuna connessione tra il colore dei capelli di una persona (caratteristica xj) e il colore dei suoi vestiti (caratteristica xk). L'espressione matematica è:
p(xj | xk) = p(xk)
Con questo presupposto possiamo calcolare

Il modello Naive Bayes semplifica il problema originale di "fare una stima di probabilità per ciascuna combinazione di caratteristiche" in "fare una stima di probabilità per ciascuna caratteristica. Originariamente dovevamo utilizzare 4031 parametri (3 * 8 * 4 * 6 * 7). Sono richiesti solo 23 (3 + 8 + 4 + 6 + 7) parametri e l'espressione di ciascun parametro è:

Tra questi, N è il numero di dati di osservazione, che è 50, e nkl è il numero di autovalori l-esimi per la caratteristica k-esima.
Contando 50 dati, la tabella seguente fornisce i valori dei parametri del modello Naive Bayes.

Per calcolare la probabilità che il modello generi una determinata caratteristica dei dati, è sufficiente moltiplicare le probabilità nella tabella, ad esempio:

La combinazione di cui sopra non appare nel set di dati originale, ma il modello le assegna comunque una probabilità diversa da zero, quindi può ancora essere generata dal modello. Pertanto, il modello Naive Bayes è in grado di apprendere alcune strutture dai dati e di utilizzarle per generare nuovi esempi non visti nel set di dati originale. L'immagine sotto è una foto di 10 nuove combinazioni di moda generate dalla modella.

In questo problema, solo 5 caratteristiche appartengono a dati a bassa dimensionalità. È ragionevole che l'ingenuo modello di Bayes presupponga che siano indipendenti l'una dall'altra, quindi i risultati generati dal modello non sono male crollo.
4. Difficoltà nella generazione di modelli
4.1 Dati ad alta dimensionalità
In qualità di chief fashion officer, hai generato con successo 10 nuovi abiti alla moda utilizzando Naive Bayes. Sei estremamente fiducioso e ritieni che il tuo modello sia invincibile finché non incontri il seguente set di dati.

Questo set di dati non è più rappresentato da cinque caratteristiche, ma da 32*32 = 1024 pixel. Ciascun valore di pixel può essere compreso tra 0 e 255, dove 0 rappresenta il bianco e 255 rappresenta il nero. La tabella seguente elenca i primi 10 valori di pixel dell'immagine da 1 a 5.

Utilizza lo stesso modello per generare 10 nuovi set di abbinamenti di moda. Di seguito sono riportati i risultati generati dal modello. Ognuno di essi ha un aspetto molto simile e non è possibile distinguere le diverse caratteristiche.

Innanzitutto, poiché il modello Naive Bayes campiona i pixel in modo indipendente, i pixel adiacenti sono in realtà molto simili. Per i vestiti, i pixel dovrebbero in realtà essere più o meno gli stessi, ma il modello campiona in modo casuale, quindi i vestiti nell'immagine sopra sono tutti colorati. In secondo luogo, ci sono troppe possibilità nello spazio campionario ad alta dimensionalità, di cui solo una piccola parte è identificabile. Se un modello Naive Bayes si occupa direttamente di valori di pixel così altamente correlati, la possibilità che trovi una combinazione di valori soddisfacente è molto piccola.
Per riassumere, per uno spazio campione a bassa dimensionalità con bassa correlazione di caratteristiche, l'effetto Naive Bayes è molto buono attraverso il campionamento indipendente, ma per uno spazio campione ad alta dimensionalità con elevata correlazione di caratteristiche, l'effetto efficace si trova attraverso il campionamento indipendente dei pixel I volti umani sono quasi impossibili.
Questo esempio evidenzia due difficoltà che i modelli generativi devono superare se vogliono avere successo:
In che modo il modello gestisce le dipendenze condizionali tra caratteristiche ad alta dimensionalità?
Come fa il modello a trovare una percentuale molto piccola di osservazioni che soddisfano le condizioni di uno spazio campione ad alta dimensionalità?
Se i modelli generativi vogliono avere successo in uno spazio campione con dimensioni elevate e caratteristiche altamente correlate, devono utilizzare modelli di deep learning. Abbiamo bisogno di un modello in grado di dedurre strutture rilevanti dai dati, invece di sentirci dire in anticipo quali ipotesi fare. L’apprendimento profondo può formare le proprie caratteristiche in uno spazio a bassa dimensione, e questa è una forma di apprendimento rappresentativo.
4.2 Apprendimento della rappresentazione
Apprendimento delle rappresentazioni significa apprendimento delle rappresentazioni di dati ad alta dimensione.
Supponiamo che tu vada a incontrare un'amica online che non hai mai incontrato prima. Quando arrivi al luogo dell'incontro, ci sono così tante persone che non riesci a trovarla. La chiami per descrivere il tuo aspetto. Credo che non diresti che il colore del pixel 1 nella tua immagine è nero, il colore del pixel 2 è nero chiaro, il colore del pixel 3 è grigio, ecc. Al contrario, penseresti che i netizen abbiano una comprensione generale dell'aspetto delle persone comuni e quindi utilizzino questa comprensione per descrivere le caratteristiche del gruppo pixel. Ad esempio, hai i capelli neri corti e indossi un paio di occhiali scintillanti , eccetera. Di solito con non più di 10 descrizioni di questo tipo, un netizen può generare un'immagine di te nella sua mente. L'immagine può essere rozza, ma non impedisce al netizen di trovarti tra centinaia di persone, anche se non ti ha mai incontrato.
Questa è l'idea centrale alla base dell'apprendimento della rappresentazione. Invece di provare a modellare direttamente uno spazio campione ad alta dimensionalità, utilizziamo uno spazio latente a bassa dimensionalità per descrivere ciascun elemento nel set di addestramento. Osserva i risultati e quindi apprendi una funzione di mappatura che accetta un punto nello spazio latente e lo mappa nello spazio campionario originale. In altre parole, ogni punto nello spazio latente rappresenta le caratteristiche dei dati ad alta dimensione.
Se quanto sopra non è facile da capire, guarda il set di formazione di seguito che consiste in alcune immagini di vasi in scala di grigi.

Non è difficile notare che questi vasi possono essere descritti solo da due caratteristiche: altezza e larghezza. Pertanto, possiamo convertire lo spazio pixel ad alta dimensione dell'immagine in uno spazio latente bidimensionale, come mostrato nella figura seguente. In questo modo possiamo campionare dallo spazio latente (punti blu) e convertirlo in un'immagine tramite la funzione di mappatura f.

Riconoscere che il set di dati originale può essere rappresentato da uno spazio latente più semplice non è facile per la macchina. Innanzitutto, la macchina deve determinare che altezza e larghezza sono le due dimensioni dello spazio latente che meglio descrivono il set di dati, quindi apprendere la mappatura. La funzione $$f$$ può prendere un punto in questo spazio e mapparlo su una mappa pot in scala di grigi. Il deep learning ci consente di addestrare le macchine a trovare queste relazioni complesse senza la guida umana.
5. Classificazione dei modelli generativi
Tutti i tipi di modelli generativi mirano in definitiva a risolvere lo stesso compito, ma modellano tutti la funzione di densità in modi leggermente diversi. In generale, rientrano in due categorie:
Modellando esplicitamente la funzione di densità,
Ma vincolare il modello in qualche modo in modo che la funzione di densità possa essere calcolata, come un modello FLOW normalizzante
Ma approssimando la funzione di densità, come l'autoencoder variazionale (VAE) e il modello di diffusione (modello di diffusione)
Modellazione implicita della funzione di densità mediante un processo stocastico che genera direttamente i dati. Ad esempio, la rete generativa avversaria (GAN)

Riassumere
L'intelligenza artificiale generativa (GenAI) è un tipo di intelligenza artificiale che può essere utilizzata per creare nuovi contenuti e idee, inclusi testo, immagini, video e musica. Come tutta l'intelligenza artificiale, GenAI è un modello molto grande pre-addestrato da un modello di deep learning basato su una grande quantità di dati, spesso chiamato modello di fondazione (FM). Con GenAI, possiamo disegnare immagini più belle, scrivere testi più belli e comporre musica più commovente, ma il primo passo richiede che comprendiamo come GenAI crea cose nuove, come ha detto il capo dell'articolo, Richard Feynman, di "Non lo farò" Non capisco cosa non posso creare."

