Large language model (IT)

From Systems analysis Wiki
Jump to navigation Jump to search

Il modello linguistico di grandi dimensioni (large language model, LLM) è un tipo di modello di Machine Learning implementato tramite una rete neurale profonda con un elevato numero di parametri (solitamente miliardi o più) e addestrato su grandi volumi di dati testuali. «Grandi» in questo contesto si riferisce contemporaneamente alla scala dei parametri e al volume del corpus di addestramento, che nei sistemi moderni raggiunge diversi petabyte e trilioni di token. I modelli LLM vengono addestrati prevalentemente con il metodo self-supervised o semi-supervised, prevedendo il token successivo in una sequenza e acquisendo così le regolarità statistiche del linguaggio. L'aumento di parametri, dati e passi computazionali porta a un miglioramento prevedibile della qualità, confermato dalle scaling laws.

Dopo la comparsa di BERT (2017) e in particolare di GPT-3 (2020), l'approccio LLM è diventato dominante nell'elaborazione del linguaggio naturale. I modelli moderni (GPT-4o, Claude 3, Gemini 1.5, LLaMA 3 e altri) sono in grado, senza configurazione specifica, di scrivere testi e codice, tradurre, riassumere, rispondere a domande e costruire catene di ragionamento; le versioni multimodali analizzano immagini, audio e video. L'adattamento a un'applicazione specifica avviene tramite fine-tuning o prompt engineering (in-context learning). Insieme ai propri risultati, i modelli LLM ereditano i bias e gli errori dei dati di origine, sono soggetti a «allucinazioni» e richiedono ingenti risorse computazionali; pertanto, la ricerca odierna si concentra sull'allineamento del comportamento, sul filtraggio dei corpus e su architetture a maggiore efficienza energetica.

Architettura

Nei moderni LLM viene quasi sempre utilizzata l'architettura Transformer (trasformatore) – una rete con meccanismo di auto-attenzione (self-attention). Il modello transformer fu proposto per la prima volta nell'articolo Attention is All You Need degli sviluppatori di Google nel 2017.

