Skill Factory
Categoria: Home
7.Intelligenza Artificiale: Come creare una chatbot per conversare con LLAMA3
Gino Visciano |
Skill Factory - 15/03/2025 16:57:31 | in Home
In questo articolo vi spiegherò come creare una chatbot per conversare con Llama3 attraverso Ollama.
Potete utilizzare la chatbot, sia per conversare con Llama3, sia per imparare l'inglese, perché Llama3 oltre a rispondere in italiano, aggiunge anche la traduzione in lingua inglese.
Per creare la chatbot, servono gli strumenti seguenti: Visual Studio Code, Python e Ollama, quindi, assicuratevi che siano stati installati correttamente sul vostro computer, con i comandi seguenti:
Llama 3 è un modello linguistico di grandi dimensioni (LLM) sviluppato da Meta AI, progettato per comprendere e generare testo in linguaggio naturale.
E' disponibile in tre versioni con differenti quantità di parametri: 8 miliardi (8B), 70 miliardi (70B) e 400 miliardi (400B). Le versioni 8B e 70B sono open-source e accessibili al pubblico, mentre la versione 400B è attualmente in fase di addestramento.
L'immagine seguente mostra come potete visualizzare le caratteristiche della versione di Llama3 installata sul vostro computer:
Llama 3 è stato addestrato utilizzando dati online di alta qualità fino a dicembre 2023, impiegando tecniche di filtraggio avanzate per garantire l'eccellenza dei dati di addestramento. Le sue applicazioni spaziano dalla generazione di contenuti alla traduzione multilingue, fino all'intelligenza artificiale conversazionale.
In termini di prestazioni, Llama 3 ha ottenuto punteggi elevati in vari benchmark, superando modelli come GPT-3.5 in alcune metriche.
Per eseguire Llama3 su un computer locale serve Ollama.
Ollama è un framework leggero ed estensibile che consente di eseguire modelli di linguaggio di grandi dimensioni (LLM) localmente, fornendo un'API per creare applicazioni che comunicano con il modello associato. Per comunicare con Llama3 attraverso l'API di Ollama, installato sul vostro computer, dovete usare il protocollo applicativo HTTP e collegarvi alla porta 11434, come mostra il link seguente:
http://localhost:11434/api/generate.
Per creare il Chatbot con Python servono le librerie: tkinter, requests e json, che potete caricare con il codice seguente:
import tkinter as tk
from tkinter import scrolledtext
import requests
import json
La libreria tkinter è utilizzata nel programma per creare l'interfaccia grafica (GUI) del Chatbot.
La libreria requests è utilizzata per gestire la comunicazione HTTP con l'API di Ollama, che esegue il modello Llama3.
La libreria json nel programma serve per due motivi principali:
1.Decodifica delle risposte: Quando ricevi una risposta dal server Ollama, i dati arrivano come stringhe in formato JSON. La funzione json.loads() è utilizzata per convertire queste stringhe in oggetti Python (come dizionari), rendendo possibile accedere ai dati tramite chiavi;
2.Serializzazione dei dati da inviare: Quando invii la richiesta POST a Ollama, il payload viene passato come oggetto Python (di tipo dizionario). Il parametro json=payload nella richiesta fa sì che Python usi automaticamente la libreria json per convertire l'oggetto in una stringa JSON da inviare.
IMPOSTAZIONE DELLA GUI DELLA CHATBOT
1. Creazione della Finestra Principale
root = tk.Tk()
root.title("Llama3 Chatbot")
root.configure(bg='white')
tk.Tk(): Crea la finestra principale dell'applicazione.
root.title("Llama3 Chatbot"): Imposta il titolo della finestra.
root.configure(bg='white'): Imposta lo sfondo della finestra di colore bianco.
2. Area di Visualizzazione della Chat
chat_log = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=60, height=20, bg='white', fg='black', bd=0, relief='flat')
chat_log.pack(padx=10, pady=10)
scrolledtext.ScrolledText: Crea una casella di testo con una barra di scorrimento automatica.
wrap=tk.WORD: Le parole non vengono spezzate a metà quando il testo raggiunge il bordo.
width e height: Definiscono la dimensione del campo di testo.
bg='white' e fg='black': Impostano i colori di sfondo e del testo.
bd=0 e relief='flat': Rendono il bordo della casella piatto e senza spessore.
pack(padx=10, pady=10): Posiziona il widget nella finestra con un margine di 10 pixel.
3. Contenitore per l'Input dell'Utente
user_input_frame = tk.Frame(root, bg='white')
user_input_frame.pack(padx=10, pady=(0, 10))
tk.Frame: Crea un contenitore per raggruppare i widget di input e il pulsante di invio.
bg='white': Imposta il colore di sfondo del frame.
pack(padx=10, pady=(0, 10)): Posiziona il frame con un margine superiore di 0 e inferiore di 10 pixel.
4. Campo di Inserimento Testo
user_input = tk.Entry(user_input_frame, width=50, bg='white', fg='black', bd=1, relief='solid', highlightthickness=1, highlightbackground='#d9d9d9', highlightcolor='#4a90e2')
user_input.pack(side=tk.LEFT, padx=(0, 5), ipady=5, ipadx=5)
tk.Entry: Crea un campo per l'inserimento di testo da parte dell'utente.
width=50: Imposta la larghezza del campo di testo.
bd=1 e relief='solid': Definiscono un bordo sottile e solido.
highlightthickness, highlightbackground, highlightcolor: Configurano l'aspetto del bordo di evidenziazione.
pack(side=tk.LEFT, padx=(0, 5), ipady=5, ipadx=5): Posiziona il campo a sinistra del frame con un po' di padding.
5. Pulsante di Invio
send_button = tk.Button(user_input_frame, text="Invia", command=send_message, bg='black', fg='white', activebackground='#333333', activeforeground='white', bd=0, padx=10, pady=5, relief='flat')
send_button.pack(side=tk.RIGHT)
tk.Button: Crea un pulsante etichettato "Invia".
command=send_message: Associa il pulsante alla funzione send_message che verrà eseguita al click (nota: questa funzione non è definita nel codice fornito).
bg e fg: Definiscono i colori di sfondo e del testo del pulsante.
activebackground e activeforeground: Colori quando il pulsante è attivo.
bd=0 e relief='flat': Rendono il bordo del pulsante piatto e senza spessore.
pack(side=tk.RIGHT): Posiziona il pulsante a destra del frame.
Per avviare l'interfaccia viene utilizzata la funzione main():
def main():
root.mainloop()
L'immagine seguente mostra coma appare la GUi del Chatbot in esecuzione:
COME INVIARE LE RICHIESTE AL SERVER OLLAMA
1. Dichiarazione della Funzione e Variabili Globali
La funzione send_message gestisce l'invio di un messaggio dell'utente alla chatbot e visualizza la risposta generata da Llama3 tramite Ollama.
def send_message():
global chat_history, chat_context
global chat_history, chat_context: Indica che le variabili chat_history e chat_context sono globali.
chat_history: Conserva l'intera cronologia della chat.
chat_context: Potrebbe essere utilizzata per mantenere il contesto tra le richieste (utile per i modelli di AI che gestiscono conversazioni complesse).
2. Lettura del Messaggio dell'Utente
user_message = user_input.get()
if user_message.strip() == "":
return
user_input.get(): Recupera il testo inserito dall'utente nel campo di input.
user_message.strip() == "": Controlla se il messaggio è vuoto o contiene solo spazi. Se sì, la funzione termina senza fare nulla (return).
3. Visualizzazione del Messaggio dell'Utente nella Chat
chat_log.insert(tk.END, f"You: {user_message}\n")
user_input.delete(0, tk.END)
chat_log.insert(tk.END, f"You: {user_message}\n"): Inserisce il messaggio dell'utente nella finestra di chat.
user_input.delete(0, tk.END): Pulisce il campo di input, pronto per un nuovo messaggio.
4. Aggiornamento della Cronologia della Chat
chat_history += f"You: {user_message}\n"
Aggiunge il messaggio dell'utente alla cronologia della chat, in modo che il modello abbia il contesto completo della conversazione.
5. Invio del Messaggio a Llama3 tramite Ollama
response, chat_context = get_llama3_response(chat_history, chat_context)
get_llama3_response(): Chiama una funzione (presumibilmente definita altrove) che:
Riceve la cronologia della chat e il contesto attuale.
Restituisce una risposta generata dal modello Llama3 e un nuovo contesto aggiornato.
response: La risposta generata da Llama3.
chat_context: Il contesto aggiornato che sarà utilizzato nelle conversazioni future.
6. Visualizzazione della Risposta del Modello
chat_log.insert(tk.END, f"Llama3: {response}\n")
Visualizza la risposta del modello nel registro della chat.
7. Aggiornamento Finale della Cronologia
chat_history += f"Llama3: {response}\n"
Aggiunge la risposta del modello alla cronologia per mantenere il contesto coerente nelle interazioni future.
COME GESTIRE LE RISPOSTE RICEVUTA DAL SERVER OLLAMA
La funzione get_llama3_response invia una richiesta POST all'API di Ollama per generare una risposta basata su un prompt e un contesto di conversazione. Gestisce anche lo streaming della risposta e aggiorna il contesto per le interazioni successive.
1. Argomenti della funzione
def get_llama3_response(prompt, context):
prompt: Il testo della conversazione, che include la cronologia dei messaggi.
context: Informazioni aggiuntive per mantenere la coerenza del dialogo (opzionale).
1. Preparazione del Payload
try:
payload = {"prompt": prompt, "model": "llama3"}
if context:
payload["context"] = context
payload: Un dizionario contenente i dati da inviare all'API.
"prompt": Il testo della conversazione fino a quel momento.
"model": "llama3": Specifica il modello da utilizzare.
Se il context è disponibile, viene aggiunto per aiutare il modello a mantenere la coerenza della conversazione.
2. Invio della richiesta POST all'API
response = requests.post(
"http://localhost:11434/api/generate",
json=payload,
stream=True
)
requests.post: Esegue una richiesta HTTP POST verso l'API locale di Ollama.
json=payload: Invia i dati della richiesta in formato JSON.
stream=True: Indica che la risposta verrà trasmessa in streaming, utile per ricevere i dati in tempo reale.
3. Gestione della Risposta
full_response = ""
final_context = None
full_response: Variabile per accumulare la risposta completa del modello.
final_context: Variabile per memorizzare il contesto aggiornato, se fornito.
4. Elaborazione della Risposta in Streaming
for line in response.iter_lines():
if line:
data = json.loads(line.decode('utf-8'))
full_response += data.get("response", "")
if data.get("done") and "context" in data:
final_context = data["context"]
response.iter_lines(): Itera sulle righe della risposta in streaming.
json.loads(): Converte ogni linea JSON in un dizionario Python.
data.get("response", ""): Estrae la parte di testo generata e la aggiunge a full_response.
data.get("done"): Verifica se la generazione della risposta è completata.
"context" in data: Se il contesto aggiornato è disponibile, lo salva in final_context.
5. Restituzione del Risultato
return full_response or "Nessuna risposta ricevuta.", final_context
Restituisce la risposta completa.
Se la risposta è vuota, ritorna un messaggio di default: "Nessuna risposta ricevuta.".
Fornisce anche il final_context aggiornato.
6. Gestione degli Errori
except Exception as e:
return f"Errore di connessione: {e}", context
Se si verifica un errore (come problemi di connessione o di decodifica), viene restituito un messaggio di errore insieme al contesto originale.
Per visualizzare il codice Python completo della chatbot clicca qui.
Per eseguire il codice Python della chatbot, copialo e incollalo in Visual Studio Code.
L'immagine seguente mostra un esempio di conversazione con Llama3, utilizzando la nostra chatbot:
Nel prossimo articolo vedremo un semplice esempio di fine tuning per addestrare Llama3.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
3.Intelligenza Artificiale: le reti neurali artificiali
4.Intelligenza Artificiale: tipi di reti neurali artificiali
5.Intelligenza Artificiale: IA Generativa
6.Intelligenza Artificiale: modelli pre-addestrati di IA locali
6.Intelligenza Artificiale: Modelli pre-addestrati di IA locali (Prima parte)
Gino Visciano |
Skill Factory - 09/02/2025 21:00:03 | in Home
Un modello pre-addestrato d'Intelligenza Artificiale locale è un modello che può essere installato ed eseguito su qualunque computer o server.
Questi modelli possono essere scaricati da diverse piattaforme specializzate, la più conosciuta è Hagging Face.
Hugging Face è una piattaforma che offre una vasta gamma di strumenti e risorse per sviluppatori, ricercatori e appassionati di IA. E' molto popolare perché fornisce modelli pre-addestrati e strumenti per l'elaborazione del linguaggio naturale (NLP). Questi modelli possono essere utilizzati per diverse attività come la traduzione automatica, la generazione di testo, l'analisi del sentiment e molto altro ancora.
Gli LLM installati localmente possono essere gestiti con gli strumenti seguenti:
1) OLLAMA
2) LM STUDIO
3) PYTHON
COME LAVORARE CON UN MODELLO PRE-ADDESTRATO LOCALE UTILIZZANDO OLLAMA
Prima di tutto dovete eseguire il download di OLLAMA collegandovi all'indirizzo:
come mosta l'immagine seguente:
Dopo il download per verificare se OLLAMA è stato installato correttamente eseguite il comando:
ollama --version
Adesso potete caricare il modello pre-addestrato da usare localmente. Vi suggerisco di utilizzare LLAMA3 prodotto da Meta, un modello con 8 miliardi di parametri.
Per installare LLAMA3 eseguite il comando:
ollama pull llama3
Per verificare se il modello è stato caricato correttamente dovete eseguire il comando:
ollama list
Per visualizzare le caratteristiche del modello appena caricato usate il comando:
ollama show llama3
Adesso potete attivare il prompt per porre domande al modello con il comado:
ollama run llama3
Per conoscere i comandi disponibili usate il comando:
/?
Potete chiudere la sessione corrente con il comando:
/bye
COME LAVORARE CON UN MODELLO PRE-ADDESTRATO LOCALE UTILIZZANDO LM STUDIO
Potete eseguire il download di LM STUDIO collegandovi all'indirizzo:
Dopo il download eseguite il file:
per installarlo.
Quando avviate LM Studio appare la seguente interfaccia grafica:
Per caricare il modello dovete cliccare prima sull'icona a sinistra "My Models":
poi successivamente dovete cliccare sulla lente d'ingrandimento che appare al cenrro della schermata:
Dopo questa operazione potete scegliere il modello da caricare, selezionandolo e cliccando sul pulsante Download.
Nell'immagine seguente vi mostro come caricare il modello PHI-4 di Microsoft, con 14 miliardi (14B) di parametri.
Dopo il download e il caricamento del modello scelto, tornate alla chat e utilizzate il prompt per porgli le domande.
L'immagine seguente descrive l'area chat di LM Studio.
Quando usate la chat di LM Studio assicuratevi sempre di aver caricato il modello che volete utilizzare.
Per caricare uno dei modelli disponibili, cliccate sul pulsante "Select a model to load" o usate i tasti Crtl + L:
scegliete il modello da caricare, selezionandolo con il puntatore del mouse:
e infine cliccare sul pulsante "Load Model":
Dopo aver caricato il modello potete porgli le domande utilizzando il prompt della chat, come mostra l'esempio seguente:
You
Ciao, sei phi?
Assistant phi-4
Sì, sono qui per aiutarti! Come posso esserti d'aiuto oggi? Se hai delle domande o qualcosa di specifico su cui vorresti discutere, fammelo sapere. 😊
Nel prossimo articolo creeremo una chatbot per comunicare con LLAMA3 attraverso OLLAMA.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
3.Intelligenza Artificiale: le reti neurali artificiali
4.Intelligenza Artificiale: tipi di reti neurali artificiali
5.Intelligenza Artificiale: IA Generativa
7.Intelligenza Artificiale: come creare una chatbot per conversare con Llama3
Vuoi qualificarti per entrare nel modo del lavoro?
Presso la nostra Academy delle Professioni Digitali, con il programma PAR GOL puoi partecipare ai seguenti corsi di formazione gratuiti di 300 ore, con 90 ore di tirocinio aziendale:
2. Recati al Centro Per l'Impiego (CPI) di competenza per richiedere l'adesione al Programma GOL.
3. Comunica all'operatore del CPI il nome ed il codice identificativo del corso scelto.
Se hai bisogno di assistenza o informazioni ci puoi anche contattarci ai seguenti recapiti:
Telefono: 08118181361
Cellulare: 327 087 0141
E-mail: segreteria@skillfactory.it
oppure puoi prenotare un appuntamento presso la nostra sede al Centro Direzionale di Napoli E2 scala A 1° piano.
2025: "Sviluppo Software", "Amministrazione aziendale" e "Turismo Digitale", sono questi gli ambiti di qualifica professionale PAR GOL scelti dalla Skill Factory, per creare nuovi posti di lavoro
Gino Visciano |
Skill Factory - 07/01/2025 15:22:22 | in Home
Quest'anno la strategia della Skill Factory per favorire l'inserimento dei giovani nel mondo del lavoro, punta su tre ambiti di qualifica professionale PAR GOL specifici:
1. Sviluppo Software: Programmatori, Tester, Analisti Funzionali e Sistemisti;
(Corso 10774 di 320 ore in presenza presso la nostra Academy di Napoli, con qualifica professionale EQF 5).
2. Amministrazione aziendale: Esperti di office automation, Esperti di CRM, Esperti di Contabilità e finanza, Esperti di gestione risorse umane;
(Corso 10778 di 300 ore a distanza, con qualifica professionale EQF 5).
"SEGRETARIO-COORDINATORE AMMINISTRATIVO"
Il programma PAR GOL (Garanzia di Occupabilità dei Lavoratori) è attuato dalle Regioni e Province autonome sulla base dei Piani di attuazione regionali (PAR).
È un'azione di riforma prevista dal PNRR (Piano Nazionale di Ripresa e Resilienza) e ha l'obiettivo di riqualificare i servizi di politica attiva del lavoro.
Mira a ridisegnare i servizi per il lavoro per favorire la formazione e l'inserimento lavorativo delle persone. Nel 2025 coinvolgerà oltre 3 milioni di disoccupati e inoccupati, una grande opportunità anche per i giovani che non studiano e non lavorano, che rientrano nella categoria NEET (Not in Education, Employment, or Training). I giovani NEET in Italia sono circa 2 milioni.
Il programma GOL offre la possibilità di accedere a diversi corsi di formazione gratuiti, specificamente progettati per potenziare le competenze dei lavoratori, agevolarne la riqualificazione e favorire lo sviluppo del potenziale per l’inserimento o il reinserimento nel mercato del lavoro.
Questi corsi coprono una vasta gamma di settori e competenze, consentendo ai partecipanti di acquisire la abilità richieste dalle aziende.
Oltre alla formazione gratuita, è prevista anche una indennità di partecipazione e il rilascio di una Qualifica Professionale Europea (EQF).
Per approfondire l'argomento della Qualifica Professionale Europea (EQF), clicca qui.
Se hai bisogno di assistenza o informazioni puoi contattarci ai seguenti recapiti:
Telefono: 08118181361
Cellulare: 327 087 0141
E-mail: segreteria@skillfactory.it
oppure puoi prenotare un appuntamento presso la nostra sede al Centro Direzionale di Napoli E2 scala A 1° piano.
5.Intelligenza Artificiale: IA Generativa
Gino Visciano |
Skill Factory - 01/12/2024 20:42:49 | in Home
L'Intelligenza Artificiale generativa rappresenta una rivoluzione tecnologica che permette di aumentare le capacità intellettuali degli uomini; un grande passo avanti per migliorare la qualità delle attività che svolgiamo in ogni settore, perché ci permette di ridurre i tempi e i costi per gestirle.
Oggi, gli LLM, oltre a comprendere il linguaggio naturale, possono anche creare contenuti di qualunque tipo, raggiungendo livelli di qualità molto realistici.
Questi modelli matematici sono capaci di gestire conversazioni complesse, possono supportaci durante le attività di brainstorming, ci aiutano a prendere decisioni, riescono a sintetizzare documenti, producono relazioni, fogli di calcolo e mail, scrivono codice con qualunque linguaggio di programmazione, generano contenuti artistici e di fantasia, possono interpretare il contenuto delle immagini e descriverlo in linguaggio naturale o da una descrizione sono capaci di generare un'immagine. Ad esempio, tutte le immagini di questo articolo sono state generate - attraverso una mia descrizione - dall'assistente virtuale COPILOT, che usa il modello DALL-E di OpenAI, specializzato nella generazione d'immagini.
I modelli linguistici di grandi dimensioni (LLM) hanno sviluppato queste capacità apprendendo enormi quantità dati. Praticamente riescono ad acquisire qualunque tipo d'informazioni digitale che trovano in Internet oppure che gli viene somministrata attraverso le attività di "Fine Tuning".
Più si addestrano sui dati e più diventano bravi, al punto che oggi alcuni modelli sono anche capci di superare il "Test di Turing".
Quello che è davvero sorprendente è che questi strumenti d'intelligenza artificiale, possono comprendere il sentiment espresso in un testo e capire se è positivo, negativo o neutro.
Ad esempio, guardate cosa riesce a fare l'assistente virtuale Perplexity con il testo seguente:
"Ieri Marco e Paola sono andati al supermercato e hanno comprato molti prodotti, alcuni a prezzi molto convenienti, altri un po' meno convenienti. Hanno acquistato 5 confezioni di affettati a 2 euro ciascuna, il presso è risultato conveniente, poi hanno acquistato 3 confezioni di pesto a 1 euro ciascuna, sempre al solito prezzo, quelle che sono risultate un po' care sono state le passate di pomodoro, ne prese 10 a 1,80 ciascuna.
Le cassiere sono state molto cortesi, un po' meno l'addetta alla salumeria, perché non gli ha dedicato la giusta attenzione. Il giudizio di Marco e Paola sul supermercato è buono."
Prompt 1
Prompt 2
Prompt 3
Prompt 4
Prompt 5
Dopo la richiesta, Perplexity ha generato il programma Python seguente:
import matplotlib.pyplot as plt
# Dati
labels = ['Tornano al supermercato', 'Non tornano al supermercato']
sizes = [75, 25] # Percentuali
colors = ['lightblue', 'salmon']
explode = (0.1, 0) # Esplodi il primo segmento
# Creazione del grafico a torta
plt.figure(figsize=(8, 6))
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=140)
# Titolo del grafico
plt.title('Probabilità che Marco e Paola Tornino al Supermercato')
plt.axis('equal') # Assicura che il grafico sia un cerchio
# Mostrare il grafico
plt.show()
Questo è il grafico che ho ottenuto dopo l'esecuzione del codice Python:
ATTENTI AI BIAS
I dati utilizzati per addestrare gli LLM possono contenere pregiudizi questo potrebbe creare il problema dei bias.
A causa di questo problema, gli LLM potrebbero prendere decisioni discriminatorie o dare risposte che contengono pregiudizi, contribuendo a rafforzare stereotipi esistenti e creare disuguaglianze.
Anche gli algoritmi stessi possono introdurre bias, ad esempio se favoriscono determinate categorie di dati oppure le persone che progettano e utilizzano gli LLM possono introdurre i propri pregiudizi nelle fasi di sviluppo e utilizzo.
Il problema dei bias, può creare problemi etici e morali e rendere rischioso l'uso degli LLM.
Per mitigare il problema dei bias si devono utilizzare dati di addestramento diversificati e rappresentativi. Bisogna sviluppare algoritmi che siano meno suscettibili al problema e si devono valutare costantemente i modelli per individuare e mitigare i bias. Inoltre, bisogna rendere trasparenti i processi di sviluppo e di utilizzo degli LLM.
Quando usate gli LLM dovete essere consapevoli dell'esistenza dei bias e delle loro potenziali conseguenze. Chi usa un LLM deve sempre pensare in modo critico e a valutare le informazioni generate.
Conoscere il problema dei bias, significa diventare cittadini informati e consapevoli dei vantaggi e dei rischi dell'intelligenza artificiale.
LE ALLUCINAZIONI
Quando si parla di "allucinazioni" in riferimento agli LLM, non stiamo parlando di visioni o sensazioni simili a quelle umane. In questo contesto, un'allucinazione si verifica quando un LLM genera un testo che è:
Falso: Non corrisponde a fatti reali o a informazioni esistenti.
Incoerente: Non ha senso logico o contraddice informazioni precedentemente fornite.
Fuorviante: Può portare l'utente a credere in qualcosa di falso.
Le allucinazioni sono un fenomeno comune negli LLM e rappresentano una sfida importante per il campo dell'intelligenza artificiale. Tuttavia, grazie agli sforzi dei ricercatori, stiamo sviluppando sempre nuovi strumenti e tecniche per mitigare questo problema e rendere gli LLM più affidabili e utili.
Ci sono diverse ragioni per cui un LLM può generare allucinazioni:
Mancanza di conoscenza: L'LLM potrebbe non avere accesso a informazioni sufficienti per rispondere a una domanda in modo accurato.
Sovra-ottimizzazione: L'addestramento su grandi quantità di dati può portare l'LLM a "memorizzare" pattern e correlazioni che non sono necessariamente significative, generando risposte che sembrano plausibili ma sono in realtà errate.
Ambiguità: Il linguaggio naturale è intrinsecamente ambiguo e un LLM potrebbe interpretare una domanda in modo diverso da quello inteso dall'utente.
Limitazioni del modello: L'architettura stessa dell'LLM può introdurre dei bias che lo portano a generare risposte non accurate.
Addestramento su dati di alta qualità: Utilizzare dati accurati e diversificati per addestrare l'LLM.
Valutazione continua: Monitorare costantemente l'output dell'LLM e correggere eventuali errori.
Miglioramento dell'architettura: Sviluppare modelli più robusti e meno inclini alle allucinazioni.
Trasparenza: Rendere chiaro all'utente che l'LLM può generare risposte false e incoraggiarlo a verificare le informazioni.
I principali modelli utilizzati dai chatbot e dagli assistenti virtuali, sono quelli di tipo GPT, DALL-E e BERT oppure hanno le caratteristiche simili come ad esempio LLaMA.
Questi modelli d'intelligenza artificiale sono molto potenti e possono avere applicazioni diverse. La scelta del modello dipende dalle specifiche esigenze del tuo progetto.
MODELLI GPT
I modelli GPT (Generative Pre-trained Transformer) sono una delle tecnologie più avanzate nel campo dell'intelligenza artificiale generativa. Sono in grado di generare testi sorprendentemente coerenti e creativi, aprendo nuove frontiere in molti settori. Si basano sull'architettura Transformer, che è particolarmente efficace nel gestire sequenze di dati, come il linguaggio naturale.
Vengono addestrati su enormi quantità di testo, apprendendo le relazioni tra le parole e le strutture del linguaggio. Una volta addestrati, possono generare nuovi testi, traducendo, riassumendo, rispondendo a domande e molto altro.
Ad esempio, possono scrivere articoli di giornale, poesie, canzoni, script e codice sorgente e riescono a tradurre testi da una lingua all'altra con un alto grado di accuratezza. Sono capaci di riassumere lunghi documenti in pochi paragrafi, mantenendo le informazioni più importanti. Completano frasi o paragrafi iniziati dall'utente, generando testi coerenti e pertinenti.
I modelli GPT più conosciuti sono: GPT-4, sviluppato da OpenAI e Jurassic-1 Jumbo: sviluppato da AI21 Labs.
MODELLO DALL-E
OpenAi ha sviluppato anche DALL-E un modello di intelligenza artificiale che ha rivoluzionato il modo in cui pensiamo alla generazione di immagini.
DALL-E è un modello di deep learning che è stato addestrato su un enorme dataset di immagini abbinate a descrizioni testuali. Grazie a questo addestramento, è in grado di generare immagini originali e creative a partire da semplici descrizioni testuali. Puoi praticamente descrivere qualsiasi cosa tu possa immaginare, e DALL-E cercherà di tradurla visivamente.
Questo potente modello d'intelligenza artificiale può creare immagini estremamente realistiche, come fotografie di persone, animali, oggetti e scene ed è capace di generare anche immagini in stili artistici specifici, come impressionismo, cubismo, o anche stili inventati.
DALL-E è in grado di combinare concetti apparentemente non correlati, creando immagini uniche e sorprendenti.
Ad esempio, puoi chiedergli di creare un'immagine di "un gatto astronauta che guida una macchina volante":
DI seguito alcuni esempi di attività che si possono svolgere con DALL-E:
- Creare illustrazioni per libri e articoli;
- Progettare loghi e marchi;
- Generare concept art per film e videogiochi;
- Creare arte digitale unica;
- Assistere i designer nella creazione di nuovi prodotti.
MODELLI BERT
I modelli BERT (Bidirectional Encoder Representations from Transformers) sono un'altra pietra miliare nel campo dell'elaborazione del linguaggio naturale e dell'intelligenza artificiale generativa, sebbene si concentrino maggiormente sulla comprensione del linguaggio piuttosto che sulla generazione.
Come i GPT, utilizzano l'architettura Transformer, ma con un focus diverso; la caratteristica distintiva di BERT è la sua capacità di processare il testo in modo bidirezionale, considerando sia il contesto precedente che successivo di una parola. Questo gli permette di comprendere meglio il significato delle parole all'interno di una frase.
Anche BERT viene pre-addestrato su enormi quantità di testo, ma con un obiettivo diverso: comprendere il significato delle parole nel loro contesto.
Mentre i GPT sono eccellenti nella generazione di testo, le capacità generative di BERT sono più limitate e si concentrano principalmente sul significato di un testo, l'analisi del sentiment o classificazione di documenti.
Nel prossimo articolo vi parlerò dei modelli d'Intelligenza Artificiale locali e di come si possono addestrare.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
3.Intelligenza Artificiale: le reti neurali artificiali
4.Intelligenza Artificiale: tipi di reti neurali artificiali
6.Intelligenza Artificiale: modelli pre-addestrati di IA locali
7.Intelligenza Artificiale: come creare una chatbot per conversare con Llama3
4.Intelligenza Artificiale: tipi di reti neurali artificiali
Gino Visciano |
Skill Factory - 25/10/2024 13:07:24 | in Home
Come abbiamo visto nell'articolo precedente il primo tipo di rete neurale artificiale è stato il Percettrone costituito da un singolo strato di neuroni, ognuno dei quali riceve un input, calcola una somma ponderata e applica una funzione di attivazione.
Il Percettrone anche se non può risolvere problemi complessi ha gettato le basi per lo sviluppo delle reti neurali moderne, introducendo concetti fondamentali come pesi, bias, soglie e funzioni di attivazione.
Dovete immaginare le reti neurali artificiali come modelli matematici che simulano il funzionamento del cervello umano. I neuroni artificiali, che compongono le reti neurali, non sono altro che mini-processori che svolgono le seguenti attività:
1) Ricevono l'input: il neurone riceve diversi input, ciascuno moltiplicato per un peso specifico;
2) Calcolano la somma ponderata: gli input moltiplicati per i pesi vengono sommati tra loro, spesso aggiungendo un bias;
3) Applicano la funzione di attivazione: il risultato della somma ponderata viene passato attraverso una funzione di attivazione, che introduce non linearità e determina l'output del neurone.
I neuroni sono connessi tra loro da sinapsi artificiali. Queste sinapsi rappresentano il flusso di informazioni da un neurone all'altro. I pesi associati a ciascuna sinapsi determinano l'importanza dell'informazione che passa da un neurone all'altro. Un peso alto indica una connessione forte, mentre un peso basso o negativo indica una connessione debole o inibitoria.
Dovete pensare a una rete neurale come a una rete di tubi. I neuroni sono i nodi della rete, i tubi sono le connessioni (sinapsi) e i parametri (pesi e bias) sono come delle valvole che regolano il flusso d'acqua nei tubi. Le valvole non sono i tubi stessi, ma determinano quanto acqua può passare da un tubo all'altro.
I neuroni artificiali collaborano tra loro per risolvere problemi complessi; l'area del machine learning che si occupa delle reti neurali è il deep learning.
Questi modelli matematici possono essere pre-addestrati attraverso grandi quantità di dati, detti dataset. Dopo il pre-addestramento possono anche essere specializzati con una ulteriore fase di addestramento chiamata fine-tuning.
Oggi le reti neurali vengono utilizzate per identificare pattern, per riconoscere e creare immagini, video e musica, comprendere il linguaggio naturale, generare e sintetizzare testi e molto altro ancora. Con l'evoluzione sono emersi diversi tipi di architetture, ognuna con caratteristiche specifiche che le rendono adatte a compiti diversi.
TIPI DI RETI NEURALI ARTIFICIALI
I principali tipi di reti neurali artificiali sono:
1) Feed-forward
2) Ricorrenti
3) Convoluzionali
4) Generative Adversariali
5) Trasformatori
1. Reti Neurali Feed-forward
Sono le reti più semplici, con un flusso di informazioni che va solo in avanti, da uno strato all'altro. Può contenere anche molti strati interni.

