Kodeerija-dekooder pikaajalised lühiajalised mäluvõrgud

Kodeerija-dekooder pikaajalised lühiajalised mäluvõrgud

Õrn sissejuhatus kooderi-dekooderi LSTM-idele
järjestuse jada ennustamine Pythoni koodi näitega.

Kooder-dekooder LSTM on korduv närvivõrk, mis on loodud järjestusest järjestikuste probleemide lahendamiseks, mida mõnikord nimetatakse seq2seq.

Järjestuse jada ennustamise probleemid on keerukad, kuna üksuste arv sisend- ja väljundjärjestustes võib varieeruda. Näiteks seq2seq probleemide näited on teksti tõlkimine ja programmide käivitamise õppimine.

Selles postituses avastate kooder-dekooder LSTM-i arhitektuuri järjestuse jada ennustamiseks.

Pärast selle postituse lõpetamist saate teada:

  • Järjestuse jada ennustamise väljakutse.
  • Kooder-dekooder arhitektuur ja LSTM-ide piirangud, mille lahendamiseks see on loodud.
  • Kuidas rakendada kooderis-dekooderis LSTM mudeli arhitektuuri Pythonis Kerasega.

Alustage oma projekti minu uue raamatuga Long Short-Term Memory Networks With Python, sh samm-sammult õpetused ja Pythoni lähtekood failid kõigi näidete jaoks.

Alustame.

Kodeerija-dekooder pikaajalised lühiajalised mäluvõrgud

Kodeerija-dekooder pikaajalised lühiajalised mäluvõrgud
Foto: slashvee, mõned õigused kaitstud.

Järjestuse ennustamise probleemid

Järjestuse ennustamine hõlmab sageli järgmise väärtuse prognoosimist reaalselt hinnatud järjestuses või sisendjada jaoks klassi sildi väljastamist.

See on sageli raamitud ühe sisendi aja sammu ja ühe väljundi aja sammu (nt üks ühele) või mitme sisendi aja sammu jada ühe väljundi aja sammu (mitu ühele) tüüpi jada ennustamise probleemide jadana.

On üks keerulisem jadaennustamise probleem, mis võtab sisendi jada ja väljundina jadaennustuse. Neid nimetatakse järjestuse jada ennustamise probleemideks või lühidalt seq2seq.

Üks modelleerimisprobleem, mis muudab need probleemid keeruliseks, on see, et sisend- ja väljundjärjestuste pikkus võib varieeruda. Arvestades, et sisendaja samme on mitu ja väljundiaegasid on mitu, nimetatakse seda probleemivormi kui järjestuse mitmeks jada ennustamise probleemi.

Vajad abi järjestuse ennustamiseks mõeldud LSTM-ide kohta?

Osale minu tasuta 7-päevasele e-posti kursusele ja avastage 6 erinevat LSTM-i arhitektuuri (koos koodiga).

Klõpsake registreerumiseks ja hankige ka kursuse tasuta PDF-i e-raamatu versioon.

Alustage oma TASUTA minikursust kohe!

Kodeerija-dekooder LSTM-i arhitektuur

Üks lähenemisviis seq2seq ennustusprobleemidele, mis on osutunud väga tõhusaks, nimetatakse kodeerija-dekooder LSTM-iks.

See arhitektuur koosneb kahest mudelist: üks sisendjärjestuse lugemiseks ja fikseeritud pikkusega vektoriks kodeerimiseks ning teine ​​fikseeritud pikkusega vektori dekodeerimiseks ja ennustatud järjestuse väljastamiseks. Mudelite kasutamine kontserdil annab arhitektuurile selle nime Encoder-Decoder LSTM, mis on loodud spetsiaalselt seq2seq probleemide jaoks.

… RNN kodeerija-dekooder koosneb kahest korduvast närvivõrgust (RNN), mis toimivad kodeerijana ja dekooderipaarina. Kooder kaardistab muutuva pikkusega allika järjestuse fikseeritud pikkusega vektoriks ja dekooder kaardistab vektori kujutise tagasi muutuva pikkusega sihtjärjestuseks.