L'architettura Transformer è lo schema base di rete neurale per l'elaborazione di sequenze, comprendente due moduli logici: l'encoder (codifica l'input) e il decoder (genera l'output). Viene ricevuta una sequenza in ingresso, ne viene creata una rappresentazione vettoriale (embedding), viene aggiunto un vettore di codifica posizionale, dopodiché l'insieme degli elementi senza tener conto dell'ordine nella sequenza viene trasmesso al componente di codifica (elaborazione parallela), e poi il componente di decodifica riceve come input una parte di questa sequenza e l'output del componente di codifica. Il risultato è una nuova sequenza di output.

Il componente di codifica del transformer è composto da diversi strati-encoder identici; il componente di decodifica è strutturato in modo analogo. Il transformer stesso è una sequenza di modelli di attenzione che trasformano la sequenza originale di vettori in una nuova sequenza in cui ogni elemento tiene conto del contesto degli altri. L'encoder forma rappresentazioni nascoste dei dati di input, conservando le informazioni sulle relazioni tra gli elementi. Il decoder, sulla base delle rappresentazioni nascoste, crea una nuova sequenza di embedding per i token di output. Successivamente, sulla base di questi embedding, vengono generati gli elementi finali di output tramite un modello linguistico.

Poiché i transformer erano originariamente sviluppati per compiti come la traduzione automatica, la loro architettura include un encoder (che elabora il testo di input, ad esempio la frase sorgente) e un decoder (che genera l'output, ad esempio la traduzione). Tuttavia, in molti modelli linguistici viene utilizzata solo la parte decoder, operante in modalità autoregressiva.

I transformer vengono utilizzati in tre configurazioni principali, ciascuna delle quali impiega encoder e decoder in modo diverso ed è orientata verso una propria gamma di compiti:

  • Encoder-transformer (bidirezionali) imparano a ripristinare frammenti di testo intenzionalmente mascherati, pertanto sono particolarmente adatti per compiti di «comprensione»: classificazione, estrazione di fatti, ricerca semantica.
  • Decoder-transformer (autoregressivi) vengono ottimizzati per la previsione del token successivo e sono utilizzati dove è necessario un output in streaming: agenti di dialogo, completamento automatico del codice, generazione creativa.
  • Schemi completi «encoder + decoder» combinano entrambi gli approcci: l'encoder costruisce una rappresentazione dell'intero testo di input, mentre il decoder, basandosi su di essa, forma il risultato in modo graduale. Questa configurazione è più efficace per la traduzione automatica, la sumarizzazione e i sistemi di domanda-risposta.

Tokenizzazione

La tokenizzazione è la fase iniziale fondamentale dell'elaborazione del testo nei grandi modelli linguistici. In questa fase, una stringa continua di caratteri viene suddivisa in unità distinte — i token. La tokenizzazione svolge il compito di trasformare una sequenza di caratteri in una sequenza di elementi strutturati che garantiscono il funzionamento efficiente della rete neurale.

Dal punto di vista linguistico, la tokenizzazione potrebbe in una certa misura corrispondere al processo di individuazione delle unità minime del linguaggio dotate di significato autonomo o di funzione, come parole, morfemi o loro frammenti. Tuttavia, spesso un token è semplicemente una sequenza di caratteri che ricorre frequentemente dal punto di vista statistico, pertanto è importante non sopravvalutare la coerenza linguistica di tutti i token. A seconda dello schema scelto, un token può essere: una parola intera, una sottoparola, un singolo carattere, un marcatore di servizio (ad esempio, marcatori di inizio e fine sequenza).

La tokenizzazione consente di:

  • limitare la dimensione del vocabolario a scale accettabili;
  • elaborare correttamente parole rare e nuove;
  • garantire una mappatura univoca del testo su una sequenza di identificatori numerici.

Per la segmentazione del testo vengono impiegati algoritmi sub-lessicali, i più diffusi dei quali sono Byte Pair Encoding (BPE), WordPiece e UnigramLM. Ognuno di essi costruisce un vocabolario dai frammenti più frequenti del corpus e lo utilizza per la segmentazione sequenziale di qualsiasi testo di input.

Dopo la fase di tokenizzazione, ogni unità di testo — il token — viene convertita in una rappresentazione numerica comprensibile alla rete neurale. Questo processo comprende diversi passaggi sequenziali:

  • Conversione dei token in identificatori: Ogni token viene associato a un indice numerico univoco sulla base di un vocabolario di token precedentemente costruito. I token testuali vengono sostituiti dai loro identificatori numerici univoci (ID). Ogni ID è il numero del token nel vocabolario precedentemente costruito, il che permette alla rete neurale di lavorare con numeri anziché con parole.
  • Conversione degli identificatori in embedding: Per ogni identificatore di token viene estratto o calcolato il corrispondente vettore di dimensionalità fissa — l'embedding. Questa rappresentazione numerica multidimensionale sostituisce l'ID e contiene già informazioni sul significato e sulle proprietà contestuali del token. Tutti gli embedding hanno la stessa lunghezza per facilitare l'elaborazione.
  • Aggiunta delle codifiche posizionali: Poiché l'architettura Transformer di per sé non tiene conto dell'ordine degli elementi, agli embedding vengono aggiunte le codifiche posizionali (positional encodings), che forniscono informazioni sulla posizione del token nella sequenza. In altre parole, grazie a ciò il modello «sa» quale token è il primo, il secondo, il terzo e così via nella frase.
  • Formazione delle matrici di input: In output si ottiene una matrice di dimensione [длина последовательности × размерность эмбеддинга], che serve come rappresentazione iniziale del testo e viene trasmessa come input alla rete neurale, in particolare ai blocchi di auto-attenzione (self-attention) del Transformer. Ogni riga di questa matrice corrisponde a un token, e il vettore in essa contenuto porta sia il suo significato semantico (embedding) sia le informazioni sulla sua posizione nel testo (codifica posizionale).
Текст → Токены → Идентификаторы → Эмбеддинги + Позиционные кодировки → Вход в модель

Meccanismo di attenzione

Il meccanismo di attenzione (attention mechanism) è il componente chiave dell'architettura Transformer, che permette di tenere conto delle dipendenze tra i token indipendentemente dalla distanza tra loro nella sequenza. Dopo che il testo di input è stato trasformato in una sequenza di vettori, questa sequenza viene trasmessa all'elemento centrale del transformer — il blocco di attenzione (attention block).

Il meccanismo di attenzione è un modo per la rete neurale di determinare a quali parti dei dati di input prestare maggiore attenzione durante l'elaborazione di ogni elemento della sequenza. Grazie ad esso, i vettori di singoli frammenti di testo possono interagire tra loro, arricchendosi di informazioni e aggiornando i propri valori tenendo conto del contesto circostante. Ciò consente al modello di catturare efficacemente sia le dipendenze locali che quelle a lungo raggio tra i token, migliorando significativamente la sua capacità di interpretare strutture testuali complesse.

Nel linguaggio naturale, il significato di una parola o di un'espressione non è determinato in isolamento — dipende dal contesto, ovvero dalle altre parole e strutture nell'ambiente circostante. Nelle reti neurali, il testo viene codificato tramite rappresentazioni vettoriali — embedding — che riflettono numericamente le proprietà lessicali e sintattiche dei token. Senza un meccanismo di attenzione diretta (come nel Transformer), le informazioni contestuali andrebbero perse su lunghe distanze (come nei modelli semplici), oppure verrebbero trasmesse in modo sequenziale, il che è meno efficiente per la cattura di dipendenze a lungo raggio. Tuttavia, nel linguaggio naturale il significato di una parola o di una costruzione sintattica è dinamico, e la sua interpretazione deve adattarsi in base al contesto. Il meccanismo di attenzione esegue la contestualizzazione delle rappresentazioni vettoriali, il che significa (o semplicemente :):

  • Ogni token «valuta» la propria importanza rispetto agli altri token nella frase.
  • Nel processo di aggiornamento, le rappresentazioni vettoriali si arricchiscono di informazioni reciproche, riflettendo le dipendenze sintattiche, i ruoli semantici e il contesto pragmatico.

In seguito a questo scambio di informazioni, i vettori aggiornati iniziano a codificare non solo il significato del token stesso, ma anche le sue relazioni grammaticali (sintassi), il ruolo nella situazione descritta (semantica) e il senso complessivo nel contesto (pragmatica).

Входные векторы токенов (с позициями) → Механизм Внимания (Взаимодействие векторов) → Контекстуализированные векторы токенов (Векторы обогащенные информацией о связях с другими токенами)

Implementazione tecnica del meccanismo di attenzione

La struttura interna del meccanismo di attenzione comprende diversi passaggi computazionali e componenti chiave. Per ogni vettore di input vengono generati tre vettori: Query (Interrogazione), Key (Chiave) e Value (Valore). Sulla base della loro interazione vengono calcolati i pesi di attenzione, che vengono poi utilizzati per ottenere rappresentazioni vettoriali aggiornate e contestualizzate. Un approccio diffuso è l'utilizzo dell'architettura multi-testa (Multi-Head Attention) per l'elaborazione parallela delle informazioni.

Query (Interrogazione), Key (Chiave), Value (Valore)

Alla base del calcolo del meccanismo di attenzione si trova la trasformazione di ogni vettore di input (che è la somma dell'embedding del token e della sua codifica posizionale) in tre diverse rappresentazioni vettoriali: Query (Q), Key (K) e Value (V).

Concettualmente, questi tre vettori svolgono i seguenti ruoli nel meccanismo di attenzione:

  • Query (Interrogazione): Rappresenta il vettore del token corrente che avvia il processo di ricerca di informazioni rilevanti nella sequenza. Può essere considerato come una «domanda» o una «sonda», utilizzata per valutare l'importanza degli altri token rispetto a quello corrente.
  • Key (Chiave): Funge da identificatore o «etichetta» che descrive l'aspetto del contenuto di ogni token. Il vettore Query (Q) del token corrente viene confrontato con tutti i vettori Key (K) nella sequenza (incluso il proprio) per determinare il grado di corrispondenza o rilevanza.
  • Value (Valore): Contiene le informazioni effettive o la rappresentazione associata a ogni token, che verrà trasmessa in avanti. Dopo il calcolo dei pesi di attenzione sulla base dell'interazione tra Query e Key, questi pesi vengono applicati ai vettori Value per formare la rappresentazione ponderata finale, che costituisce l'output del meccanismo di attenzione per il dato token.

Addestramento dei modelli linguistici di grandi dimensioni

L'addestramento degli LLM avviene prevalentemente in due fasi:

  1. Pre-addestramento (Pretraining) In questa fase, il modello viene addestrato su grandi corpus di testo non annotato tramite il metodo di apprendimento auto-supervisionato (self-supervised learning). Il compito consiste nel prevedere il token successivo in una sequenza (autoregressione) o nel ripristinare frammenti mascherati (apprendimento mascherato). Il pre-addestramento consente al modello di acquisire ampie regolarità statistiche del linguaggio, la grammatica, fatti sul mondo e forme di base di ragionamento.
  2. Fine-tuning (Messa a punto) Dopo il pre-addestramento, il modello viene ulteriormente addestrato su dati specializzati per eseguire compiti specifici, ad esempio la generazione di risposte, la classificazione di testi o l'esecuzione di istruzioni. Gli approcci moderni includono:
    • Fine-tuning su dataset annotati (supervised fine-tuning).
    • Apprendimento per rinforzo con feedback umano (RLHF, Reinforcement Learning from Human Feedback) per correggere il comportamento del modello in base alle metriche target di qualità, sicurezza e utilità.

Problemi e limitazioni

Nonostante i progressi impressionanti, i moderni modelli linguistici di grandi dimensioni (LLM) presentano una serie di problemi e limitazioni:

I. Limitazioni Computazionali e Architetturali

  1. Elevati costi computazionali: L'addestramento e l'utilizzo degli LLM richiedono notevoli risorse computazionali, tempo ed energia, il che comporta elevati costi economici e ambientali. Inoltre, la natura autoregressiva della generazione (creazione sequenziale di token) limita la parallelizzazione e rallenta la velocità di inferenza rispetto agli approcci non autoregressivi.
  2. Limitazione della lunghezza del contesto: L'architettura Transformer ha una dipendenza quadratica dei costi computazionali e dei requisiti di memoria dalla lunghezza della sequenza. Ciò costringe a stabilire un limite fisso (finestra di contesto) sul volume di testo che il modello può elaborare contemporaneamente, portando al troncamento di documenti lunghi e alla perdita di informazioni al di fuori della finestra.

II. Problemi di Affidabilità e Precisione della Generazione

  1. Allucinazioni: Generazione di informazioni fattualmente errate ma formulate in modo plausibile. Ciò è legato all'assenza di una reale comprensione del mondo da parte del modello, al fatto che si basa su regolarità statistiche nei dati e all'incapacità di verificare le affermazioni generate.
  2. Propagazione degli errori (Error Propagation): Il processo per cui gli errori commessi nelle fasi iniziali della generazione si amplificano e portano all'accumulo di imprecisioni nei passi successivi, riducendo la qualità complessiva e la coerenza del testo.
  3. Composizionalità limitata: Difficoltà con compiti che richiedono ragionamento logico multi-step o calcoli precisi (ad esempio, moltiplicazione di numeri a più cifre, risoluzione di puzzle). La precisione dei modelli in tali compiti cala drasticamente con l'aumentare della complessità, a causa della natura autoregressiva della generazione.
  4. Ripetizioni: Tendenza a ripetere in modo eccessivo parole o frasi, riducendo l'informatività e la leggibilità del testo. È legata alle caratteristiche dell'addestramento e degli algoritmi di decodifica (selezione del token successivo).
  5. Maledizione dell'inversione (Reversal Curse): Incapacità del modello di generalizzare automaticamente le conoscenze in direzione inversa: avendo appreso l'affermazione «A è B», il modello spesso non riesce a derivare «B è A».
  6. Compromesso «creatività-precisione»: Necessità di bilanciare la generazione di risposte diversificate e originali con il mantenimento della precisione fattuale. Il miglioramento di un aspetto spesso influisce negativamente sull'altro; ad esempio, un'elevata creatività può correlarsi con un aumento delle allucinazioni.

III. Problemi di Interazione e Controllo:

  1. Bassa controllabilità: Difficoltà nel controllare con precisione lo stile, il tono, il contenuto del testo generato o il rispetto di istruzioni complesse. La controllabilità dipende fortemente dalla qualità delle istruzioni di input («prompt») e dai metodi di fine-tuning.
  2. Sensibilità alla formulazione: Modifiche minime alla query di input (prompt) possono portare a risposte significativamente diverse, anche se la semantica della query rimane invariata. Ciò rende difficile ottenere risultati stabili e prevedibili.

IV. Aspetti Etici e Sociali:

  1. Problemi di bias e correttezza: I modelli possono riprodurre e amplificare gli stereotipi sociali, i pregiudizi o la tossicità presenti nei dati di addestramento. Garantire la correttezza e la sicurezza dei modelli è un compito complesso.
  2. Problema di allineamento (LLM Alignment): Un problema più generale che include il punto precedente. Si tratta del compito di garantire che il comportamento del modello sia conforme ai valori umani, alle intenzioni e alle norme etiche. Include la lotta al bias, alle allucinazioni, alla generazione di contenuti dannosi e il miglioramento della controllabilità.
  3. Rischi di utilizzo malevolo: La possibilità di utilizzare gli LLM per creare e diffondere in massa disinformazione, phishing, spam, codice dannoso o per generare testi falsi convincenti, il che rappresenta una minaccia per la sicurezza informativa e personale, oltre a minare la fiducia nella società.

Riferimenti:

  • «Modello linguistico di grandi dimensioni» // Wikipedia (versione russa)
  • Large Language Model // Wikipedia (English version)
  • Grand Modèle de Langage // Wikipédia (Version française)
  • Sprachmodell // Wikipedia (Deutsche version)
  • Naveed H. et al. // A Comprehensive Overview of Large Language Models // arXiv:2307.06435, 2023

Bibliografia

  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Brown, T. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.
  • Hoffmann, J. et al. (2022). Training Compute-Optimal Large Language Models. arXiv:2203.15556.
  • Ouyang, L. et al. (2022). Training Language Models to Follow Instructions with Human Feedback. arXiv:2203.02155.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Bubeck, S. et al. (2023). Sparks of Artificial General Intelligence: Early Experiments with GPT-4. arXiv:2303.12712.
  • OpenAI. (2023). GPT-4 Technical Report. arXiv:2303.08774.
  • Touvron, H. et al. (2024). The Llama 3 Herd of Models. arXiv:2407.21783.