Apprendimento: supervisionato.
Queste reti vengono addestrate su un dataset di esempi, ognuno dei quali è composto da un input e dal corrispondente output corretto (etichetta). La rete cerca quindi di "imparare" la relazione tra gli input e gli output, in modo da poter prevedere l'output corretto per nuovi input mai visti prima.
Come avviene l'apprendimento in una rete feed-forward?
Inizializzazione: i pesi delle connessioni tra i neuroni vengono inizializzati casualmente.
Propagazione in avanti: l'input viene propagato attraverso la rete, strato per strato, fino a raggiungere l'output.
Calcolo dell'errore: si calcola la differenza tra l'output previsto dalla rete e l'output corretto (indicato nel dataset).
Backpropagation: l'errore viene propagato all'indietro attraverso la rete, aggiornando i pesi delle connessioni in modo da ridurre l'errore complessivo.
Ripetizione: i passi 2, 3 e 4 vengono ripetuti per molte iterazioni (epiche), fino a quando l'errore si riduce al di sotto di una soglia prefissata.
Perché l'apprendimento supervisionato è adatto alle reti feed-forward?
La struttura feedforward, con il flusso di informazioni che va in una sola direzione, si adatta bene all'apprendimento supervisionato, dove si vuole mappare un input a un output specifico. Gli algoritmi di apprendimento supervisionato, come la retropropagazione dell'errore, sono relativamente semplici da implementare.
2. Reti Neurali Ricorrenti (RNN)
Queste reti neurali hanno connessioni cicliche che permettono di mantenere uno stato interno, rendendole adatte a sequenze di dati. La caratteristica distintiva delle RNN è la presenza di connessioni ricorrenti, che consentono alla rete di "ricordare" informazioni passate, creando una sorta di memoria a breve termine. Questo le rende particolarmente adatte a lavorare con dati sequenziali, dove l'ordine degli elementi è importante.
Le loro caratteristiche le rendono adatte all'elaborazione del linguaggio naturale (NLP), alla generazione di testo e alle previsioni di serie temporali.
Le RNN di base presentano alcune limitazioni, come il vanishing/exploding gradient problem. Per ovviare a questi problemi, sono state sviluppate diverse varianti:
LSTM (Long Short-Term Memory): Reti Neurali Ricorrenti a Lungo Termine. Le LSTM sono dotate di porte che controllano il flusso di informazioni, consentendo di apprendere dipendenze a lungo termine. Sono ampiamente utilizzate per compiti come la traduzione automatica e il riconoscimento vocale.
GRU (Gated Recurrent Unit): Unità Ricorrente Recintata. Sono simili alle LSTM, ma con una struttura più semplice, le GRU sono altrettanto efficaci nel catturare dipendenze a lungo termine.
Bidirectional RNN: Le BRNN elaborano le sequenze in entrambe le direzioni (da sinistra a destra e da destra a sinistra), consentendo di sfruttare informazioni sia dal passato che dal futuro.
Encoder-Decoder: Questa architettura è composta da due parti: un encoder che mappa la sequenza di input in uno spazio vettoriale e un decoder che genera la sequenza di output a partire da questo spazio. È comunemente utilizzata per la traduzione automatica e la generazione di testo.
Gli Encoder-Decoder sono stati precursori dei Transformer.
Struttura: Sono varianti delle RNN, progettate per affrontare il problema del vanishing gradient, che limita la capacità delle RNN di apprendere dipendenze a lungo termine.
Utilizzo: Simile alle RNN, ma più efficaci per sequenze lunghe.
Apprendimento: gli RNN possono utilizzare tutti e tre i tipi di apprendimento: supervisionato, non supervisionato e per rinforzo, a seconda dell'obiettivo specifico dell'applicazione.
Apprendimento supervisionato
In questo caso, le RNN vengono addestrate su sequenze di dati per le quali è nota la sequenza di output corretta (Etichette).
Ad esempio, in un sistema di riconoscimento vocale, l'input potrebbe essere un'onda sonora e l'output corrispondente la trascrizione testuale.
Esempi:
Traduzione automatica: Tradurre una frase da una lingua all'altra.
Riconoscimento del parlato: Trascrivere un'onda sonora in testo.
Analisi del sentiment: Determinare se un testo esprime un'opinione positiva, negativa o neutrale.
Apprendimento non supervisionato
Le RNN vengono addestrate su grandi quantità di dati senza etichette, cercando di trovare pattern e strutture nascoste nelle sequenze.
Esempi:
Generazione di testo: Creare testi nuovi e coerenti, come poesie o script.
Compressione di sequenze: Ridurre la dimensione delle sequenze mantenendone le informazioni più importanti.
Anomaly detection: Identificare anomalie o eventi insoliti in sequenze di dati.
Apprendimento per rinforzo
Le RNN apprendono interagendo con un ambiente, ricevendo feedback positivi o negativi a seconda delle azioni intraprese.
Esempi:
Giochi: Imparare a giocare a giochi come il Go o gli scacchi.
Robotica: Controllare robot per eseguire compiti complessi.
Sistemi di raccomandazione: Suggerire prodotti o contenuti agli utenti in base alle loro interazioni.
Durante l'addestramento di reti neurali profonde, specialmente quelle ricorrenti, si può verificare un fenomeno noto come vanishing/exploding gradient. Questo problema si verifica durante la retropropagazione dell'errore, quando i gradienti (ovvero le misure di quanto i pesi della rete debbano essere aggiornati) diventano troppo piccoli (vanishing) o troppo grandi (exploding).
Vanishing gradient: I gradienti si avvicinano a zero, rendendo difficile l'aggiornamento dei pesi degli strati iniziali della rete. Di conseguenza, questi strati apprendono molto lentamente o addirittura non apprendono affatto.
Exploding gradient: I gradienti diventano estremamente grandi, rendendo instabile l'addestramento e causando oscillazioni nei pesi.
Perché le RNN sono particolarmente adatte alle sequenze?
La caratteristica distintiva delle RNN è la presenza di connessioni ricorrenti, che consentono alla rete di "ricordare" informazioni passate. Questo le rende particolarmente adatte a lavorare con dati sequenziali, dove l'ordine degli elementi è importante.
3. Reti Neurali Convoluzionali (CNN)
Le reti neurali Convoluzionali utilizzano filtri per estrarre caratteristiche locali dai dati, rendendole ideali per l'elaborazione di immagini e segnali audio. A differenza delle RNN, che sono più adatte per sequenze temporali, le CNN sfruttano una struttura particolare per estrarre caratteristiche rilevanti dalle immagini.
Riconoscimento di immagini, segmentazione di immagini, elaborazione del linguaggio naturale (NLP).
Esempi: LeNet, AlexNet, VGG.
Kernel: Matrice di numeri che agisce come un filtro per estrarre caratteristiche.
Convoluzione: Operazione che applica un kernel all'immagine di input.
Pooling: Operazione che riduce la dimensione spaziale delle feature map.
Esempi:
Riconoscimento di immagini: Sono particolarmente adatte per l'analisi di immagini, come il riconoscimento facciale, la segmentazione di immagini e la classificazione di oggetti.
Elaborazione del linguaggio naturale: Possono essere utilizzate per l'analisi del sentimento, la classificazione di testi e la generazione di didascalie per immagini.
Medicina: Vengono impiegate per l'analisi di immagini mediche, come radiografie e risonanze magnetiche, per la diagnosi di malattie.
Apprendimento: le CNN utilizzano principalmente l'apprendimento supervisionato. Questo significa che vengono addestrate su un ampio dataset di immagini etichettate, dove ogni immagine è associata a una classe (es. gatto, cane, automobile).
Come funziona l'apprendimento in una CNN?
Convoluzione: Il primo passo è la convoluzione. Un filtro (o kernel) viene applicato sull'immagine, scorrendo pixel per pixel. Questo processo crea una feature map, che evidenzia determinate caratteristiche dell'immagine (es. bordi, texture).
Pooling: Successivamente, viene applicata una funzione di pooling, come il max pooling o il average pooling, per ridurre la dimensionalità della feature map e estrarre le caratteristiche più importanti.
Appiattimento: La feature map viene appiattita in un vettore, che viene poi inserito in uno o più livelli completamente connessi (fully connected layers).
Classificazione: I livelli completamente connessi utilizzano l'apprendimento supervisionato per classificare l'immagine in base alle caratteristiche estratte.
Perché l'apprendimento supervisionato è ideale per le CNN?
Estrazione di feature: Le CNN sono eccellenti nell'estrarre automaticamente feature gerarchiche dalle immagini, senza la necessità di ingegnerizzare manualmente i descrittori.
Invarianza alle trasformazioni: Grazie alle operazioni di convoluzione e pooling, le CNN sono in grado di riconoscere oggetti indipendentemente dalla loro posizione, scala o rotazione nell'immagine.
Grandi dataset: L'apprendimento supervisionato richiede grandi quantità di dati etichettati, che sono disponibili in abbondanza nel campo della visione artificiale.
4. Reti Neurali Generative Adversariali (GAN)
Le GAN rappresentano un importante passo avanti nell'evoluzione dell'IA generativa, sono composte da due reti neurali che competono tra loro: un generatore e un discriminatore, vengono utilizzate per generare dati sintetici (immagini, musica) e manipolare immagini, come mostrano gli esempi seguenti:
Generazione di immagini: sono utilizzate per creare immagini fotorealistiche di oggetti o persone che non esistono.
Generazione di dati sintetici: possono essere utilizzate per generare dati sintetici per l'addestramento di altri modelli, come immagini mediche o dati finanziari.
Trasferimento dello stile: possono essere utilizzate per trasferire lo stile di un'immagine ad un'altra, come trasformare una foto in un dipinto.

