Kuinka tulla asiantuntijaksi NLP: ssä vuonna 2019 (1)

Tässä viestissä keskityn kaikkiin teoreettisiin tietoihin, joita tarvitset NLP: n viimeisimpiin suuntauksiin. Tein tämän luettelon oppiessani uusia käsitteitä. Seuraavassa viestissä haluaisin jakaa asiat, joita käytän harjoittaessani näitä käsitteitä, mukaan lukien hienosäätö ja mallit 1. listalta kilpailun tulostaulukoissa. Käytä tätä linkkiä päästäksesi osaan 2 (vielä tekemistä).

Resursseihin sisältyy papereita, blogeja, videoita.

Suurinta osaa ei tarvitse lukea. Päätavoitteesi pitäisi olla ymmärtää, että tässä asiassa esiteltiin tämä asia, ja ymmärränkö miten se toimii, kuinka sitä verrataan tekniikan tasoon.

Trendi: Käytä suurempia muuntajapohjaisia ​​malleja ja ratkaise monen tehtävän oppiminen.

Varoitus: NLP: n kasvava trendi on, että jos sinulla on uusi idea NLP: ssä minkä tahansa paperin lukemisen aikana, sinun on käytettävä massiivista laskentatehoa saadaksesi kohtuullisia tuloksia. Joten avoimen lähdekoodin mallit rajoittavat sinua.

  1. fastai: - Olin jo katsellut videoita, joten ajattelin, että minun pitäisi lisätä se luettelon kärkeen.
  • Oppitunti 4 Kooderien käytännön syväoppiminen. Se opastaa sinua ottamaan käyttöön kielimallin Fastaissa.
  • Kurssin osassa 2 on oppitunti 12, mutta se julkaistaan ​​vielä virallisesti, joten päivittäisin linkin, kun se ladataan.

2. LSTM: - Vaikka muuntajia käytetään pääasiassa nykyään, joissain tapauksissa voit silti käyttää LSTM: ää, ja se oli ensimmäinen onnistunut malli, jolla saatiin hyviä tuloksia. Sinun tulisi käyttää AWD_LSTM nyt, jos haluat.

  • PITKÄAIKAINEN MUISTI paperi. Nopea paperinpoisto riittää.
  • LSTM Networks -blogin ymmärtäminen. Se selittää kaikki LSTM-verkon yksityiskohdat graafisesti.

3. AWD_LSTM: - LSTM: n puutteesta ehdotettiin voittavan tuomalla esiintyminen piilotettujen kerrosten väliin, upottamalla keskeyttäminen, painon sitominen. Sinun tulisi käyttää AWS_LSTM: ää LSTM: n sijasta.

  • LSTM-kielimallien paperin säänteleminen ja optimointi. AWD_LSTM-paperi
  • Salesforcen virallinen koodi
  • fastai täytäntöönpano

4. Osoitinmallit: - Vaikka se ei ole välttämätön, se on hyvä lukea. Voit ajatella sitä ennakkohuomioteoriana.

  • Osoitin Sentinel -seosmalleja paperi
  • Virallinen video yllä olevasta paperista.
  • Neurokielisten mallien parantaminen jatkuvalla välimuistipaperilla

Lisäosa: Mikä on ero painon laskun ja tasapainottamisen välillä? Painon vähentyessä lisäät jotain päivityssääntöön, kun taas normalisoinnissa se lisätään tappiofunktioon. Miksi tuoda esiin? Todennäköisesti DL-kirjastot käyttävät weight_decay-ohjelmaa sijasta, että ne olisivat säätäneet konepellin alla.

Joissain kirjoituksissa voisit nähdä, että kirjoittajat mieluummin SGD: tä kuin Adamia, väittäen, että Adam ei anna hyvää suorituskykyä. Syynä tähän on (ehkä) PyTorch / Tensorflow tekevät yllä mainitun virheen. Tätä asiaa selitetään yksityiskohtaisesti tässä viestissä.