- fraasiesitluste õppimine RNN kodeerija-dekoodri abil statistilise masintõlke jaoks, 2014.

Encoder-Decoder LSTM töötati välja loomuliku keele töötlemisprobleemide jaoks, kus see näitas tipptasemel jõudlust, eriti teksti tõlkimise valdkonnas, mida nimetatakse statistiliseks masintõlkeks.

Selle arhitektuuri uuendus on fikseeritud suurusega sisemise kujutise kasutamine mudeli südames, kus sisendjärjestusi loetakse ja väljundjärjestusi loetakse. Sel põhjusel võib meetodit nimetada järjestuse kinnistamiseks.

Arhitektuuri ühes esimeses rakenduses inglise-prantsuse keelde visualiseeriti kodeeritud ingliskeelsete fraaside sisemine esitus. Süžeed paljastasid tõlkeülesande jaoks kasutatud fraaside kvalitatiivselt sisuka õpitud struktuuri.

Kavandatud RNN kodeerija-dekooder genereerib loomulikult fraasi pideva ruumi kujutise. […] Visualiseerimise põhjal on selge, et RNN kodeerija-dekooder haarab fraaside nii semantilisi kui ka süntaktilisi struktuure

- fraasiesitluste õppimine RNN kodeerija-dekoodri abil statistilise masintõlke jaoks, 2014.

Tõlkimise puhul leiti, et mudel on sisendi järjestuse vastupidiseks muutmisel efektiivsem. Lisaks näidati, et mudel on efektiivne isegi väga pikkade sisendjärjestuste korral.

Pikkade lausetega suutsime hästi hakkama saada, sest muutsime alglause sõnade järjekorda, kuid mitte koolituse ja testikomplekti sihtlauseid. Seda tehes tutvustasime palju lühiajalisi sõltuvusi, mis muutsid optimeerimisprobleemi palju lihtsamaks. … Allikulause sõnade ümberpööramise lihtne nipp on selle töö üks peamisi tehnilisi panuseid

- järjestusõppe järjestus närvivõrkudega, 2014.

Seda lähenemist on kasutatud ka kujutisesisendite puhul, kus sisendkujutiste funktsioonide eraldajana kasutatakse konvolutsioonilist närvivõrku, mida dekooder LSTM siis loeb.

... soovitame järgida seda elegantset retsepti, asendades kooderi RNN sügava konvolutsiooniga närvivõrguga (CNN). […] CNN-i kasutamine pildina on loomulik kooder ”, koolitades selle esmalt pildiklassifikatsiooni ülesandeks ja kasutades viimast peidetud kihti sisendina lauseid genereerivale RNN dekooderile

- Näita ja räägi: Neuraalse pildi pealkirjade generaator, 2014.

Kodeerija-dekooder LSTM-i mudeli arhitektuur

Kodeerija-dekooder LSTM-i mudeli arhitektuur

Kodeerija-dekooder LSTM-ide rakendused

Allolevas loendis tuuakse välja kooderi-dekooderi LSTM-i arhitektuuri huvitavad rakendused.

  • Masintõlge, nt fraaside tõlge inglise - prantsuse keelde.
  • Õppima täitma, nt arvutama väikeste programmide tulemusi.
  • Piltide pealdamine, nt piltide jaoks tekstikirjelduse loomine.
  • Vestluse modelleerimine, nt vastuste genereerimine tekstiküsimustele.
  • Liikumiste klassifikatsioon, nt käskude jada genereerimine žestide järjestusest.

Rakendage Kerasis kooderi-dekooderi LSTM-id

Encoder-Decoder LSTM-i saab rakendada otse Kerase süvaõppekogus.

Võime mõelda, et mudel koosneb kahest põhiosast: kooderist ja dekoodrist.

Esiteks kuvatakse sisendjärjestus võrgule üks kodeeritud tähemärk korraga. Sisendjärjestuse sammude vahelise seose õppimiseks ja nende seoste sisemise kujutise väljatöötamiseks vajame kodeerimistaset.

