Sfida di classificazione del testo con dataset extra-piccoli affinamento versus ChatGPT

Sfida di classificazione del testo con dataset extra-piccoli e confronto con ChatGPT.

LLMs eccellono su dataset extra-piccoli, ma gli approcci classici brillano man mano che i dataset crescono

Foto di Debby Hudson su Unsplash

Il team di Toloka ML continua a fare ricerca e a confrontare diversi approcci per la classificazione del testo in varie condizioni. Qui presentiamo un altro dei nostri esperimenti sulle prestazioni dei modelli NLP quando vengono addestrati su dataset extra-piccoli.

In precedenza, abbiamo fornito una breve panoramica delle possibili soluzioni e abbiamo confrontato modelli classici con grandi modelli di linguaggio (LLMs) per un compito specifico di classificazione del testo. Tuttavia, questi confronti si basavano su un dataset “normale” che conteneva abbastanza dati per costruire un classificatore affidabile. In scenari reali, potresti trovarvi situazioni in cui i dati disponibili sono limitati o l’etichettatura umana non è stata effettuata.

Intuitivamente, LLM come GPT-3 o ChatGPT potrebbero superare i modelli più piccoli grazie alla loro “conoscenza” estesa. Per indagare su questa ipotesi, abbiamo creato un dataset artificialmente piccolo e abbiamo confrontato diversi approcci. Abbiamo messo a punto il modello di base RoBERTa, abbiamo utilizzato ChatGPT per la classificazione a pochi esempi e abbiamo messo a punto il modello GPT-3 Babbage.

Il dataset

Per valutare le capacità di comprensione dei vari modelli, abbiamo selezionato un dataset multiclasse composto da abstract di articoli scientifici. Il compito era determinare il dominio di ciascun articolo.

Abbiamo optato per il dataset WOS-11967 [1], che contiene 11.967 documenti con 35 categorie che includono sette categorie principali: medicina, psicologia, informatica, biochimica, ingegneria elettrica, scienze civili e ingegneria meccanica. Abbiamo campionato 10.000 punti dati e ci siamo concentrati solo sulle categorie principali per la nostra analisi.

Sebbene il dataset non fosse perfettamente bilanciato, la distribuzione delle classi era ragionevolmente proporzionale. Pertanto, potenzialmente si potevano ottenere risultati soddisfacenti in tutte le classi. La distribuzione delle classi è illustrata di seguito.

La distribuzione delle classi del campione del dataset WOS-11967

Durante l’analisi manuale, abbiamo scoperto che determinare il dominio di alcuni abstract era relativamente semplice, mentre in altri casi il compito diventava più difficile. Ad esempio, gli articoli di informatica possono discutere argomenti matematici, o gli articoli di psicologia potrebbero contenere termini e abbreviazioni mediche o biochimiche, rendendo difficile distinguerli dai domini della biochimica o della medicina. Gli abstract variavano anche notevolmente in lunghezza, con una media di 274 token (token di ChatGPT) e una deviazione standard di 115 token.

Per simulare scenari che coinvolgono dataset extra-piccoli, abbiamo eseguito una divisione tra set di addestramento e set di test sui corpora e abbiamo allocato un piccolo numero di campioni al set di addestramento. Abbiamo ripetuto questo processo tre volte con diverse dimensioni del set di addestramento per valutare eventuali cambiamenti nelle prestazioni dei modelli in base ai dati di addestramento disponibili. Abbiamo creato tre divisioni per il nostro esperimento: WOS-11967-s200 (200 campioni nel set di addestramento, 9.800 campioni nel set di test), WOS-11967-s500 (500 / 9.500) e WOS-11967-s2000 (2.000 / 8.000).

Ora, diamo un’occhiata ai risultati ottenuti utilizzando modelli diversi per affrontare questi problemi.

Affinamento classico con RoBERTa