5. Huomio: - Muista vain Huomio ei ole kaikki mitä tarvitset.

  • Huomiota selittävä CS224n-video. Huomio alkaa kello 1:00:55.
  • Huomio on kaikki mitä tarvitset paperille. Tämä paperi esittelee myös muuntajan, joka ei ole muuta kuin pino kooderi- ja dekooderilohkoja. Taika on kuinka nämä lohkot tehdään ja yhdistetään.
  • Voit lukea selostetun version yllä olevasta paperista PyTorchissa.
  • Virallinen video, joka selittää huomion
  • Google-blogi muuntajalle
  • Jos olet kiinnostunut videosta, voit tarkistaa nämä link1, link2.
  • Transformer-XL: Huomaavaiset kielimallit, joissa on kiinteäpituinen asiakirjapaperi. Parempi versio muuntajasta, mutta BERT ei käytä tätä.
  • Google-blogi Transformer-XL: lle
  • Transformer-XL - Muuntajien ja RNN: ien yhdistäminen huipputekniselle kielimalliblogille
  • Jos olet kiinnostunut videosta, voit tarkistaa tämän linkin.
  • Kuvitettu muuntaja-blogi
  • Huomio ja muisti syvässä oppimisessa ja NLP-blogissa.
  • Huomio ja toistuvasti toistuvat hermoverkot-blogi.
  • Voimakkaan muuntajan rakentaminen sekvenssimerkinnöille PyTorchissa: Osa 1 -blogi.
  • Voimakkaan muuntajan rakentaminen sekvenssimerkinnöille PyTorchissa: Osa 2 -blogi.

Parempien muuntajien valmistamiseksi on meneillään paljon tutkimusta. Ehkä luen tulevaisuudessa lisää asiaa koskevia artikkeleita. Joitakin muita muuntajat sisältävät Universal Transformer ja Evolved Transformer, jotka käyttivät AutoML: ää keksimään Transformer-arkkitehtuuria.

Syy, miksi uudet muuntaja-arkkitehtuurit eivät ratkaise ongelmaa. Koska tarvitset kielimalleja NLP-tehtäviin, jotka käyttävät näitä muuntajalohkoja. Useimmissa tapauksissa sinulla ei ole laskentaresursseja, joita tarvitaan näiden mallien kouluttamiseen, koska on havaittu, että mitä enemmän muuntajalohkoja käytät, sitä parempi. Tarvitset myös suurempia eräkokoja näiden kielimallien kouluttamiseen, mikä tarkoittaa, että sinun on käytettävä joko Nvidia DGX tai Google Cloud TPU (PyTorch-tuki tulee jonakin päivänä).

6. Satunnaiset resurssit: - Voit ohittaa tämän osan. Mutta täydellisyyden vuoksi annan kaikki käyttämäni resurssit.

  • Neuraalin konekäännösmallin visualisointi (Seq2seq-mallien mekaniikka huomioimalla) -blogi
  • Merkkitason kielimallinnus syvemmällä omahuomiota tukevalla paperilla.
  • Tulostestauksen käyttäminen Paranna Langauge Models -paperia.
  • Kvasi-toistuvat hermoverkot -asiakirja. Erittäin nopea versio LSTM: stä. Se käyttää konvoluutiokerroksia tekemään LSTM-laskelmat yhdensuuntaisiksi. Koodi löytyy fastai_library- tai virallisesta_koodista.
  • Syvä oppiminen NLP: n parhaiden käytäntöjen blogi, kirjoittanut Sebastian Ruder. Kokoelma parhaita käytäntöjä, joita on käytettävä LSTM-mallien kouluttamisessa.
  • Huomautuksia kielimallinnusblogin uusimmasta tekniikasta. Pikayhteenveto, jossa Jeremy Howard esittää yhteenvedon temppuistaan, joita hän käyttää fastai-kirjastossa.
  • Kielimuodot ja kontekstuaaliset Word-upotukset-blogi. Antaa nopean yleiskatsauksen ELMo-, BERT- ja muista malleista.
  • Kuvitettu BERT, ELMo ja yhteistyö. (Kuinka NLP Cracked Transfer Learning) -blogi.

7. Monitehtäväinen oppiminen: - Olen siitä todella innoissani. Tässä tapauksessa koulutat yhden mallin useisiin tehtäviin (jos haluat yli 10). Joten tietosi näyttävät "käännä englanniksi some_text_in_german". Mallisi oppii käytännössä alkuperäisiä tietoja valitsemaan tehtävän, jonka sen pitäisi suorittaa.

  • Katsaus monitehtäväoppimisesta syvissä hermoverkoissa.
  • Luonnollisen kielen decathlon: monitasoinen oppiminen kysymysvastaavana.
  • Monitehtäväiset syvät neuroverkot luonnollisen kielen ymmärtämistä varten.
  • OpenAI GPT on esimerkki tästä.

8. PyTorch: - Pytorch tarjoaa hyviä oppaita, jotka antavat sinulle hyviä ohjeita siitä, kuinka koodata suurin osa NLP: n tavaroista. Vaikka muuntajat eivät ole opetusohjelmissa, sinun tulisi silti nähdä oppaat kerran.

