PRIMI PASSI NEL MONDO DELL'INTELLIGENZA ARTIFICIALE
L'intelligenza artificiale (AI) è una delle tecnologie più rivoluzionarie del nostro tempo, promettendo di trasformare radicalmente molteplici settori, dall'assistenza sanitaria alla mobilità, dalla finanza alla produzione. Ma cosa è esattamente l'intelligenza artificiale e come viene utilizzata nella vita reale e nel mondo degli affari? In questo articolo, esploreremo le varie definizioni di AI, le sue classificazioni, gli utilizzi pratici e, a partire dal prossimo articolo, i primi passi per sviluppare applicazioni utilizzando Spring AI.
Cos'è l'Intelligenza Artificiale?
L'intelligenza artificiale è un ramo dell'informatica che mira a creare sistemi che possano eseguire attività che richiedono tipicamente l'intelligenza umana. Queste attività includono il ragionamento, l'apprendimento, la percezione, il riconoscimento del linguaggio naturale e la risoluzione di problemi.
Esistono diverse classificazioni di intelligenza artificiale:
- AI debole (o ristretta): questa forma di AI si concentra su un compito specifico, come il riconoscimento vocale o la guida autonoma. Questi sistemi non hanno la capacità di pensiero autonomo al di là del loro compito assegnato.
- AI forte (o generale): questa forma di AI mira a replicare l'intelligenza umana in tutte le sue forme. Questi sistemi possono apprendere, ragionare e risolvere problemi in modo simile agli esseri umani.
- AI simbolica: questo approccio all'AI si basa su simboli e regole definite dall'uomo per rappresentare la conoscenza e processare l'informazione.
- AI connessionista: questo approccio si basa sul funzionamento dei neuroni nel cervello umano, utilizzando reti neurali artificiali per apprendere dai dati.
Utilizzi Pratici dell'Intelligenza Artificiale nella Vita Reale e nel Business
L'intelligenza artificiale ha una vasta gamma di utilizzi pratici, tra cui:
- Assistenza sanitaria: l'AI può essere utilizzata per diagnosticare malattie, personalizzare trattamenti e migliorare l'efficienza operativa degli ospedali.
- Mobilità: i veicoli autonomi sfruttano l'AI per navigare in modo sicuro e efficiente sulle strade.
- Finanza: l'AI viene utilizzata per analizzare grandi quantità di dati finanziari, rilevare frodi e ottimizzare gli investimenti.
- Produzione: i robot intelligenti e i sistemi di automazione utilizzano l'AI per ottimizzare la catena di produzione e migliorare la qualità dei prodotti.
Concetti basilari
I modelli di intelligenza artificiale sono algoritmi progettati per elaborare e generare informazioni, spesso imitando le funzioni cognitive umane. Apprendendo schemi e intuizioni da set di dati di grandi dimensioni, questi modelli possono creare previsioni, testo, immagini o altri output, migliorando varie applicazioni in tutti i settori.
Esistono molti tipi diversi di modelli di intelligenza artificiale, ciascuno adatto a un caso d'uso specifico. Sebbene ChatGPTe le sue capacità di intelligenza artificiale generativa abbiano affascinato gli utenti attraverso l'input e l'output di testo, molti modelli e aziende offrono input e output diversi. Prima di ChatGPT, molte persone erano affascinate dai modelli di generazione di testo in immagine come Midjourney e Stable Diffusion.
La tabella seguente classifica i diversi modelli in base ai tipi di input e output:
INPUT | OUTPUT | ESEMPI |
Language/Code/Images (Multi-Modal) | Language/Code | GPT4 - OpenAI, Google Gemini |
Language/Code | Language/Code | GPT 3.5 - OpenAI-Azure OpenAI, Google Bard, Meta Llama |
Language | Image | Dall-E - OpenAI + Azure, Deep AI |
Language/Image | Image | Midjourney, Stable Diffusion, RunwayML |
Text | Numbers | Many (AKA embeddings) |
Prompt
I Prompt fungono da base per gli input basati sul linguaggio e guidano un modello di intelligenza artificiale a produrre un determinato output. Per chi ha familiarità con ChatGPT, un prompt potrebbe sembrare semplicemente il testo immesso in una finestra di dialogo inviata all'API. Tuttavia, comprende molto più di questo; infatti in molti modelli di intelligenza artificiale, il testo del prompt non è solo una semplice stringa.
L'API di ChatGPT ha più input di testo all'interno di un prompt, a ciascun input di testo viene assegnato un ruolo. Ad esempio, esiste il ruolo di sistema, che dice al modello come comportarsi e definisce il contesto per l'interazione. Esiste anche il ruolo utente, che in genere corrisponde all'input dell'utente.
Creare suggerimenti efficaci è sia un’arte che una scienza. ChatGPT è stato progettato per le conversazioni umane. Questo è abbastanza diverso dall'usare qualcosa come il linguaggio SQL per "fare una query"; bisogna comunicare con il modello di intelligenza artificiale come se si stesse conversando con un'altra persona.
L'importanza di questo stile di interazione è tale che il termine "Prompt Engineering" è emerso come disciplina a sé stante, una vera e propria professione. Esiste una fiorente raccolta di tecniche che migliorano l'efficacia dei suggerimenti: investire tempo nella creazione di un prompt può migliorare drasticamente l'output risultante.
La condivisione di suggerimenti è diventata una pratica comune e su questo argomento è in corso una ricerca accademica attiva. Come esempio di quanto possa essere contro intuitivo creare un suggerimento efficace (ad esempio, in contrasto con SQL), un recente documento di ricerca ha scoperto che uno dei suggerimenti più efficaci che puoi utilizzare inizia con la frase: "Fai un respiro profondo e lavora su questo passo dopo passo”. Questo dovrebbe darti un’indicazione del perché la lingua è così importante. Non comprendiamo ancora appieno come utilizzare nel modo più efficace le precedenti iterazioni di questa tecnologia, come ChatGPT 3.5, per non parlare delle nuove versioni in fase di sviluppo.
Embeddings
Gli Embeddings trasformano il testo in matrici o vettori numerici, consentendo ai modelli di intelligenza artificiale di elaborare e interpretare i dati linguistici. Questa trasformazione da testo a numeri e viceversa è un elemento chiave nel modo in cui l’intelligenza artificiale interagisce e comprende il linguaggio umano. Come sviluppatore Java che esplora l’intelligenza artificiale, non è necessario comprendere le complesse teorie matematiche o le implementazioni specifiche dietro queste rappresentazioni vettoriali ma è sufficiente una comprensione di base del loro ruolo e della loro funzione all'interno dei sistemi di intelligenza artificiale.
Gli embeddings sono particolarmente rilevanti in applicazioni pratiche come il pattern Retrieval Augmented Generation (RAG). Consentono la rappresentazione dei dati come punti in uno spazio semantico, che è simile allo spazio 2D della geometria euclidea, ma in dimensioni superiori. Ciò significa che, proprio come i punti su un piano nella geometria euclidea possono essere vicini o lontani in base alle loro coordinate, in uno spazio semantico la vicinanza dei punti riflette la somiglianza di significato. Le frasi su argomenti simili sono posizionate più vicine in questo spazio multidimensionale, proprio come i punti che si trovano uno vicino all'altro su un grafico. Questa vicinanza aiuta in compiti come la classificazione del testo, la ricerca semantica e persino i consigli sui prodotti, poiché consente all'intelligenza artificiale di discernere e raggruppare concetti correlati in base alla loro "posizione" in questo panorama semantico espanso.
Token
I token fungono da elementi costitutivi del funzionamento di un modello di intelligenza artificiale. In input, i modelli convertono le parole in token. In output, riconvertono i token in parole. In inglese un token corrisponde all'incirca al 75% di una parola. Ad esempio, le opere complete di Shakespeare, per un totale di circa 900.000 parole, si traducono in circa 1,2 milioni di token.
Un aspetto estremamente importante è che Token significa soldi. Nel contesto dei modelli di intelligenza artificiale hosted, i costi sono determinati dal numero di token utilizzati. Sia l'input che l'output contribuiscono al conteggio complessivo dei token.
Inoltre, i modelli sono soggetti a limiti di token, che limitano la quantità di testo elaborato in una singola chiamata API. Questa soglia viene spesso definita "finestra di contesto". Il modello non elabora alcun testo che superi questo limite.
Ad esempio, ChatGPT3 ha un limite di token 4K, mentre GPT4 offre diverse opzioni, come 8K, 16K e 32K. Il modello Claude AI di Anthropic presenta un limite di token di 100.000 e la recente ricerca di Meta ha prodotto un modello di limite di token di 1 milione.
Fornire Dati ai modelli di AI
Come si può dotare il modello di informazioni sulle quali non è stato addestrato?
E' importante, infatti, sottolineare che il set di dati GPT 3.5/4.0 si estende solo fino al settembre 2021. Di conseguenza, il modello afferma di non conoscere la risposta alle domande che richiedono conoscenza oltre tale data. Una curiosità interessante è che questo set di dati è di circa 650 GB.
Esistono tre tecniche per personalizzare il modello AI e far si che incorpori nuovi dati:
- Fine tuning: questa tecnica tradizionale di apprendimento automatico prevede la personalizzazione del modello e la modifica della sua ponderazione interna. Tuttavia, si tratta di un processo impegnativo per gli esperti di machine learning ed estremamente dispendioso in termini di risorse per modelli come GPT a causa delle loro dimensioni. Inoltre, alcuni modelli potrebbero non offrire questa opzione.
- Prompt stuffing: un'alternativa più pratica consiste nell'incorporare i dati nel prompt fornito al modello. Dati i limiti dei token di un modello, sono necessarie tecniche per presentare i dati rilevanti all'interno della finestra di contesto del modello. Questo approccio viene colloquialmente definito “riempire il prompt”. Come vedremo negli articoli successivi a questo, la libreria Spring AI - che utilizzeremo per incorporare l'intelligenza artificiale nelle nostra applicazioni web - ti aiuta a implementare soluzioni basate sulla tecnica “stuffing the prompt” altrimenti nota come Retrieval Augmented Generation (RAG).
- Function calling: questa tecnica consente di registrare funzioni utente personalizzate che collegano i modelli linguistici di grandi dimensioni alle API di sistemi esterni.
Retrieval Augmented Generation (RAG)
Per affrontare la sfida di incorporare dati rilevanti in richieste di risposte accurate del modello di intelligenza artificiale è emersa una tecnica denominata Retrieval Augmented Generation (RAG).
L'approccio prevede un modello di programmazione in stile elaborazione batch, in cui il job legge i dati non strutturati dai documenti, li trasforma e quindi li scrive in un database vettoriale. Ad alto livello, questa è una pipeline ETL (Extract, Transform and load). Il database dei vettori viene utilizzato nella parte di recupero della tecnica RAG.
Nell'ambito del caricamento dei dati non strutturati nel database vettoriale, una delle trasformazioni più importanti consiste nel dividere il documento originale in parti più piccole. La procedura di divisione del documento originale in parti più piccole prevede due passaggi importanti:
- Divisione del documento in parti preservando i confini semantici del contenuto. Ad esempio, per un documento con paragrafi e tabelle, si dovrebbe evitare di dividere il documento a metà di un paragrafo o di una tabella. Per il codice, evitare di suddividere il codice nel mezzo dell'implementazione di un metodo.
- Suddivisione ulteriore delle parti del documento in porzioni la cui dimensione è una piccola percentuale del limite di token del modello AI.
Siamo giunti alla conclusione di questa breve panoramica sull'intelligenza artificiale e sui concetti chiave: essa vuole essere solo un'introduzione al tema motivo per cui in calce al post troverete dei link per approfondire i vari temi.
A questo articolo ne seguiranno altri incentrati maggiormente sull'applicazione dell'intelligenza artificiale in Java ed in particolare focalizzeremo l'attenzione su Spring AI, il progetto nato in seno al framework Spring che mira a semplificare lo sviluppo di applicazioni che incorporano funzionalità di intelligenza artificiale senza inutili complessità.
Risorse utili
- Documentazione ufficiale Spring: https://docs.spring.io/spring-ai/reference/concepts.html
- Paper Large Language Models are Zero-Shot Reasoners: https://arxiv.org/abs/2205.11916
- Portale online di notizie, discussioni e spunti sull'AI: https://pub.towardsai.net/
Comments
Post a Comment