Addestra un modello di incorporamento delle frasi con 1 miliardo di coppie di addestramento

Addestra un modello di incorporamento delle frasi con 1 mld di coppie di addestramento.

L’incorporamento delle frasi è un metodo che mappa le frasi in vettori di numeri reali. Idealmente, questi vettori catturerebbero il significato semantico di una frase e sarebbero altamente generici. Tali rappresentazioni potrebbero quindi essere utilizzate per molte applicazioni derivate come il clustering, il text mining o la risposta alle domande.

Sviluppammo modelli di incorporamento delle frasi all’avanguardia come parte del progetto “Allenare il miglior modello di incorporamento delle frasi mai realizzato con 1 miliardo di coppie di addestramento”. Questo progetto si è svolto durante la settimana della comunità utilizzando JAX/Flax per NLP & CV, organizzata da Hugging Face. Abbiamo beneficiato di un’efficiente infrastruttura hardware per eseguire il progetto: 7 TPU v3-8, nonché orientamenti dai membri del team di Google su Flax, JAX e Cloud riguardo ai framework di deep learning efficienti!

Metodologia di addestramento

Modello

A differenza delle parole, non possiamo definire un insieme finito di frasi. I metodi di incorporamento delle frasi, quindi, compongono le parole interne per calcolare la rappresentazione finale. Ad esempio, il modello SentenceBert (Reimers e Gurevych, 2019) utilizza il Transformer, la pietra angolare di molte applicazioni NLP, seguito da un’operazione di pooling sui vettori delle parole contestualizzate. (c.f. Figura sotto.)

Loss di classificazione negativa multipla

I parametri del modulo di composizione sono generalmente appresi utilizzando un obiettivo di auto-supervisione. Per il progetto, abbiamo utilizzato un metodo di addestramento contrastivo illustrato nella figura sotto. Costituiamo un dataset con coppie di frasi ( a i , p i ) (a_i, p_i) ( a i ​ , p i ​ ) tali che le frasi della coppia abbiano un significato simile. Ad esempio, consideriamo coppie come (query, risposta-passo), (domanda, domanda-duplicata), (titolo di un articolo, titolo dell’articolo citato). Il nostro modello viene quindi addestrato a mappare coppie ( a i , p i ) (a_i , p_i) ( a i ​ , p i ​ ) in vettori simili assegnando allo stesso tempo a coppie non corrispondenti ( a i , p j ) , i ≠ j (a_i , p_j), i \neq j ( a i ​ , p j ​ ) , i  = j vettori lontani nello spazio di incorporamento. Questo metodo di addestramento è anche chiamato addestramento con negativi all’interno del batch, InfoNCE o NTXentLoss.

Formalmente, dato un batch di campioni di addestramento, il modello ottimizza la seguente funzione di loss:

− 1 n ∑ i = 1 n e x p ( s i m ( a i , p i ) ) ∑ j e x p ( s i m ( a i , p j ) ) -\frac{1}{n}\sum_{i=1}^n\frac{exp(sim(a_i, p_i))}{\sum_j exp(sim(a_i, p_j))} − n 1 ​ i = 1 ∑ n ​ ∑ j ​ e x p ( s i m ( a i ​ , p j ​ ) ) e x p ( s i m ( a i ​ , p i ​ ) ) ​

Un esempio illustrativo può essere visto di seguito. Il modello incorpora prima ogni frase di ogni coppia nel batch. Quindi, calcoliamo una matrice di similarità tra ogni possibile coppia ( a i , p j ) (a_i, p_j) ( a i ​ , p j ​ ) . Confrontiamo quindi la matrice di similarità con la verità fondamentale, che indica le coppie originali. Infine, eseguiamo il confronto utilizzando la loss di entropia incrociata.

In modo intuitivo, il modello dovrebbe assegnare una alta similarità alle frasi “Quante persone vivono a Berlino?” e “Circa 3,5 milioni di persone vivono a Berlino” e una bassa similarità ad altre risposte negative come “La capitale della Francia è Parigi” come dettagliato nella figura sotto.

Nell’equazione della loss, sim indica una funzione di similarità tra ( a , p ) (a, p) ( a , p ) . La funzione di similarità può essere sia la similarità coseno o l’operatore prodotto-scalare. Entrambi i metodi hanno i loro vantaggi e svantaggi riassunti di seguito (Thakur et al., 2021, Bachrach et al., 2014):

Nella pratica, abbiamo utilizzato una similarità scalata perché le differenze di punteggio tendono ad essere troppo piccole e applichiamo un fattore di scala C C C tale che s i m s c a l e d ( a , b ) = C ∗ s i m ( a , b ) sim_{scaled}(a, b) = C * sim(a, b) s i m s c a l e d ​ ( a , b ) = C ∗ s i m ( a , b ) con tipicamente C = 20 C = 20 C = 2 0 (Henderson e al., 2020, Radford e al., 2021).

