Come devo utilizzare gli incorporamenti BERT per il clustering (in contrasto con il perfezionamento del modello BERT per un'attività supervisionata)

Aug 21 2020

Prima di tutto, voglio dire che sto facendo questa domanda perché sono interessato a utilizzare gli incorporamenti BERT come funzionalità del documento per fare il clustering. Sto usando Transformers dalla libreria Hugging Face. Stavo pensando di fare la media di tutti gli incorporamenti di Word Piece per ogni documento in modo che ogni documento abbia un vettore unico. Quindi userei quei vettori per il raggruppamento. Sentiti libero di commentare se pensi che questa non sia una buona idea, o se mi manca qualcosa o non capisco qualcosa.

Il problema che vedo con questo è che stai usando solo i primi N token specificati da max_lengthnella libreria Hugging Face. E se i primi N token non fossero la migliore rappresentazione di quel documento? Non sarebbe meglio scegliere a caso N gettoni, o meglio ancora scegliere a caso N gettoni 10 volte?

Inoltre, mi rendo conto che l'utilizzo del tokenizer di WordPiece è un sostituto della lemmatizzazione, quindi la pre-elaborazione NLP standard dovrebbe essere più semplice. Tuttavia, poiché stiamo già utilizzando solo i primi N gettoni e se non ci stiamo liberando delle parole di arresto, le parole di arresto inutili saranno nei primi N gettoni. Per quanto ho visto, negli esempi per Hugging Face, nessuno fa davvero più preelaborazione prima della tokenizzazione.

[Vedi l'esempio sotto dei tokenizzati (da Hugging Face), i primi 64 token di un documento]

Pertanto, sto facendo alcune domande qui (sentiti libero di rispondere solo a una o fornire riferimenti a documenti o risorse che posso leggere):

  1. Perché vengono scelti i primi N gettoni invece che a caso? 1a) c'è qualcosa là fuori che sceglie casualmente N gettoni forse più volte?
  2. Simile alla domanda 1, esiste un modo migliore per scegliere i gettoni? Forse usare TF-IDF sui token per escludere almeno alcuni token inutili?
  3. Le persone generalmente usano più preelaborazione prima di utilizzare il tokenizer Word Piece?
  4. In che misura la scelta di max_lengthinfluenzare le prestazioni?
  5. Perché c'è un limite di 512 lunghezza massima nella libreria Hugging Face? Perché non utilizzare solo la lunghezza del documento più lungo?
  6. È una buona idea fare la media degli incorporamenti di WordPiece per ottenere una matrice (se si desidera eseguire il clustering)?
  7. È una buona idea utilizzare gli incorporamenti BERT per ottenere funzionalità per i documenti che possono essere raggruppati per trovare gruppi simili di documenti? O c'è qualche altro modo migliore?

originale: 'Trump tries to smooth things over with GOP insiders. Hollywood, Florida (CNN) Donald Trump\'s new delegate guru told Republican Party insiders at a posh resort here on Thursday that the billionaire front-runner is recalibrating the part "that he\'s been playing" and is ready

tokenizzato:

['[CLS]',
 'trump',
 'tries',
 'to',
 'smooth',
 'things',
 'over',
 'with',
 'go',
 '##p',
 'insider',
 '##s',
 '.',
 'hollywood',
 ',',
 'florida',
 '(',
 'cnn',
 ')',
 'donald',
 'trump',
 "'",
 's',
 'new',
 'delegate',
 'guru',
 'told',
 'republican',
 'party',
 'insider',
 '##s',
 'at',
 'a',
 'po',
 '##sh',
 'resort',
 'here',
 'on',
 'thursday',
 'that',
 'the',
 'billionaire',
 'front',
 '-',
 'runner',
 'is',
 'rec',
 '##ali',
 '##bra',
 '##ting',
 'the',
 'part',
 '"',
 'that',
 'he',
 "'",
 's',
 'been',
 'playing',
 '"',
 'and',
 'is',
 'ready',
 '[SEP]']

Risposte

3 AshwinGeetD'Sa Aug 21 2020 at 16:10

Ecco le risposte:

  1. Nella modellazione della sequenza, ci aspettiamo che una frase sia una sequenza ordinata, quindi non possiamo prendere parole casuali (a differenza del sacco di parole, dove siamo solo preoccupati delle parole e non veramente dell'ordine). Ad esempio: In un sacco di parole: "ho mangiato il gelato" e "ho mangiato il gelato" sono uguali, mentre questo non è vero per i modelli che trattano l'intera frase come sequenza ordinata. Pertanto, non puoi scegliere N parole casuali in un ordine casuale.
  2. La scelta dei gettoni dipende dal modello. È sempre possibile preelaborare per rimuovere le parole di interruzione e altri contenuti come simboli, numeri, ecc. Se agisce come un disturbo rispetto alle informazioni.
  3. Vorrei chiarire che la lemmatizzazione e la tokenizzazione di pezzi di parole non sono la stessa cosa. Ad esempio, nella lemmatizzazione "suonare" e "suonato" vengono lemmatizzati in "suonare". Ma in caso di tokenizzazione di parole è probabile che si divida in "play" + "## ing" o "play" + "ed", a seconda del vocabolario. Quindi, ci sono più informazioni conservate.
  4. max_lengthdovrebbe essere scelto in modo ottimale in modo che la maggior parte di voi frasi sia pienamente considerata. (cioè, la maggior parte delle frasi dovrebbe essere più breve rispetto max_lengthalla tokenizzazione). Ci sono alcuni modelli che considerano la lunghezza completa della sequenza. Esempio: Universal Sentence Encoder (USE), Transformer-XL, ecc. Tuttavia, tieni presente che puoi anche utilizzare batch di dimensioni maggiori con dimensioni inferiori max_length, il che rende l'addestramento / messa a punto più veloce e talvolta produce risultati migliori.
  5. Il modello pre-addestrato è addestrato con MAX_LEN512. È una limitazione del modello.
  6. Nello specifico del BERT, come sostiene il paper, per la classificazione degli incorporamenti di [CLS]token è sufficiente. Poiché, il suo modello basato sull'attenzione, il [CLS]token catturerebbe la composizione dell'intera frase, quindi sufficiente. Tuttavia, puoi anche calcolare la media degli incorporamenti di tutti i token. Ho provato entrambi, nella maggior parte dei miei lavori, la media di tutti i token word-piece ha prodotto prestazioni più elevate. Inoltre, alcuni lavori ti suggeriscono persino di prendere la media degli incorporamenti dagli ultimi 4 livelli. È solo una scelta di design.
  7. L'utilizzo di incorporamenti di frasi va generalmente bene. Ma è necessario verificare con la letteratura. Può sempre esserci una tecnica migliore. Inoltre, ci sono modelli specifici per l'incorporamento di frasi (USE è uno di questi modelli), puoi verificarli.
1 XsLiar Aug 25 2020 at 21:47

Poiché molte delle tue domande hanno già ricevuto risposta, posso condividere la mia esperienza personale solo con la tua ultima domanda:

7) È una buona idea utilizzare gli incorporamenti BERT per ottenere funzionalità per i documenti che possono essere raggruppati per trovare gruppi di documenti simili? O c'è qualche altro modo migliore?

Penso che una buona idea sarebbe quella di iniziare con approcci più semplici. Soprattutto quando si tratta di documenti lunghi che si basano su vettorizzatori che tf-idfpossono portare a risultati migliori pur avendo i vantaggi di una minore complessità e di solito una maggiore interpretabilità.

Ho appena terminato un esercizio di gruppo per documenti più lunghi e ho seguito un processo di pensiero e sperimentazioni simili. Alla fine, ho ottenuto i migliori risultati con le tf-idffunzionalità. La pipeline che ho usato consisteva in:

  1. Dati di processo (rimozione di parole non significative, lemmatizzazione, ecc.)
  2. Fit tf-idf vectorizer (in alternativa puoi provare anche doc2vec).
  3. Esegui una sorta di algoritmo di riduzione delle dimensioni (PCA nel mio caso).
  4. (K-means) clustering: valuta il numero ottimale di cluster.

Se sei ansioso di utilizzare BERT con documenti lunghi nella tua attività a valle, puoi esaminare questi due approcci principali:

Metodi di troncamento

  • solo testa (primi 512 gettoni)
  • solo coda (ultimi 512 gettoni
  • testa + coda

A seconda del dominio, ad esempio se ogni documento si conclude con un riepilogo esecutivo, solo la coda può migliorare i risultati.

Metodi gerarchici

  • significa pooling
  • pooling massimo

Come affermato qui, i metodi di troncamento si applicano all'input del modello BERT (i token), mentre i metodi gerarchici si applicano alle uscite del modello Bert (l'embbeding).