Show More
Menu
Image
Hi there! I am Federico Trotta

Technical Writer

Una Introduzione all’AI Generativa

20/10/2023
By Federico
In AI
0 Comments
Post Image

Gli ultimi mesi hanno visto l’ascesa della cosiddetta “AI generativa”, che è un sottocampo dell’intelligenza artificiale (AI), e strumenti come ChatGPT stanno diventando fondamentali per le attività quotidiane di molti lavori.

Parole come “DALL-E”, “ChatGPT” e “Generative AI” hanno pervaso negli ultimi mesi i social, i media, le chat con i colleghi e tutto ciò che riguarda il nostro mondo.

Tutti ne parlano, ma cos’è l’IA generativa? Perché è diversa dall’intelligenza artificiale “normale”?

In questo articolo, chiariremo le fondamenta di ciò che sta dietro l’intelligenza artificiale generativa.

Quindi, se hai partecipato a discussioni sul tema ma non hai le idee chiare su questo argomento, questo articolo fa sicuramente al caso tuo.

Questa è una spiegazione discorsiva per comprendere le basi di ciò che c’è dietro le quinte dell’intelligenza artificiale generativa. Quindi, non preoccuparti: non troverai alcun codice qui. Solo idee e descrizioni e queste saranno presentate in modo molto breve e conciso. In particolare, ci concentreremo sui modelli linguistici di grandi dimensioni e sui modelli di generazione di immagini.


Cos’è l’AI generativa e in cosa differisce dall’intelligenza artificiale tradizionale?

L’intelligenza artificiale generativa è un sottocampo dell’intelligenza artificiale che prevede la creazione di algoritmi in grado di generare nuovi dati come immagini, testo, codice e musica.

La grande differenza tra l’intelligenza artificiale generativa e l’“intelligenza artificiale tradizionale” è che la prima genera nuovi dati sulla base dei dati di addestramento. Inoltre, funziona con tipi di dati con cui l’“intelligenza artificiale tradizionale” non può.

Diciamolo un po’ più tecnicamente:

  • L’“intelligenza artificiale tradizionale” può essere definita un’intelligenza artificiale discriminativa. In questo caso, infatti, addestriamo modelli di Machine Learning affinché possano fare previsioni o classificazioni su dati nuovi e mai visti. Questi modelli di ML possono funzionare solo con numeri e talvolta con testo (ad esempio, nel caso del Natural Language Processing).
  • Nell’intelligenza artificiale generativa, invece, addestriamo un modello di ML e creiamo un output simile ai dati su cui è stato addestrato. Questi tipi di modelli di ML possono funzionare con diversi tipi di dati come numeri, testo, immagini e audio.

Visualizziamo i processi:

Dal blog di Federico Trotta: diagramma di flusso che descrive il processo di funzionamento del Machine learning tradizionale.
Il processo alla base del funzionamento della AI tradizionale. Immagine di Federico Trotta.

Pertanto, nell’intelligenza artificiale tradizionale, addestriamo un modello di ML per apprendere dai dati. Andiamo poi a validarlo con dati nuovi per validarne l’accuratezza nelle predizioni.

Per quanto riguarda l’esempio presentato, abbiamo addestrato un modello di ML a riconoscere i cani dalle immagini. Poi, alimentiamo il modello di ML con immagini di cani che non ha mai visto e verifichiamo come sarà in grado di classificare se queste nuove immagini rappresentino cani o meno.

Questo è il compito tipico di un algoritmo di Deep Learning, nel caso di un problema di classificazione.

Dal blog di Federico Trotta: diagramma di flusso che descrive il processo di funzionamento dell'AI generativa.
Il processo alla base dell’AI generativa. Immagine di Federico Trotta.

Nel caso dell’AI generativa, invece, addestriamo un modello di ML con dati provenienti da varie fonti utilizzando una grande quantità di dati.

Successivamente, grazie ad un prompt (una query in linguaggio naturale inserita da un utente), il modello ci restituisce un output simile ai dati su cui è stato addestrato.

Per restare all’interno dell’esempio dei cani, il nostro modello è stato addestrato su un’enorme quantità di dati (testo) che, tra gli altri, spiegano cos’è un cane. Quindi, se un utente interroga il modello chiedendo cos’è un cane, il modello descriverà cos’è un cane nel linguaggio naturale.

Questa è l’attività tipica eseguita da strumenti come ChatGPT.

Vediamo ora alcuni tipi di modelli di intelligenza artificiale generativa.


Large Language Models