Migliorare la qualità con batch migliori

Nel nostro metodo, creiamo batch di coppie di campioni ( a i , p i ) (a_i , p_i) ( a i ​ , p i ​ ) . Consideriamo tutti gli altri campioni del batch, ( a i , p j ) , i ≠ j (a_i , p_j), i \neq j ( a i ​ , p j ​ ) , i  = j , come coppie di campioni negativi. La composizione del batch è quindi un aspetto chiave dell’addestramento. Dato il materiale bibliografico nel dominio, ci siamo concentrati principalmente su tre aspetti principali del batch.

1. La dimensione conta

Nell’apprendimento contrastivo, una dimensione del batch più grande è sinonimo di migliori prestazioni. Come mostrato nella Figura tratta da Qu e al., ( 2021 ), una dimensione del batch più grande aumenta i risultati.

2. Negativi difficili

Nella stessa figura, osserviamo che l’inclusione di negativi difficili migliora anche le prestazioni. I negativi difficili sono campioni p j p_j p j ​ che sono difficili da distinguere da p i p_i p i ​ . Nel nostro esempio, potrebbero essere le coppie « Qual è la capitale della Francia? » e « Qual è la capitale degli Stati Uniti? » che hanno un contenuto semantico simile e richiedono una comprensione precisa della frase completa per essere risposte correttamente. Al contrario, i campioni « Qual è la capitale della Francia? » e « Quanti film di Star Wars ci sono? » sono meno difficili da distinguere poiché non si riferiscono allo stesso argomento.

3. Batch di dataset incrociati

Abbiamo concatenato più dataset per addestrare i nostri modelli. Abbiamo creato un grande batch e raccolto campioni dallo stesso dataset del batch per limitare la distribuzione degli argomenti e favorire i negativi difficili. Tuttavia, mescoliamo almeno due dataset nel batch per apprendere una struttura globale tra gli argomenti e non solo una struttura locale all’interno di un argomento.

Infrastruttura e dati di addestramento

Come accennato in precedenza, la quantità di dati e la dimensione del batch influiscono direttamente sulle prestazioni del modello. Come parte del progetto, abbiamo beneficiato di un’efficiente infrastruttura hardware. Abbiamo addestrato i nostri modelli su TPUs, che sono unità di calcolo sviluppate da Google e super efficienti per le moltiplicazioni tra matrici. Le TPUs hanno alcune specificità hardware che potrebbero richiedere una specifica implementazione del codice.

Inoltre, abbiamo addestrato i modelli su un ampio corpus concatenando più dataset fino a 1 miliardo di coppie di frasi! Tutti i dataset utilizzati sono dettagliati per ciascun modello nella scheda del modello.

Conclusioni

Puoi trovare tutti i modelli e i dataset che abbiamo creato durante la sfida nel nostro repository HuggingFace . Abbiamo addestrato 20 modelli Sentence Transformers ad uso generale come Mini-LM ( Wang e al., 2020 ), RoBERTa ( liu e al., 2019 ), DistilBERT ( Sanh e al., 2020 ) e MPNet ( Song e al., 2020 ). I nostri modelli raggiungono SOTA su molteplici task di valutazione di similarità tra frasi ad uso generale. Abbiamo anche condiviso 8 dataset specializzati per la risposta alle domande, la similarità tra frasi e la valutazione di genere.

Le rappresentazioni generali delle frasi possono essere utilizzate per molte applicazioni. Abbiamo creato una demo Spaces per mostrare diverse applicazioni:

  • Il modulo di similarità tra frasi confronta la similarità del testo principale con altri testi a tua scelta. In background, la demo estrae l’embedding per ogni testo e calcola la similarità tra la frase di origine e le altre utilizzando la similarità coseno.
  • Asymmetric QA confronta la probabilità di risposta di una determinata query con candidati di risposta a tua scelta.
  • Ricerca / Clustering restituisce risposte vicine a una query. Ad esempio, se inserisci « python », recupererà le frasi più simili utilizzando la distanza prodotto-scalare.
  • Valutazione del bias di genere segnala il bias di genere intrinseco nel set di addestramento tramite campionamento casuale delle frasi. Data un’ancora di testo senza menzionare il genere per una professione di destinazione e 2 proposizioni con pronomi di genere, confrontiamo se i modelli assegnano una similarità maggiore a una determinata proposizione e quindi valutiamo la loro propensione a favorire un genere specifico.

La settimana della comunità utilizzando JAX/Flax per NLP e CV è stata un’esperienza intensa e altamente gratificante! La qualità di Flax, JAX e delle guide di Google e del team di Hugging Face e la loro presenza ci hanno aiutato tutti a imparare molto. Speriamo che tutti i progetti si siano divertiti tanto quanto noi nel nostro. Se hai domande o suggerimenti, non esitare a contattarci!