Come punto di riferimento, abbiamo selezionato il modello di base RoBERTa [2] e lo abbiamo messo a punto sui tre dataset citati in precedenza. Abbiamo utilizzato la stessa configurazione di iperparametri per ogni esecuzione (dimensione del batch di 32, learning rate di 3e-5, scheduler lineare con warmup e finestra di 256 token), insieme all’arresto anticipato per evitare l’overfitting.

Abbiamo ottenuto i seguenti risultati:

I dati mostrano che 200 campioni sono insufficienti per estrarre tutti i pattern e le informazioni necessarie per classificare correttamente gli abstract. Il punteggio F1 macro-medio più basso indica anche che il modello ha prestazioni inferiori sulle classi poco rappresentate come l’ingegneria meccanica. Questo suggerisce che non è sufficiente avere solo pochi campioni di una determinata classe.

Come previsto, le prestazioni del modello sono migliorate all’aumentare della quantità di dati disponibili, risultando infine in una prestazione robusta per la classificazione multiclasse su sette classi.

Few-shot con ChatGPT

Il secondo approccio che abbiamo esplorato è stato la classificazione few-shot utilizzando ChatGPT. Questo metodo differisce significativamente dalla classificazione tradizionale poiché non prevede l’addestramento di un modello vero e proprio. Invece, abbiamo progettato l’input prompt per ottenere prestazioni ottimali.

Tuttavia, era impossibile alimentare tutti i 200 campioni nel modello a causa del limite di dimensione del contesto di 4096 token. Dai calcoli effettuati, abbiamo potuto presentare circa 14 abstract al modello. Questo numero è stato ulteriormente ridotto considerando i token utilizzati per le istruzioni e i delimitatori.

Inizialmente, abbiamo utilizzato il ruolo “system” per le istruzioni e abbiamo fornito un singolo esempio per classe per guidare la risposta del modello. Abbiamo semplificato i nomi delle classi a singoli token pur mantenendone il significato. Ciò ha reso più facile per il modello selezionare la categoria appropriata e limitare l’output a un singolo token. Ad esempio, “Biochemistry” è diventato “Bio” e “Computer Science” è diventato “Computer”. Inoltre, abbiamo limitato il numero di token generati fornendo un elenco di classi tra cui scegliere e istruendo il modello a restituire il token “Sconosciuto” se non era sicuro della categoria.

Nel complesso, le prestazioni con questo metodo sono state inferiori rispetto al modello RoBERTa addestrato su soli 200 campioni. Abbiamo notato che l’abilità di classificazione del modello dipendeva fortemente dal prompt fornito. La modifica di una singola frase poteva migliorare o peggiorare le metriche. In alcuni casi, ChatGPT ha mancato di individuare alcune categorie nonostante istruzioni esplicite a tal proposito (cosa che potrebbe essere un difetto nella formulazione del nostro prompt).

In alcuni casi marginali, ha prodotto categorie non elencate nelle istruzioni, ma ha descritto i domini degli articoli, come “Math” o “Chemistry”. Non è chiaro se queste lacune debbano essere attribuite al modello o al dataset. Tuttavia, secondo il set di validazione, queste categorie possono essere corrette utilizzando semplici regole come cambiare tutte le istanze di “Math” in “Computer”.

Per migliorare le metriche, abbiamo cercato di utilizzare il maggior numero possibile di dati. Poiché non siamo riusciti ad alimentare tutti i 200 campioni nel modello, abbiamo ideato un processo in due fasi:

  • Prima di tutto, abbiamo chiesto al modello di individuare le somiglianze tra gli abstract di un determinato dominio e generare dei riassunti.
  • In secondo luogo, abbiamo incorporato questi riassunti nelle istruzioni per fornire al modello informazioni sulle classi e le caratteristiche identificate dal modello stesso nella prima fase.

Questo approccio ci ha permesso di alimentare più campioni di dati di addestramento nel modello; e ha funzionato, abbiamo aumentato le metriche di circa il 10%. Di seguito è riportato il prompt che abbiamo utilizzato per generare questi riassunti:

Il prompt per ChatGPT utilizzato per estrarre informazioni significative sui domini degli articoli

