Confronto delle tecniche di elaborazione del linguaggio naturale RNN, Transformer, BERT

Confronto delle tecniche di elaborazione del linguaggio naturale RNN, Transformer, BERT

Elaborazione del linguaggio naturale, o NLP, è un campo all’interno dell’intelligenza artificiale che permette alle macchine di comprendere i dati testuali. La ricerca nel campo del NLP esiste da molto tempo, ma solo recentemente è diventata più prominente con l’introduzione dei big data e di una maggiore potenza di elaborazione computazionale.

Con l’incremento del campo del NLP, molti ricercatori cercano di migliorare la capacità delle macchine di comprendere meglio i dati testuali. Attraverso numerosi progressi, molte tecniche sono state proposte e applicate nel campo del NLP.

Questo articolo metterà a confronto varie tecniche per l’elaborazione dei dati testuali nel campo del NLP. L’articolo si concentrerà sul discutere RNN, Transformers e BERT perché sono quelli più comunemente utilizzati nella ricerca. Andiamo avanti.

Rete neurale ricorrente

Rete neurale ricorrente o RNN è stata sviluppata nel 1980, ma solo di recente ha suscitato interesse nel campo del NLP. RNN è un tipo particolare all’interno della famiglia delle reti neurali utilizzato per dati sequenziali o dati che non possono essere indipendenti gli uni dagli altri. Esempi di dati sequenziali sono serie temporali, audio o dati di frasi testuali, fondamentalmente qualsiasi tipo di dato con un ordine significativo.

Le RNN sono diverse dalle normali reti neurali feed-forward poiché elaborano le informazioni in modo diverso. Nel feed-forward normale, le informazioni vengono elaborate seguendo i livelli. Tuttavia, la RNN utilizza un ciclo di loop sull’input delle informazioni da considerare. Per capirne le differenze, vediamo l’immagine qui sotto.

Come puoi vedere, il modello RNN implementa un ciclo di loop durante l’elaborazione delle informazioni. Le RNN prenderebbero in considerazione l’input corrente e precedente durante l’elaborazione di queste informazioni. Ecco perché il modello è adatto a qualsiasi tipo di dato sequenziale.

Se prendiamo un esempio nel campo dei dati testuali, immaginiamo di avere la frase “Mi sveglio alle 7 del mattino” e abbiamo la parola come input. Nella normale rete neurale feed-forward, quando raggiungiamo la parola “sveglio”, il modello avrebbe già dimenticato le parole “mi”, “sveglio” e “alle”. Tuttavia, le RNN utilizzerebbero ogni output per ogni parola e li ciclerebbero indietro in modo che il modello non dimentichi.

Nel campo del NLP, le RNN vengono spesso utilizzate in molte applicazioni testuali, come la classificazione e generazione di testi. Sono spesso utilizzate in applicazioni a livello di parola come l’etichettatura delle parti del discorso, la generazione della parola successiva, ecc.

Analizzando le RNN in modo più approfondito sui dati testuali, ci sono molti tipi di RNN. Ad esempio, l’immagine sottostante rappresenta il tipo many-to-many.

Guardando l’immagine sopra, possiamo vedere che l’output per ogni passo (time-step in RNN) viene elaborato uno alla volta e ogni iterazione considera sempre le informazioni precedenti.

Un altro tipo di RNN utilizzato in molte applicazioni NLP è il tipo encoder-decoder (Sequence-to-Sequence). La struttura è mostrata nell’immagine qui sotto.

Questa struttura introduce due parti utilizzate nel modello. La prima parte si chiama Encoder, che è una parte che riceve una sequenza di dati e crea una nuova rappresentazione basata su di essa. La rappresentazione verrà utilizzata nella seconda parte del modello, ovvero il decoder. Con questa struttura, la lunghezza di input e output non deve necessariamente essere uguale. Un caso d’uso esempio è la traduzione linguistica, che spesso non ha la stessa lunghezza tra input e output.

Ci sono vari vantaggi nell’utilizzare le RNN per elaborare dati di linguaggio naturale, tra cui:

  1. Le RNN possono elaborare input testuali senza limitazioni di lunghezza.
  2. Il modello condivide gli stessi pesi su tutti i passi temporali, consentendo alla rete neurale di utilizzare lo stesso parametro in ogni passo.
  3. Avere la memoria dell’input passato rende le RNN adatte a qualsiasi dato sequenziale.

Ma ci sono anche diversi svantaggi:

  1. Le RNN sono suscettibili sia ai gradienti che svaniscono sia ai gradienti che esplodono. Questo accade quando il risultato del gradiente è un valore prossimo allo zero (svanire), causando un aggiornamento dei pesi della rete solo per una piccola quantità, o il risultato del gradiente è così significativo (esplodere) da assegnare un’enorme importanza irrealistica alla rete.
  2. Tempo di addestramento lungo a causa della natura sequenziale del modello.
  3. La memoria a breve termine significa che il modello inizia a dimenticare più a lungo viene addestrato. Vi è un’evoluzione delle RNN chiamata LSTM che allevia questo problema.

Transformers

Transformers è un’architettura di modelli NLP che cerca di risolvere i task sequenza-su-sequenza precedentemente incontrati nelle RNN. Come accennato in precedenza, le RNN hanno problemi con la memoria a breve termine. Più lungo è l’input, più evidente era il modello nel dimenticare le informazioni. Qui entra in gioco il meccanismo di attenzione per risolvere il problema.