Cominciamo ad immergerci nei vari tipi di sottocampi dell’intelligenza artificiale generativa iniziando con i Large Language Models (LLM). Un LLM è (da Wikipedia):

a computerized language model consisting of an artificial neural network with many parameters (tens of millions to billions), trained on large quantities of unlabeled text using self-supervised learning or semi-supervised learning.

Though the term large language model has no formal definition, it often refers to deep learning models with millions or even billions of parameters, that have been “pre-trained” on a large corpus.

Quindi, gli LLM sono modelli di Deep Learning (DL), ovvero Reti Neurali, addestrati con milioni di parametri su un’enorme quantità di testo (questo è il motivo per cui li chiamiamo “grandi”) e sono utili per risolvere alcuni problemi linguistici come:

  • Classificazione del testo (text classification).
  • Domande e risposte (Q&A).
  • Riepilogo del testo (text summarization).
  • Generazione del testo (text generation).

Quindi, un’altra importante differenza con i modelli di ML standard è che, in questo caso, possiamo addestrare un algoritmo di DL che può essere utilizzato per compiti diversi.

Mi spiego meglio.

Se dobbiamo sviluppare un sistema in grado di riconoscere i cani nelle immagini come abbiamo visto prima, dobbiamo addestrare un algoritmo DL per risolvere un compito di classificazione che è: dirci se immagini nuove e che il modello non ha mai visto prima rappresentino cani oppure no.

Niente di più.

Invece, addestrare un LLM può aiutarci in tutti i compiti che abbiamo descritto sopra. Quindi, questo giustifica anche la quantità di potenza di calcolo (e di soldi!) necessaria per addestrare un LLM (che richiede petabyte di dati!).

Come sappiamo, gli LLM vengono interrogati dagli utenti grazie ai cosiddetti prompt. Quindi, ora dobbiamo specificare la differenza tra prompt design e prompt engineering:

  • Prompt design. E’ l’arte di creare un prompt adatto al compito specifico che il sistema sta eseguendo. Ad esempio, se vogliamo chiedere al nostro LLM di tradurre un testo dall’inglese all’italiano, dovremo scrivere un prompt specifico in inglese chiedendo al modello di tradurre in italiano il testo che stiamo incollando.
  • Prompt engineering. E’ il processo di creazione di prompt per migliorare le prestazioni del nostro LLM. Ciò significa utilizzare la nostra conoscenza del dominio per aggiungere dettagli al prompt come parole chiave specifiche, contesto ed esempi specifici e l’output desiderato, se necessario.

Naturalmente, quando scriviamo dei prompt, a volte utilizziamo un mix di entrambi i metodi. Ad esempio, potremmo volere una traduzione dall’inglese all’italiano che interessi un particolare dominio della conoscenza, come la meccanica.

Quindi, per esempio, un prompt potrebbe essere:

” Translate in Italian the following:

the beam is subject to normal stress.

Consider that we’re in the field of mechanics, so ‘normal stress’ must be related to it”.

Perché, ovviamente: “normal” e “stress” sono concetti che possono essere fraintesi dal modello (ma anche dagli esseri umani!).

Le tre tipologie di LLM

Ci sono tre diverse tipologie di LLM:

  • Generic Language Models. Questi modelli sono in grado di prevedere una parola (o una frase) in base alla lingua presente nei dati di addestramento. Pensiamo, ad esempio, alla funzionalità di completamento automatico delle email per comprendere questa tipologia.
  • Instruction Tuned Models. Questi tipi di modelli sono addestrati per prevedere una risposta alle istruzioni fornite nell’input. Riassumere un dato testo ne è un esempio tipico.
  • Dialog Tuned Models. Questi modelli vengono addestrati a dialogare con l’utente, utilizzando le risposte successive. Un chatbot basato sull’intelligenza artificiale è un tipico esempio.

Ad ogni modo, si deve comunque tener presente che i modelli distribuiti hanno caratteristiche che sono un mix di tutte queste tipologie. O quantomeno, possono compiere azioni tipiche di più di una di queste tipologie.

Se pensiamo ad esempio a ChatGPT possiamo dire chiaramente che:

  • Può prevedere una risposta alle istruzioni, dato un certo input. Infatti, ad esempio, può riassumere testi, fornire approfondimenti su un determinato argomento che forniamo tramite i prompt che inseriamo, ecc… Queste funzionalità sono tipiche di un Instruction Tuned Model.
  • È addestrato al dialogo con gli utenti. E questo è molto chiaro, poiché funziona con prompt che si susseguono finché non siamo soddisfatti della risposta. Quindi, ha anche funzionalità tipiche di un Dialog Tuned Model.

