Cosa sono i dati sintetici
Per addestrare un modello servono esempi, dati, token. Tanti. Se si vuole creare un assistente che risponde ai clienti ci vogliono migliaia di conversazioni, un sistema che legge contratti vuole migliaia di contratti. Non sempre questi dati da dare in pasto al modello esistono. Quando mancano, sono costosi o sono pieni di informazioni riservate, si ricorre ai dati sintetici.

Cosa sono i dati sintetici? Testi, conversazioni o codice generati da un LLM e costruiti per somigliare a quelli reali.
CI sono pro e contro nell’utilizzare i dati sintetici. Tra i pro: costi contenuti, ampia copertura, varietà che si può controllare. Tra i contro: contenuti sbagliati, esempi che non somigliano abbastanza a quelli veri per stile e varietà, bias che si amplificano. Usare dati sintetici di bassa qualità porterà a creare un modello finale che “sbaglierà” il proprio compito più spesso del previsto. Quindi come mantenere alta la qualità dei dati sintetici?
Generare quantità è facile, qualità è più difficile
Chiedere a un modello di scrivere diecimila esempi richiede qualche minuto. Quello che esce è un mucchio enorme dove convivono esempi ottimi, mediocri e completamente sballati. Ma come facciamo a verificare le ripsoste? Farlo manualmente sarebbe troppo lungo e costoso.
Un paper del 2024 divide il lavoro in tre tempi: generazione, selezione e valutazione.
Link al paper: On LLMs-Driven Synthetic Data Generation, Curation, and Evaluation: A Survey
Generazione dei dati sintentici
Il metodo più ovvio è chiedere “Scrivimi cento conversazioni tra un cliente e l’assistenza.”, il modello restituisce 100 esempi ma hanno un difetto, il prompt di partenza è sempre lo stesso i risultati saranno molto simili, il modello si ripeterà.
Vediamo di seguito una tecnica per risolvere il problema:
Il prompt va generato con:
- La descrizione del compito: il contesto in cui il modello deve muoversi. Funziona anche dargli un ruolo, e alcuni lavori usano knowledge graph per ricavare i temi di un dominio.
- Le condizioni: coppie attributo-valore che obbligano il modello a variare, ad esempio tema, lunghezza e stile.
- Gli esempi: si mostrano al modello alcuni casi e lui ne produce di simili (in-context learning).
Ecco un esempio:
1. Descrizione del compito (resta uguale)
Sei un operatore del servizio clienti di un’azienda che vende elettrodomestici. Devi scrivere una conversazione realistica tra un cliente e l’assistenza, in italiano, nel formato “Cliente: … / Operatore: …”. L’operatore risolve il problema oppure lo passa a un collega, senza inventare informazioni che non ha.
2. Condizioni (cambiano a ogni richiesta)
Tema: ritardo nella consegna
Tono del cliente: irritato ma educato
Lunghezza: 6 battute
Esito: il problema non viene risolto subito
3. Esempi (cambiano a ogni richiesta)
Esempio di conversazione già approvata:
Cliente: Buongiorno, il lavaggio che ho ordinato dieci giorni fa non è ancora arrivato.
Operatore: Mi dispiace per l’attesa. Mi dà il numero d’ordine, così controllo subito lo stato della spedizione?
(…e così via per tutta la conversazione)
Condizioni ed esempi euotano e cambiano in questo modo il prompt sarà sempre diverso.
Filtrare i dati sintentici
Come visto dare per scontato che i dati sintetici siano corretti è un grosso errore. I dati vanno quindi filtrati. Come? Vediamo alcuni esempi:
1. Le regole: via gli esempi troppo corti, i doppioni (deduplicazione). Questi sono sistemi puramente algoritmici.
2. Sistemi più avanzati che prevedono classificatori o LLM: Probabilità di generazione (SuperGen), Voto di un LLM, LLM vs classificatore etc..
Valutazione
Lo step finale è la valutazione, per verificare se l’intero processo ha creato dei dati di qualità.
Ci sono 2 metodi:
1. Controllo manuale: si prende un campione casuale ad es. 200 testi sentitici e si controlla manualmente quanti di questi sono corretti, quanti sono errati, quanto sono simili tra loro etc..
2. Controllo automatico: si fa fare lo stesso controllo manuale ad un llm terzo
Se i risultati sono soddisfacienti e le percentuali di errore sono molte basse possiamo ritenere il lavoro concluso, se sono troppo alte va rivisto lo step di generazione o di selezione e filtraggio.