Cosa sono i dati sintetici
I migliori dati di addestramento sono le conversazioni reali con i Suoi utenti. Spesso ce ne sono troppo poche, coprono solo i casi semplici, oppure l'assistente che desidera addestrare non esiste ancora. I dati sintetici colmano questa lacuna: un modello avanzato scrive conversazioni di esempio che mostrano il comportamento desiderato, e un modello più piccolo o più economico viene poi addestrato su di esse.
Questa è ormai una tecnica standard. Lo studio Self-Instruct (2022) ha fatto sì che GPT-3 scrivesse le proprie istruzioni e risposte, ha filtrato quelle non valide e quasi duplicate, e ha perfezionato GPT-3 sul risultato: un miglioramento assoluto del 33% sul benchmark Super-NaturalInstructions. Alpaca di Stanford (2023) ha utilizzato la stessa idea per creare 52.000 dimostrazioni per meno di 500 dollari. UltraChat ha generato 1,5 milioni di dialoghi a più turni, e phi-1 di Microsoft ha dimostrato che un modello di codice da 1,3 miliardi di parametri, addestrato in parte su libri di testo sintetici, poteva raggiungere il 50,6% sul benchmark HumanEval.
Il rischio: lo studente copia l'autore
Un modello addestrato sulla scrittura di un altro modello ne apprende le abitudini tanto fedelmente quanto la conoscenza. Se ogni utente generato esordisce con “Salve, ho una domanda su…”, il modello addestrato gestirà solo domande educate e ben formulate. Se l'autore non rifiuta mai nulla, non lo farà nemmeno lo studente. La ricerca sull'addestramento ripetuto di modelli su testo generato (Shumailov e colleghi, 2023) ha scoperto che i casi rari — le code della distribuzione — sono la prima cosa a scomparire. I buoni dati sintetici si basano quindi principalmente su due aspetti: la varietà, affinché i casi rari e complessi siano presenti, e il controllo, in modo che sia Lei a decidere quale sia il risultato ottimale.
Come funziona il Dataset Builder
Il brief descrive cosa costruire. Il perimetro indica cosa copre l'assistente e, altrettanto importante, cosa non copre: le chat fuori perimetro, in cui l'assistente rifiuta gentilmente o reindirizza, insegnano al modello dove finisce il suo compito. L'obiettivo e la trama indicano cosa ottiene una buona risposta e chi è l'assistente — tono, persona (profilo utente), regole. Il pubblico indica chi sono gli utenti, il che plasma le domande. Le istruzioni contengono tutto il resto (“concludere sempre con un passaggio successivo”, “non citare mai i prezzi”). Poi arrivano i conteggi e i limiti: quante chat, turni per chat, la risposta più lunga, il messaggio utente più lungo e la lingua. I documenti opzionali forniscono i Suoi fatti.
1. Piano. Prima di scrivere qualsiasi chat, il modello scrive un piano: un elenco di scenari, ciascuno con un argomento, una tipologia di utente, una difficoltà (facile, difficile, caso limite o fuori perimetro) e l'intento dell'utente, oltre a quante chat riceve ciascuno. Pianificare prima è ciò che produce varietà: senza di esso, un modello a cui vengono richieste 100 chat tende a scrivere 100 versioni delle stesse tre domande. Lei legge il piano, modifica o elimina le righe e aggiunge le Sue prima che venga scritto alcunché.
| Argomento | Tipo di utente | Difficoltà | Intento | Chat |
|---|---|---|---|---|
| Segnalazione della rottura di un tubo | richiedente al primo sinistro | facile | aprire un sinistro casa | 8 |
| Sinistro respinto per ritardata comunicazione | cliente frustrato, sbrigativo | difficile | comprendere il motivo e fare ricorso | 9 |
| Danno coperto da due polizze | locatore | caso limite | verificare quale polizza copre il danno | 8 |
| Invio di foto e ricevute | cliente anziano, insicuro con le app | facile | caricare le prove | 7 |
| Fare causa al vicino del piano di sopra | richiedente | fuori ambito | ottenere consulenza legale | 8 |
2. Genera. Una volta approvato il piano, le chat vengono scritte in background, ciascuna attingendo alle parti dei Suoi documenti che si adattano al suo scenario. Può mettere in pausa, riprendere o annullare in qualsiasi momento, e il builder mostra una stima approssimativa del tempo rimanente.
3. Controlli. Ogni chat viene controllata man mano che arriva. La struttura deve essere corretta: utente e assistente si alternano, iniziando con l'utente e terminando con una risposta dell'assistente. I modelli spesso scrivono un turno in più o in meno rispetto a quanto richiesto; tali chat vengono conservate e tagliate, perché sono comunque buoni esempi. Solo le chat danneggiate — ruoli errati, messaggi vuoti — vengono scartate e riscritte. Altri problemi generano una segnalazione: la chat viene conservata ma contrassegnata per la Sua revisione.
Un contrassegno è una domanda, non un verdetto: un rifiuto è assolutamente corretto in uno scenario fuori ambito e un segnale di avvertimento in qualsiasi altro caso.
4. Revisioni, poi aggiunga. Lei legge le chat, le filtra per scenario o segnalazione, ne modifica o elimina alcune e le aggiunge a un dataset nuovo o esistente. Lì vengono contrassegnate come Sintetiche, in modo che possano sempre essere distinte dalle chat reali. Aggiungere di nuovo la stessa generazione aggiunge solo ciò che non è già presente.
- Briefing. Un assistente per i sinistri assicurativi per le polizze casa. Fuori ambito: consulenza legale e qualsiasi informazione su altre compagnie assicurative. Pubblico: contraenti, alcuni stressati, altri poco avvezzi alle app. 40 chat, turni misti, risposte fino a 400 token, due articoli del centro assistenza come documenti.
- Piano. Argomenti in Auto: 40 ÷ 8 = 5 scenari, da un semplice “segnalare un tubo rotto” a un fuori ambito “posso fare causa al mio vicino?”. Lei aggiunge un sesto scenario complesso — un sinistro presentato due volte per errore — e vi sposta 2 chat.
- Generazione. Il builder stima pochi minuti. Lei mette in pausa dopo le prime chat per leggerle, quindi riprende.
- Controlli. Arrivano 40 chat: 3 vengono ridotte ai turni richiesti, 1 chat interrotta viene riscritta, 2 vengono segnalate come possibili rifiuti (entrambe nello scenario fuori ambito, quindi corrette) e 1 come infondata.
- Revisione. Lei corregge la risposta infondata confrontandola con l'articolo, elimina una chat generica e aggiunge 39 chat al set di dati accanto a 120 chat reali.
Come utilizzarlo al meglio
- Li mescoli con dati reali quando ne ha a disposizione. Le chat sintetiche sono più pulite di quelle reali e un modello addestrato esclusivamente su di esse può essere disorientato da input disordinati. Nel brief, richieda utenti concisi, frustrati e che commettono errori di battitura.
- Revisioni un campione, specialmente gli scenari complessi e fuori ambito: è lì che il redattore sbaglia più spesso la risposta ideale.
- Utilizzi il modello più potente a Sua disposizione per scrivere. Lo studente può, al massimo, eguagliare il redattore.
- Basi il modello sui documenti ogni volta che le risposte dipendono dalle Sue informazioni, in modo che le risposte utilizzino le Sue policy anziché la conoscenza generale del modello.
- Conservi le chat reali per la valutazione. Testare un modello addestrato su chat sintetiche con ulteriori chat sintetiche sovrastima la sua reale efficacia.
Impostazioni
Quanti scenari contiene il piano. Auto ne sceglie circa uno ogni 8 chat, minimo 5 e massimo 60; in alternativa, imposti un numero esatto. Più argomenti offrono maggiore varietà e meno chat per argomento; meno argomenti approfondiscono maggiormente ogni situazione.
Quanti scambi utente/assistente ha ogni chat: da 1 a 4, oppure misti. Le chat a turno singolo sono veloci da scrivere e revisionare; le chat a più turni insegnano al modello a utilizzare ciò che è stato detto in precedenza. L'opzione mista è solitamente la più vicina all'uso reale.
La risposta più lunga dell'assistente, in token. Lo imposti alla lunghezza con cui desidera che il modello addestrato risponda: lo studente apprende la lunghezza così come il contenuto. Limiti più ampi rallentano la compilazione, sebbene in misura meno che proporzionale, poiché le risposte raramente raggiungono il limite.
Il messaggio più lungo dell'utente, in caratteri. Gli utenti reali sono spesso concisi; un limite basso mantiene le domande generate brevi e realistiche, anziché lunghe e prolisse.
Pagine di supporto, manuali o policy opzionali, affinché le risposte utilizzino le Sue informazioni. Senza documenti, il redattore si affida alla propria conoscenza generale, che potrebbe essere errata o obsoleta per il Suo prodotto.
Segnalazioni
Molto simile a un'altra chat nella build. Ne conservi una ed elimini o riscriva l'altra; le quasi-copie danno troppo peso a un singolo esempio e riducono la varietà.
Una risposta che supera il limite di token in output, o un messaggio utente che supera il limite di caratteri. Lo accorci, altrimenti il modello apprenderà a fornire risposte più lunghe di quelle richieste.
Un messaggio senza testo. Elimini la chat o scriva il messaggio mancante; una risposta vuota non insegna nulla e una domanda vuota insegna al modello a non rispondere nulla.
Una risposta che sembra un rifiuto (“Non posso aiutarla in questo”). Previsto negli scenari fuori ambito; altrove è un segnale di allarme, perché l'addestramento su di essa insegna al modello a rifiutare domande a cui dovrebbe rispondere.
Solo quando sono stati utilizzati dei documenti: una risposta che potrebbe non basarsi sui Suoi documenti, affidandosi alla conoscenza generale del modello anziché ai Suoi fatti. La verifichi con il documento e la corregga.
Errori comuni
- Tralasciare gli scenari fuori perimetro, in modo che il modello addestrato risponda a tutto, incluso ciò a cui non dovrebbe.
- Scrivere centinaia di chat senza leggere il piano, per poi scoprire che chiedono tutte la stessa cosa.
- Addestrare il modello solo su chat sintetiche quando ne esistono di reali; il modello viene poi disorientato da input reali e disordinati.
- Ignorare le segnalazioni sugli scenari complessi e limite, dove l'autore sbaglia più spesso.
- Valutare un modello addestrato su chat sintetiche con ulteriori chat sintetiche.
- Scrivere con un modello più debole rispetto a quello che si andrà ad addestrare; lo studente può, al massimo, eguagliare l'autore.
Riferimenti e letture di approfondimento
Le fonti esterne si aprono in una nuova scheda.
- 01Self-Instruct: Aligning Language Models with Self-Generated InstructionsWang et al., 2022 · arXiv · arxiv.orgUn modello che scrive le proprie istruzioni di addestramento, con il filtraggio di quelle non valide e quasi duplicate.
- 02Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.edu52.000 dimostrazioni generate per meno di 500 dollari, e i limiti del risultato.
- 03Enhancing Chat Language Models by Scaling High-quality Instructional ConversationsDing et al., 2023 · arXiv · arxiv.orgUltraChat: generazione di 1,5 milioni di conversazioni variegate a più turni.
- 04Textbooks Are All You NeedGunasekar et al., 2023 · arXiv · arxiv.orgphi-1: quanto i dati generati con cura possano fare per un modello di piccole dimensioni.
- 05The Curse of Recursion: Training on Generated Data Makes Models ForgetShumailov et al., 2023 · arXiv · arxiv.orgPerché i casi rari svaniscono quando i modelli imparano solo dall'output di altri modelli.