Esitono molte varianti delle GAN tra queste le più conosciute sono le architetture: DCGAN e StyleGAN.
DCGAN (Deep Convolutional GAN)
Utilizza principalmente convoluzioni e deconvoluzioni (o trasposte convoluzionali) per estrarre e generare caratteristiche dalle immagini. È un modello più generico, adatto a una vasta gamma di applicazioni di generazione di immagini. Può essere utilizzato per generare immagini di oggetti, scene, volti, ecc.
Ha una struttura semplice, facile da implementare e addestrare, ma non può produrre immagini con artefatti e meno dettagliate rispetto a modelli più avanzati.
StyleGAN
L'architettura è basata su DCGAN, ma introduce una serie di modifiche per migliorare la qualità delle immagini generate. Utilizza un'architettura a più livelli che permette di controllare in modo più preciso le caratteristiche delle immagini. Specializzata nella generazione di immagini fotorealistiche, in particolare di volti umani; le immagini generate sono di altissima qualità, con un controllo preciso sulle caratteristiche stilistiche e di identità.
E' più complessa da implementare e addestrare rispetto a DCGAN e richiede maggiori risorse computazionali.
In sintesi:
Le architetture DCGAN offrono un modello generico per generare immagini di diverse tipologie e non hai bisogno di una qualità estrema, mentre quelle StyleGAN permettono di generare immagini di altissima qualità, in particolare volti umani, se hai a disposizione risorse computazionali sufficienti.
DCGAN è un punto di partenza solido per chi si avvicina alle GAN, StyleGAN rappresenta lo stato dell'arte nella generazione di immagini fotorealistiche.
Apprendimento: non supervisionato, ma con una dinamica competitiva molto particolare.
A differenza dell'apprendimento supervisionato, dove ogni esempio di addestramento ha un'etichetta che indica la classe corretta, nelle GAN non ci sono etichette. Il generatore crea nuovi dati da solo, e il discriminatore deve solo determinare se un dato è reale o falso.
Le GAN imparano a generare nuovi dati plausibili osservando la distribuzione dei dati di addestramento, attraverso una dinamica competitiva.
Le GAN sono composte da due reti neurali: un generatore e un discriminatore; la prima creare nuovi dati (es. immagini, testi) che siano il più possibile indistinguibili dai dati reali, la seconda distinguere tra i dati reali e quelli generati dal generatore cercando di classificarle correttamente. Entrambi i modelli vengono aggiornati attraverso la retropropagazione dell'errore. Il generatore cerca di ingannare il discriminatore, mentre il discriminatore cerca di diventare sempre più bravo a distinguere i dati reali da quelli falsi. L'addestramento continua fino a raggiungere un equilibrio, dove il generatore è in grado di creare dati così realistici che il discriminatore non riesce più a distinguerli dai dati reali.
Perché è così speciali le reti neurali GAN?
Le GAN sono in grado di generare dati nuovi e originali, aprendo la porta a numerose applicazioni creative, come la generazione di immagini artistiche, la creazione di video realistici e la sintesi vocale. Trovano applicazione in molti campi, dalla visione artificiale al trattamento del linguaggio naturale, dalla generazione di dati sintetici alla modellazione di sistemi complessi.
5. Transformer
L'ultima forntiera delle reti neurali artificiali, sono i transformer, reti basate su un meccanismo di attenzione che permettono di pesare l'importanza di diverse parti dell'input, sono particolarmente efficaci per l'elaborazione del linguaggio naturale.
I modelli di questo tipo più conosciuti sono: GPT, BERT, T5.
GPT (Generative Pre-trained Transformer)
La famiglia di modelli GPT, sviluppata da OpenAI, è nota per la sua capacità di generare testo di alta qualità e coerente. GPT-3, ad esempio, è uno dei modelli linguistici più grandi e potenti al mondo.
BERT (Bidirectional Encoder Representations from Transformers)
Sviluppato da Google, BERT è un modello bidirezionale pre-addestrato che ha ottenuto risultati eccellenti in numerosi compiti di NLP.
T5 (Text-to-Text Transfer Transformer)
Un altro modello sviluppato da Google, T5 unifica diversi compiti di NLP in un unico framework di trasformazione testo-testo.
L'immagine seguente rappresenta l'architettura di base di un modello transformer. Si focalizza sulla struttura encoder-decoder che è tipica per compiti come la traduzione automatica neurale (NMT).
Encoder
Embedding: la sequenza di input (es. una frase in una lingua sorgente) viene prima convertita in una rappresentazione numerica, chiamata embedding. Questa rappresentazione cattura le informazioni semantiche e sintattiche delle parole.
Positional Encoding: vengono aggiunte informazioni sulla posizione delle parole all'interno della sequenza. Questo è cruciale perché i Transformer non hanno un concetto intrinseco di sequenzialità.
Multi-Head Attention: Questo è il cuore dei Transformer. Consente al modello di pesare l'importanza di diverse parti dell'input quando genera l'output. Ogni "testa" di attenzione si focalizza su aspetti diversi della sequenza.
Feed Forward: Un semplice layer di rete neurale che applica una trasformazione non lineare alle rappresentazioni.
Add & Norm: una combinazione di un'operazione di somma e una normalizzazione layer-wise. Serve a stabilizzare l'addestramento e migliorare le prestazioni.
Decoder
Embedding e Positional Encoding: simili all'encoder, ma con una piccola differenza: la sequenza target viene shiftata di un passo a destra. Questo evita che il modello copi direttamente l'input.
Masked Multi-Head Attention: simile all'attenzione dell'encoder, ma con una maschera che impedisce al modello di "vedere" le parole future quando genera l'output.
Encoder-Decoder Attention: permette al decoder di concentrarsi sulle parti rilevanti dell'input dell'encoder.
Feed Forward e Add & Norm: stessi componenti dell'encoder.
Softmax: Produce una distribuzione di probabilità sulle parole del vocabolario. La parola con la probabilità più alta viene selezionata come output.
Flusso di informazioni
Encoder: l'encoder processa la sequenza di input, creando una rappresentazione contenitiva delle relazioni tra le parole.
Decoder: il decoder genera la sequenza di output un token alla volta, utilizzando l'informazione dall'encoder e dalle parole già generate.
Perché i transformer sono così potenti?
Il meccanismo di attenzione permette di calcolare le relazioni tra tutte le parole in parallelo, rendendo il modello più efficiente. L'attenzione permette al modello di catturare le relazioni tra parole che sono lontane tra loro nella sequenza.
I transformer possono essere applicati a una vasta gamma di compiti di NLP, dalla traduzione automatica alla generazione di testo. Rappresentano un'architettura di rete neurale che ha rivoluzionato il campo del deep learning, in particolare nel settore del linguaggio naturale.
La caratteristica distintiva dei transformer è il meccanismo di auto-attenzione. Questo meccanismo permette al modello di pesare l'importanza di diverse parti dell'input quando genera l'output.
In parole più semplici, il transformer è in grado di "capire" il contesto di una parola all'interno di una frase, considerando le parole che la precedono e quelle che la seguono.
A differenza delle reti ricorrenti (RNN) che processano le frasi in modo sequenziale, i transformer possono catturare dipendenze tra parole molto distanti nella frase, rendendoli particolarmente adatti per compiti come la traduzione automatica e la generazione di testo.
L'auto-attenzione consente al transformer di elaborare l'intera sequenza in parallelo, rendendo l'addestramento più efficiente rispetto alle RNN e CNN.
La maggior parte dei transformer utilizzati per il linguaggio naturale è composta da un encoder e un decoder. L'encoder mappa la sequenza di input in una rappresentazione latente, mentre il decoder genera la sequenza di output. Inoltre, attraverso il meccanismo del multi-head attention riescono a catturare diverse tipologie di dipendenze all'interno dei dati.
Gli strati Feed-forward neural network aggiungono la non-linearità al modello, permettendo di estrarre caratteristiche più complesse, dimostrando di ottenere prestazioni superiori alle reti neurali tradizionali in numerosi compiti di NLP, come la traduzione automatica, la generazione di testo, la risposta a domande e la comprensione del linguaggio naturale. Inoltre, l'architettura dei transformer è molto versatile e può essere applicata a una vasta gamma di compiti, oltre al linguaggio naturale.
I transformer, attraverso un'attività di fine-tuning, possono essere addestrati su grandi quantità di dati, consentendo di creare modelli sempre più potenti e sofisticati.
Nel prossimo articolo vi parlerò dell'Intelligenza Artificiale Generativa e cosa cambia.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
3.Intelligenza Artificiale: le reti neurali artificiali
5.Intelligenza Artificiale: IA Generativa
6.Intelligenza Artificiale: modelli pre-addestrati di IA locali
7.Intelligenza Artificiale: come creare una chatbot per conversare con Llama3