Per ogni dominio, abbiamo fornito sette otto abstract, per un totale di 63 abstract distinti utilizzati per preparare il prompt di classificazione (otto abstract per sette classi per costruire i riassunti e sette abstract forniti come esempi nel prompt effettivo).

Tuttavia, abbiamo istruito il modello a rispondere con “Sconosciuto” se era incerto sulla classe. Nel set di validazione abbiamo osservato che la maggior parte delle risposte “Sconosciuto” corrispondeva a articoli di informatica. Abbiamo quindi sostituito tutte le istanze “Sconosciuto” con la classe “Computer”.

Il prompt di classificazione risultante era il seguente:

Il prompt finale per ChatGPT utilizzato per classificare gli abstract degli articoli

Anche in questo caso, le prestazioni sono state fortemente influenzate dal prompt e dai campioni forniti. Il modello ha anche generato diverse categorie al di fuori dell’elenco target, richiedendo regolazioni manuali basate sul set di validazione. Questo approccio ha prodotto i seguenti risultati:

Le prestazioni sono state notevolmente migliori rispetto all’affinamento di un modello RoBERTa su 200 campioni – e sono stati necessari meno campioni. Tuttavia, all’aumentare della disponibilità di dati etichettati, RoBERTa ha iniziato a superare questo approccio, anche con soli 500 campioni.

Crediamo che ulteriori miglioramenti delle prestazioni siano possibili attraverso una corretta progettazione delle istruzioni. Alcuni utili suggerimenti e trucchi possono essere trovati nella Guida alle Istruzioni.

Perfezionamento di un modello GPT-3

Per il nostro approccio finale, abbiamo perfezionato il modello GPT-3 Babbage su questi tre set di dati. Abbiamo seguito le raccomandazioni per la preparazione dei dati descritte nella guida di OpenAI e abbiamo optato per gli iperparametri predefiniti senza apportare alcuna modifica specifica. Il processo di addestramento per ciascun set di dati ha richiesto circa 20 minuti, producendo i seguenti risultati:

Il modello GPT-3 perfezionato ha fornito risultati impressionanti anche sul più piccolo set di dati, superando sia RoBERTa che ChatGPT. Man mano che aumentava la quantità di dati di addestramento, il divario di prestazioni tra RoBERTa e il modello GPT-3 perfezionato si è ridotto. Ciò ha sollevato interrogativi sulle risorse e sulla fattibilità dell’utilizzo di entrambe le opzioni. Abbiamo discusso i pro e i contro di entrambi gli approcci nei nostri articoli precedenti.

Conclusioni

Questo esperimento dimostra che la nostra ipotesi iniziale era corretta: i modelli più grandi addestrati su dati più estesi hanno prestazioni significativamente migliori su set di dati extra-piccoli. Con una corretta progettazione delle istruzioni e tecniche di few-shot, è possibile ottenere risultati favorevoli.

Tuttavia, le differenze nelle prestazioni diminuiscono all’aumentare delle dimensioni del set di dati. Inoltre, un modello classico opportunamente adattato, come un modello RoBERTa adattato al dominio, a volte può superare i modelli di lingua generici nelle attività di classificazione. Ciò può essere attribuito alla “conoscenza” specializzata del modello della materia oggetto. Inoltre, con le giuste ottimizzazioni, l’inferenza utilizzando questi modelli può essere significativamente più veloce, il che è cruciale nello sviluppo di servizi online.

Tutte le immagini, salvo diversa indicazione, sono dell’autore.

Fonti

  1. Kowsari K, Brown DE, Heidarysafa M, Jafari Meimandi K, Gerber MS, Barnes LE. HDLTex: Hierarchical Deep Learning for Text Classification. In: Machine Learning and Applications (ICMLA), 2017 16th IEEE International Conference On . IEEE; 2017.
  2. Liu Y, Ott M, Goyal N, et al. RoBERTa: A Robustly Optimized BERT Pretraining Approach. CoRR . 2019;abs/1907.11692. http://arxiv.org/abs/1907.11692