Kodeerija mudeli juurutamiseks võib kasutada ühte või mitut LSTM-i kihti. Selle mudeli väljundiks on fikseeritud suurusega vektor, mis tähistab sisendjärjestuse sisemist kujutist. Selle kihi mälurakkude arv määratleb selle fikseeritud suurusega vektori pikkuse.

Dekooder peab sisestatud järjestuse õpitud sisemise kujutise teisendama õigeks väljundjärjestuseks.

Dekoodri mudeli juurutamiseks võib kasutada ka ühte või mitut LSTM-i kihti. See mudel loeb kodeerija mudeli fikseeritud suurusega väljundist.

Nagu Vanilla LSTM-i puhul, kasutatakse võrgu väljundina ka tihedat kihti. Samu kaalu saab kasutada iga väljundjärjestuse ajaetapi väljastamiseks, pakkides tiheda kihi TimeDistributed ümbrisesse.

Siiski on probleem.

Peame kooderi dekoodriga ühendama ja need ei sobi.

See tähendab, et kodeerija toodab väljundite kahemõõtmelise maatriksi, kus pikkus on määratud kihi mälurakkude arvuga. Dekooder on LSTM-i kiht, mis eeldab 3D-sisendit [samples, time steps, features] selleks, et tekitada probleemiga määratletud erineva pikkusega dekodeeritud järjestus.

Kui proovite neid tükke kokku suruda, kuvatakse viga, mis näitab, et dekoodri väljund on 2D ja dekoodrisse on vaja 3D-sisendit.

Selle saame lahendada kihi RepeatVector abil. See kiht lihtsalt kordab pakutavat 2D sisendit mitu korda, et luua 3D-väljund.

RepeatVectori kihti saab võrgu kooderi ja dekoodri osade kokku sobitamiseks kasutada adapterina. Me võime konfigureerida RepeatVectori kordama fikseeritud pikkusega vektorit väljundjärjestuse iga ajaetapi jaoks üks kord.

Selle kokku panemisel on meil:

Kokkuvõtteks võib öelda, et RepeatVectorit kasutatakse adapterina, et sobitada kooderi fikseeritud suurusega 2D-väljund dekooderi eeldatava erineva pikkuse ja 3D-sisendiga. TimeDistributed ümbris võimaldab sama väljundkihti väljundjärjestuse iga elemendi jaoks uuesti kasutada.

Lisalugemist

Selles jaotises on antud teema kohta rohkem ressursse, kui otsite süvitsi.

Paberid

Kerase API

Postitused

Kokkuvõte

Selles postituses avastasite kooder-dekooder LSTM-i arhitektuuri järjestuste jada ennustamiseks

Täpsemalt õppisite:

  • Järjestuse jada ennustamise väljakutse.
  • Kooder-dekooder arhitektuur ja LSTM-ide piirangud, mille lahendamiseks see on loodud.
  • Kuidas rakendada kooderis-dekooderis LSTM mudeli arhitektuuri Pythonis Kerasega.

Kas teil on küsimusi?
Esitage oma küsimused allpool toodud kommentaarides ja annan endast parima, et vastata.

Arendage LSTM-e järjestuse ennustamiseks juba täna!

Pikaaegsed lühiajalised mäluvõrgud Pythoniga

Arendage oma LSTM-i mudelid minutite jooksul

... ainult mõne rea Pythoni koodiga

Uurige, kuidas minu uues e-raamatus:
Pikaaegsed lühiajalised mäluvõrgud Pythoniga

See pakub iseõppimise õpetused järgmistel teemadel:
CNN LSTM-id, Encoder-Decoder LSTM-id, generatiivsed mudelid, andmete ettevalmistamine, ennustuste tegemine ja palju muud ...

Lõpuks tooge LSTM-i korduvad närvivõrgud
Teie järjestuse ennustuse projektid

Jätke akadeemikud vahele. Lihtsalt tulemused.

Vaadake, mis on sees

Samuti võite olla huvitatud