Nyt olemme tulleet viimeisimpään tutkimukseen NLP: ssä, joka on johtanut NLP: n Imagenet-hetkeen. Ainoa mitä sinun täytyy ymmärtää on miten huomio toimii ja olet asetettu.

9. ELMo: - Ensimmäinen merkittävä tutkimustyö, jossa siirryttiin valmiiksi käsitellyistä sanan upotuksista ennalta koulutettujen mallien käyttämiseen sanojen upotuksien saamiseksi. Joten käytät syöttölausetta saadaksesi upotukset lauseessa oleviin tokereihin.

  • Syvä kontekstuaalinen sanaesityspaperi (ELMo-paperi)
  • Jos olet kiinnostunut videosta, tarkista tämä linkki.

10. ULMFit: - Onko tämä parempi kuin BERT, ei ehkä, mutta silti Kaggle-kilpailuissa ja ulkoisissa kilpailuissa ULMFiT saa ensimmäisen sijan.

  • Universal Language Model -hienosäätö tekstiluokittelupaperille.
  • Jeremy Howard -blogin viesti, joka ilmoittaa ULMFiT: stä.
  • Se selitetään alareunan syväoppimiskurssin oppitunnissa 10.

11. OpenAI GPT: - En ole verrannut BERT: ää GPT2: een, mutta työskentelet jonkin verran yhtyeessä, jos haluat. Älä käytä GPT1: tä, koska BERT tehtiin GPT1: n rajoitusten ylittämiseksi.

  • GPT1-paperi, blogi, koodi
  • GPT2-paperi, blogi, koodi
  • Tarkista video Openailtä GPT2: lla

12. BERT: - Menestyvin kielimalli tällä hetkellä (toukokuusta 2019).

  • BERT: Syvän kaksisuuntaisen muuntajan esikoulutus kielen ymmärtämistä varten.
  • Google-blogi BERT: llä
  • BERT: n leikkaaminen, osa 1: Kooderi-blogi
  • BERT: n ymmärtäminen, osa 2: BERT-tiedot -blogi
  • BERT-liitteen leikkaaminen: Dekooderi-blogi

Jotta kaikkia näitä malleja voitaisiin käyttää PyTorchissa, sinun tulee käyttää hugginface / pytorch_pretrained_BERT repo-ohjelmaa, joka antaa sinulle täydellisen toteutuksen yhdessä valmiiksi koulutettujen mallien kanssa BERT, GPT1, GPT2, TransformerXL.

13. Seuraava blogi: - Voin myöhästyä seuraavan blogin kirjoittamiseen, joten halusin jakaa tämän viimeisen asian.

  • BERT-esikoulutuksen lyhentäminen 3 päivästä 76 minuuttiin paperille. Kielimallien käyttöön on otettu uusi optimoija, joka voi merkittävästi lyhentää harjoitusaikaa.

Onnittelut teit sen loppuun. Sinulla on nyt suurin osa teoreettisista tiedoista, joita tarvitaan NLP: n harjoitteluun uusimpia malleja ja tekniikoita käyttämällä.

Mitä tehdä nyt?

Opit vain teorian, harjoittelet nyt niin paljon kuin pystyt. Luo hulluja ryhmiä, jos haluat, yritä päästä tulostaululle. Vaikeutin juuri nyt harjoittaa NLP-tehtäviäni, koska olen kiireinen tekemässä joitain tietokonevisioprojekteja, jotka tarkistat alla tai minun githubissa.

Todennäköisesti tekisin seurantaviestin kesäkuun puoliväliin tai loppuun mennessä antamalla tämänkaltaisen luettelon, jossa on joitain uusia tekniikoita, jotka mielessäni luen, ja asioita, joita teen käytännössä.

Jos pidät tätä viestiä hyödyllisenä, jaa se muiden kanssa, jotka voivat hyötyä siitä, ja anna tälle viestille taputus (se auttaa paljon, voit antaa enintään 50 tappaa).

Seuraa minua Mediumilla saadaksesi uusimmat blogi-viestit media-syötteessäsi. Sosiaalinen linkedin -sivuni, github, twitter.

Aiemmat blogini

  1. Kouluta AlexNetia vinkkillä ja tarkistuksilla, kuinka kouluttaa CNN: ää: Käytännölliset CNN: t PyTorchissa (1)
  2. Kaikki mitä tarvitset fotorealistiseen tyylien siirtoon PyTorchissa
  3. SPADE: Nvidian kuvankäsittelyn tekniikan tason taso
  4. Painon standardisointi: Uusi normalisointi kaupungissa