Il meccanismo di attenzione è stato introdotto nel paper di Bahdanau et al. (2014) per risolvere il problema dell’input lungo, specialmente con le RNN di tipo encoder-decoder. Non spiegherò in dettaglio il meccanismo di attenzione. Fondamentalmente, è uno strato che consente al modello di concentrarsi sulla parte critica dell’input del modello durante la previsione dell’output. Ad esempio, l’input della parola “Orologio” sarebbe correlato in modo elevato con “Marmellata” in indonesiano se il compito fosse la traduzione.

Il modello dei transformers è stato introdotto da Vaswani et al. (2017). L’architettura è ispirata alle RNN encoder-decoder e costruita con il meccanismo di attenzione in mente e non elabora i dati in ordine sequenziale. L’architettura generale del modello dei transformers è strutturata come l’immagine qui sotto.

Nella struttura sopra, i transformers codificano la sequenza di vettori dati in word embedding con codifica posizionale e utilizzano la decodifica per trasformare i dati nella forma originale. Con il meccanismo di attenzione in atto, l’encoding può essere assegnato importanza in base all’input.

I transformers offrono alcuni vantaggi rispetto ad altri modelli, tra cui:

  1. Il processo di parallelizzazione aumenta la velocità di addestramento e inferenza.
  2. In grado di elaborare input più lunghi, offrendo una migliore comprensione del contesto.

Ci sono ancora alcuni svantaggi del modello dei transformers:

  1. Alta elaborazione computazionale e richiesta.
  2. Il meccanismo di attenzione potrebbe richiedere la suddivisione del testo a causa del limite di lunghezza che può gestire.
  3. Il contesto potrebbe andare perso se la suddivisione viene effettuata in modo errato.

BERT

BERT, ovvero Bidirectional Encoder Representations from Transformers, è un modello sviluppato da Devlin et al. (2019) che coinvolge due fasi (pre-training e fine-tuning) per creare il modello. Se confrontiamo, BERT è uno stack di encoder transformers (BERT Base ha 12 livelli mentre BERT Large ha 24 livelli).

L’intero sviluppo del modello BERT può essere mostrato nell’immagine qui sotto.

Le attività di pre-training iniziano l’addestramento del modello contemporaneamente e, una volta terminato, il modello può essere fine-tuned per vari task successivi (domanda-risposta, classificazione, ecc.).

Ciò che rende BERT speciale è che è il primo modello di linguaggio bidirezionale non supervisionato pre-addestrato su dati testuali. BERT è stato pre-addestrato precedentemente su tutta l’enciclopedia Wikipedia e su un corpus di libri, costituiti da oltre 3000 milioni di parole.

BERT è considerato bidirezionale perché non legge l’input dati in modo sequenziale (da sinistra a destra o viceversa), ma l’encoder transformer legge l’intera sequenza contemporaneamente.

A differenza dei modelli direzionali, che leggono l’input testuale in modo sequenziale (da sinistra a destra o da destra a sinistra), l’encoder del Transformer legge l’intera sequenza di parole contemporaneamente. Ecco perché il modello viene considerato bidirezionale e consente al modello di comprendere l’intero contesto dei dati di input.

Per ottenere una bidirezionalità, BERT utilizza due tecniche:

  1. Mask Language Model (MLM) – Tecnica di mascheramento delle parole. La tecnica maschera il 15% delle parole di input e cerca di prevedere questa parola mascherata sulla base della parola non mascherata.
  2. Next Sentence Prediction (NSP) – BERT cerca di apprendere la relazione tra le frasi. Il modello ha coppie di frasi come input dati e cerca di prevedere se la frase successiva esiste nel documento originale.

Ci sono alcuni vantaggi nell’utilizzare BERT nel campo dell’NLP, tra cui:

  1. BERT è facile da utilizzare per vari compiti NLP pre-addestrati.
  2. La bidirezionalità permette a BERT di comprendere meglio il contesto del testo.
  3. È un modello popolare che ha molto supporto dalla comunità.

Tuttavia, ci sono ancora alcuni svantaggi, tra cui:

  1. Richiede una grande potenza di calcolo e un tempo di addestramento lungo per alcuni compiti NLP successivi.
  2. Il modello BERT potrebbe comportare una maggiore necessità di spazio di archiviazione.
  3. È meglio utilizzarlo per compiti complessi poiché le prestazioni per compiti semplici non sono molto diverse rispetto all’utilizzo di modelli più semplici.

Conclusioni

L’NLP è diventata più prominente di recente e molta ricerca si è concentrata sul miglioramento delle applicazioni. In questo articolo, discutiamo tre tecniche NLP che vengono spesso utilizzate:

  1. RNN
  2. Transformer
  3. BERT

Ognuna delle tecniche ha i suoi vantaggi e svantaggi, ma nel complesso possiamo vedere il modello in continua evoluzione in modo migliore. Cornellius Yudha Wijaya è un assistente manager di data science e uno scrittore di dati. Mentre lavora a tempo pieno presso Allianz Indonesia, ama condividere consigli su Python e dati tramite i social media e i media scritti.

[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/) è un assistente manager di data science e uno scrittore di dati. Mentre lavora a tempo pieno presso Allianz Indonesia, ama condividere consigli su Python e dati tramite i social media e i media scritti.