Come diventare un esperto di PNL nel 2019 (1)

In questo post, mi concentrerei su tutte le conoscenze teoriche necessarie per le ultime tendenze della PNL. Ho fatto questa lista di lettura mentre imparavo nuovi concetti. Nel prossimo post, condividerei le cose che uso per mettere in pratica questi concetti, tra cui la messa a punto e i modelli del grado 1 nelle classifiche della competizione. Usa questo link per arrivare alla parte 2 (Still to make).

Per le risorse, includo documenti, blog, video.

Non è necessario leggere la maggior parte delle cose. Il tuo obiettivo principale dovrebbe essere quello di capire che in questo articolo questa cosa è stata introdotta e capisco come funziona, come la confronta con lo stato dell'arte.

Tendenza: utilizzare modelli basati su trasformatori più grandi e risolvere l'apprendimento multi-task.

Avvertenza: è una tendenza crescente nella PNL che se si ha una nuova idea nella PNL durante la lettura di qualsiasi documento, sarà necessario utilizzare un'enorme potenza di calcolo per ottenere risultati ragionevoli. Quindi sei limitato dai modelli open source.

  1. fastai: - Avevo già visto i video, quindi ho pensato di aggiungerlo in cima all'elenco.
  • Lezione 4 Apprendimento profondo pratico per programmatori. Ti spiegherà come implementare un modello linguistico in fastai.
  • C'è la lezione 12 nella parte 2 del corso, ma è ancora da rilasciare ufficialmente, quindi aggiornerei il link quando viene caricato.

2. LSTM: - Sebbene i trasformatori siano utilizzati principalmente al giorno d'oggi, in alcuni casi è ancora possibile utilizzare LSTM ed è stato il primo modello di successo a ottenere buoni risultati. Dovresti usare AWD_LSTM ora se vuoi.

  • Carta MEMORIA A LUNGO TERMINE. È sufficiente una rapida scrematura della carta.
  • Comprensione del blog LSTM Networks. Spiega graficamente tutti i dettagli della rete LSTM.

3. AWD_LSTM: - È stato proposto di superare la carenza di LSTM introducendo il dropout tra i livelli nascosti, incorporando il dropout, legando il peso. Dovresti usare AWS_LSTM invece di LSTM.

  • Regolarizzare e ottimizzare la carta dei modelli linguistici LSTM. Carta AWD_LSTM
  • Codice ufficiale di Salesforce
  • implementazione fastai

4. Modelli di puntatore: - Sebbene non necessario, è una buona lettura. Puoi pensarlo come una teoria pre-attenzione.

  • Puntatore Sentinel Miscela Modelli di carta
  • Video ufficiale del documento sopra.
  • Miglioramento dei modelli di linguaggio neurale con una carta cache continua

Extra: Qual è la differenza tra riduzione del peso e regolarizzazione? Nel decadimento del peso, si aggiunge direttamente qualcosa alla regola di aggiornamento mentre nella regolarizzazione viene aggiunto alla funzione di perdita. Perché tirarlo su? Molto probabilmente le librerie DL stanno usando weight_decay invece della regolarizzazione sotto il cofano.

In alcuni articoli, vedresti che gli autori hanno preferito SGD rispetto ad Adam, citando che Adam non dà buone prestazioni. Il motivo è che (forse) PyTorch / Tensorflow stanno facendo l'errore sopra riportato. Questa cosa è spiegata in dettaglio in questo post.