Generazione di immagini

La generazione di immagini esiste da molto tempo, contrariamente a quanto si potrebbe credere.

Ad ogni modo, negli ultimi tempi ha guadagnato popolarità, soprattutto con strumenti come “DALL-E” o “stable diffusion” che ne hanno sdoganato l’uso, rendendo questa tecnologia accessibile alle persone di tutto il mondo.

Possiamo dire che la generazione di immagini può essere divisa in quattro categorie:

  • Variational Autoencoders (VAEs). Sonomodelli generativi probabilistici che richiedono le reti neurali solo come parte della loro struttura complessiva”. In termini operativi, codificano le immagini in una dimensione compressa e le decodificano nella dimensione originale. Durante questo processo, apprendono la distribuzione dei dati.
  • Generative Adversarial Models (GANs). Questi sono generalmente i più conosciuti, almeno come parola “che risuona” nel campo dell’IA generativa. Un GAN èuna classe di framework ML in cui due reti neurali sono l’una contro l’altra dove il guadagno di una è la perdita dell’altra”. Ciò significa che una rete neurale crea l’immagine mentre l’altra prevede se è reale o falsa.
  • Autoregressive models. In statistica, un modello autoregressivo è la rappresentazione di un processo casuale. Nel contesto delle immagini generative, questi tipi di modelli generano immagini trattando le immagini come una sequenza di pixel.
  • Diffusion models. Questi modelli sono stati ispirati dalla termodinamica e sono sicuramente i tipi di modelli più promettenti e interessanti nel sottocampo della generazione di immagini.

Questo è il processo che sta alla base dei diffusion models:

  • Forward distribution process. E’ il processo iniziale e iterativo in cui la struttura dell’immagine viene “distrutta” in una distribuzione dei dati. In parole povere, è come se aggiungessimo ripetutamente rumore all’immagine, fino a quando tutti i pixel diventano puro rumore e l’immagine non è riconoscibile (dall’occhio umano).
  • Reverse diffusion process. C’è poi un processo di diffusione inversa che è il vero e proprio processo di apprendimento: questo ripristina la struttura dei dati. È come se il nostro modello imparasse come “ridurre il rumore” dei pixel per ricreare l’immagine originale.

Il potere di mettere tutto insieme

Se fino ad ora hai mantenuto l’attenzione, ti potrebbe nascere una domanda spontanea: “Ok Federico, è chiaro. Ma mi sfugge qualcosa: quando uso “DALL-E” inserisco un prompt e mi viene mostrata un’immagine: non ne abbiamo parlato, vero?!”.

No, non l’abbiamo fatto.

Sopra abbiamo fatto una breve descrizione del modello più promettente (e attualmente il più utilizzato) per generare immagini, ma la parte mancante è il prompt.

Abbiamo discusso, infatti, di come funzionano ad alto livello. Ovvero: abbiamo dato una breve spiegazione di come funziona il loro processo di apprendimento.

Ma il vero potere di questi modelli arriva quando sono abbinati ai LLM. Questo accoppiamento, infatti, ci dà la possibilità di combinare la potenza del pronto ingegneria per chiedere risultati ai nostri modelli.

In altre parole: abbiamo unito la possibilità di utilizzare il linguaggio naturale come input a modelli che possano effettivamente comprenderlo e generare immagini in base ad esso.

Non è un superpotere?!?


Conclusioni

In conclusione, possiamo dire che l’intelligenza artificiale generativa è un sottocampo dell’intelligenza artificiale che genera nuovi dati simili ai dati dei treni.

Mentre, da un lato, i LLM possono generare testo sulla base dei dati di training e i modelli di generazione di immagini possono generare nuove immagini basate sulle immagini di training, il vero potere dell’intelligenza artificiale generativa, almeno nel caso delle immagini, si basa sulla combinazione di LLM e modelli per la generazione di immagini. Questo ci dà la possibilità di creare immagini in base alle istruzioni fornite come input.


NOTE

  • Questo articolo è stato liberamente ispirato al corso Generative AI fornito da Google, da cui sono tratti alcuni riferimenti. Suggerisco di seguire questo corso per una migliore comprensione dell’intelligenza artificiale generativa.
  • L’articolo originale è stato scritto in inglese e pubblicato su Towards Data Science.

Federico Trotta

Sono Federico Trotta e sono un Technical Writer.

Vuoi collaborare con me? Contattami.

Federico Trotta

Technical Writer: I document digital products and write articles about AI & Python programming.

Leave a reply