Come funzione ChatGPT (e non solo...)

Come funzione ChatGPT (e non solo...)

Comprendere e superare la natura statica e senza stato dei Modelli Linguistici di Grandi Dimensioni (LLM)

Questo articolo spiega come sistemi come ChatGPT utilizzano diversi metodi e componenti per simulare una conversazione e un apprendimento continuo, sottolineando che i Large Language Models (LLM) sono strumenti linguistici, non “cervelli artificiali”.

Natura statica e senza stato degli LLM

Gli LLM, come quelli usati da ChatGPT, hanno due limitazioni principali:

  1. Staticità: La conoscenza del modello è di sola lettura e non cambia con l'interazione dell'utente.
  2. Assenza di stato: Il modello rimane inattivo finché non riceve una piccola finestra di testo da elaborare, dopodiché genera una risposta e torna allo stato di inattività.

Come ChatGPT simula una conversazione

ChatGPT supera queste limitazioni utilizzando un sistema che comprende:

  1. Il modello LLM
  2. Uno strato applicativo
  3. Un'interfaccia utente web

Il processo funziona così:

  1. L'utente invia una richiesta a ChatGPT.
  2. Lo strato applicativo passa la richiesta e eventuali parametri aggiuntivi al modello tramite API.
  3. Il modello genera una risposta e la restituisce all'interfaccia utente.
  4. L'utente può inviare un'altra richiesta.
  5. La nuova richiesta viene inviata insieme all'INTERA cronologia di richieste e risposte precedenti.

Questo metodo permette di simulare una conversazione, presentando al modello l'intera cronologia ad ogni interazione, come se fosse Dory del film "Alla ricerca di Nemo" che non ricorda nulla ma può considerare tutta la storia ogni volta.

Limitazioni del processo

  1. Finestra di contesto limitata: Il modello può elaborare solo una piccola quantità di testo alla volta (il "contesto").
  2. Crescita delle risorse necessarie: Man mano che la conversazione continua, aumentano la memoria e la potenza di calcolo richieste, con una relazione quadratica tra le attivazioni.

Superare la staticità del modello

Per affrontare il problema della conoscenza statica, vengono utilizzate diverse strategie:

  1. Fine-tuning: Integrazione di nuovi dati su un modello pre-addestrato.
  2. Retrieval-Augmented Generation (RAG): Permette al modello di accedere a dati più recenti.
  3. Apprendimento in-context programmato: L'applicazione inserisce dati da fonti esterne nel prompt.
  4. Function calling e agenti: Il modello può richiedere informazioni da fonti esterne tramite agenti.
  5. Database vettoriali: Fungono da memoria a lungo termine accessibile dal modello.

 

Qualche esempio pratico:

Esempio di conversazione continuativa: Utente: "Qual è la capitale dell'Italia?" ChatGPT: "La capitale dell'Italia è Roma." Utente: "E quale fiume la attraversa?" ChatGPT: "Il fiume che attraversa Roma è il Tevere."

In questo esempio, ChatGPT riesce a capire che "la" si riferisce a Roma, anche se non è stata menzionata nella seconda domanda. Questo avviene perché l'intero contesto della conversazione viene inviato al modello ad ogni interazione.

Esempio di limitazione della finestra di contesto: Immaginiamo una lunga conversazione sulla storia romana che raggiunge il limite della finestra di contesto (ad esempio, 8000 token). Utente: "Torniamo all'inizio della nostra conversazione. Di cosa stavamo parlando?" ChatGPT potrebbe rispondere: "Mi dispiace, ma non ho accesso all'inizio della nostra conversazione. Potrei aver perso alcune informazioni precedenti a causa della limitazione della mia finestra di contesto. Potrebbe ripetere la domanda o il tema iniziale?"

Questo esempio mostra come il modello, nonostante sembri "ricordare" le parti recenti della conversazione, in realtà non ha accesso alle informazioni oltre la sua finestra di contesto.

Esempio di aggiornamento delle conoscenze tramite RAG: Utente: "Qual è l'attuale presidente degli Stati Uniti?" ChatGPT: "L'attuale presidente degli Stati Uniti è Joe Biden."

In questo caso, se il modello base fosse stato addestrato prima dell'elezione di Biden, la risposta corretta viene fornita grazie all'uso di Retrieval-Augmented Generation (RAG), che permette al sistema di accedere a informazioni più recenti.

Esempio di function calling: Utente: "Qual è la temperatura attuale a Roma?" ChatGPT: "Mi scusi, non ho accesso diretto alle informazioni meteorologiche in tempo reale. Tuttavia, posso cercare questa informazione per lei." [Il sistema usa function calling per interrogare un servizio meteo] ChatGPT: "Ho consultato un servizio meteo aggiornato. La temperatura attuale a Roma è di 22°C."

Questo esempio mostra come il sistema possa utilizzare function calling per ottenere informazioni in tempo reale che il modello base non possiede. 

Esempio di uso di database vettoriali per la memoria a lungo termine: Utente: "Ricordi cosa ti ho detto ieri sul mio cane?" ChatGPT: "Mi dispiace, ma non ho una memoria persistente delle conversazioni passate. Tuttavia, posso accedere a informazioni salvate se sono state memorizzate nel mio database. Lasciami controllare." [Il sistema interroga un database vettoriale] ChatGPT: "Ho trovato un'informazione salvata riguardo al tuo cane. Ieri mi hai detto che il tuo cane si chiama Max ed è un labrador di 5 anni."

Questo esempio illustra come i sistemi basati su LLM possano simulare una memoria a lungo termine utilizzando database vettoriali esterni. 

Applicazioni pratiche

Questi metodi non si limitano a ChatGPT, ma vengono utilizzati da sviluppatori per integrare LLM in vari sistemi per automatizzare compiti come:

  • Traduzione
  • Riassunti
  • Analisi del sentimento
  • Miglioramento delle ricerche su Google
  • Riassunti di thread di commenti su Facebook

Conclusione

L'uso di programmi e strumenti esterni per affrontare la natura statica e senza stato degli LLM li rende molto più potenti. Tuttavia, è importante ricordare che i modelli stessi mantengono le stesse limitazioni e rimangono collezioni statiche di dati linguistici generalizzati, capaci solo di generare nuove risposte linguistiche basate su relazioni probabilistiche tra parti del linguaggio.

 









































Per visualizzare o aggiungere un commento, accedi

Altre pagine consultate