5. Attenzione: - Ricorda che l'attenzione non è tutto ciò di cui hai bisogno.

  • Video CS224n che spiega l'attenzione. L'attenzione inizia dalle 1:00:55 ore.
  • L'attenzione è tutto ciò che serve carta. Questo documento introduce anche il Transformer che non è altro che una pila di blocchi di encoder e decoder. La magia è come questi blocchi vengono realizzati e collegati.
  • Puoi leggere una versione annotata del documento sopra in PyTorch.
  • Video ufficiale che spiega Attenzione
  • Blog di Google per Transformer
  • Se sei interessato ai video, puoi controllare questi link1, link2.
  • Transformer-XL: modelli linguistici attenti oltre un documento di contesto a lunghezza fissa. Versione migliore di Transformer ma BERT non lo utilizza.
  • Blog di Google per Transformer-XL
  • Transformer-XL - Combinazione di Transformers e RNN in un blog di modello linguistico all'avanguardia
  • Se sei interessato ai video puoi controllare questo link.
  • Il blog di Transformer illustrato
  • Attenzione e memoria nel blog di Deep Learning e NLP.
  • Blog di reti neuronali ricorrenti attive e potenziate.
  • Costruire il potente trasformatore per l'etichettatura sequenziale in PyTorch: blog della parte 1.
  • Costruire il potente trasformatore per l'etichettatura sequenziale in PyTorch: blog parte 2.

Ci sono molte ricerche in corso per realizzare trasformatori migliori, forse leggerò altri articoli su questo in futuro. Alcuni altri trasformatori includono Universal Transformer e Evolved Transformer che ha utilizzato AutoML per realizzare l'architettura Transformer.

Il motivo per cui le nuove architetture di trasformatori non risolvono il problema. Perché sono necessari modelli di linguaggio per le attività NLP che utilizzano questi blocchi di trasformatori. Nella maggior parte dei casi, non avrai le risorse di calcolo necessarie per addestrare questi modelli poiché è stato scoperto che più blocchi di trasformatori usi meglio. Inoltre, hai bisogno di lotti più grandi per addestrare questi modelli linguistici, il che significa che devi utilizzare TPU Nvidia DGX o Google Cloud (il supporto PyTorch verrà un giorno).

6. Risorse casuali: - Puoi saltare questa sezione. Ma per completezza, fornisco tutte le risorse che ho usato.

  • Visualizzazione di un blog Modello di traduzione automatica neurale (Meccanica dei modelli Seq2seq con attenzione)
  • Modellistica linguistica a livello di personaggio con carta di auto-attenzione più profonda.
  • Utilizzo dell'incorporamento dell'output per migliorare la carta dei modelli Langauge.
  • Carta sulle reti neurali quasi ricorrenti. Una versione molto veloce di LSTM. Utilizza i livelli di convoluzione per rendere paralleli i calcoli LSTM. Il codice può essere trovato in fastai_library o official_code.
  • Blog di Deep Learning for NLP Best Practices di Sebastian Ruder. Una raccolta di migliori pratiche da utilizzare durante l'addestramento dei modelli LSTM.
  • Note sulle tecniche all'avanguardia per il blog di modellistica linguistica. Un breve riassunto in cui Jeremy Howard riassume alcuni dei suoi trucchi che usa nella biblioteca di fastai.
  • Blog sulle modalità linguistiche e sulle contestualizzazioni di parole contestualizzate. Fornisce una rapida panoramica di ELMo, BERT e altri modelli.
  • The Illustrated BERT, ELMo e co. Blog (How NLP Cracked Transfer Learning).

7. Apprendimento multi-task: - Sono davvero entusiasta di questo. In questo caso, si allena un singolo modello per più attività (più di 10 se lo si desidera). Quindi i tuoi dati sembrano "tradurre in inglese some_text_in_german". Il modello in realtà impara a utilizzare le informazioni iniziali per scegliere l'attività che deve eseguire.

  • Una panoramica dell'apprendimento multi-task in un documento sulle reti neurali profonde.
  • The Natural Language Decathlon: Apprendimento multitasking come carta di risposta alle domande.
  • Reti neurali profonde multi-task per la comprensione del linguaggio naturale.
  • OpenAI GPT ne è un esempio.

8. PyTorch: - Pytorch fornisce buoni tutorial che forniscono buoni riferimenti su come codificare la maggior parte delle cose in PNL. Sebbene i trasformatori non siano presenti nei tutorial, tuttavia dovresti comunque vedere i tutorial una volta.

Ora veniamo alle ultime ricerche sulla PNL che hanno portato al momento Imagenet della PNL. Tutto quello che devi capire è come funziona l'attenzione e sei pronto.

9. ELMo: - La prima importante ricerca fatta dove ci siamo spostati da incorporamenti di parole precostituiti all'utilizzo di modelli predefiniti per ottenere gli incorporamenti di parole. Quindi usi la frase di input per ottenere gli embeddings per i token presenti nella frase.

  • Documento di rappresentazione di parole contestualizzate profonde (ELMo paper)
  • Se sei interessato ai video controlla questo link.

10. ULMFit: - È forse meglio di BERT, ma ancora nelle competizioni Kaggle e nelle competizioni esterne ULMFiT ottiene il primo posto.

  • Messa a punto del modello di linguaggio universale per la carta di classificazione del testo.
  • Post sul blog di Jeremy Howard che annuncia ULMFiT.
  • È spiegato nella lezione 10 del corso di apprendimento profondo all'avanguardia.

11. OpenAI GPT: - Non ho confrontato BERT con GPT2, ma se vuoi lavorare su un qualche tipo di ensemble. Non utilizzare GPT1 poiché BERT è stato creato per superare i limiti di GPT1.

  • GPT1 carta, blog, codice
  • Carta GPT2, blog, codice
  • Guarda il video di openai su GPT2

12. BERT: - Il modello linguistico di maggior successo in questo momento (a maggio 2019).

  • BERT: Pre-training sui trasformatori bidirezionali profondi per la comprensione della lingua.
  • Blog di Google su BERT
  • Dissezione BERT Parte 1: il blog Encoder
  • Comprensione della parte 2 di BERT: blog sulle specifiche di BERT
  • Appendice BERT di dissezione: il blog Decoder

Per utilizzare tutti questi modelli in PyTorch è necessario utilizzare il repository hugginface / pytorch_pretrained_BERT che fornisce implementazioni complete insieme a modelli predefiniti per BERT, GPT1, GPT2, TransformerXL.

13. Prossimo blog: - Potrei arrivare tardi a scrivere il prossimo blog, quindi volevo condividere quest'ultima cosa.

  • Riduzione del pre-allenamento BERT da 3 giorni a 76 minuti di carta. È stato introdotto un nuovo ottimizzatore per i modelli linguistici che può ridurre significativamente i tempi di formazione.

Complimenti, ce l'hai fatta fino alla fine. Ora hai la maggior parte delle conoscenze teoriche necessarie per praticare la PNL usando gli ultimi modelli e tecniche.

Cosa fare adesso?

Hai solo imparato la teoria, ora esercitati il ​​più possibile. Crea gruppi folli, se vuoi, prova ad essere in cima alle classifiche. Sto lottando in questo momento per esercitarmi nelle mie attività di PNL dato che sono impegnato in alcuni progetti di visione artificiale che controlli di seguito o sul mio github.

Molto probabilmente farei un post di follow-up entro metà o fine giugno, fornendo un elenco come questo, con alcune nuove tecniche che ho in mente di leggere e le cose che farò per esercitarmi.

Se trovi utile questo post, condividi questo con altri che potrebbero trarne beneficio e dai un applauso a questo post (aiuta molto, puoi dare un massimo di 50 applausi).

Seguimi su Medium per inserire i miei ultimi post nel tuo feed medio. I miei social linkedin, github, twitter.

I miei post precedenti sul blog

  1. Addestrare AlexNet con suggerimenti e verifiche su come addestrare le CNN: CNN pratiche in PyTorch (1)
  2. Tutto ciò che serve per il trasferimento di stili fotorealistici in PyTorch
  3. SPADE: stato dell'arte nella traduzione da immagine a immagine di Nvidia
  4. Standardizzazione del peso: una nuova normalizzazione in città