Hva er forskjellen mellom feed-forward nevrale nettverk og LSTM ? Hvordan skiller de seg i arkitekturen?
Svar
Et feed-forward neuralt nettverk ser slik ut:
input -> skjult lag 1 -> skjult lag 2 -> … -> skjult lag k -> output.
Hvert lag kan ha et annet antall neuroner, men det er arkitekturen .
En LSTM (langvarig minnecelle) er en spesiell type node i et nevralt nettverk. Den kan settes i et feedforward neuralt nettverk, og det er vanligvis Når det skjer, blir feedforward nevrale nettverk referert til som en LSTM (forvirrende!).
Så hvordan fungerer en LSTM? Ta en titt på svaret mitt her: Glem lag i et tilbakevendende nevralt nettverk (RNN) –
tl; dr: en LSTM-celle har tre porter, som hver brukes til å modulere inngangen på en eller annen måte: en inngangsport, en glemport og en utgangsport. Den har et «minne» og en utgang som blir modifisert av portene. Det vil si i en enkelt LSTM-celle:
(input forrige celletilstand) -> (input & glem porter) -> (oppdater cellestatus)
(input & forrige celletilstand & oppdatert celletilstand) -> (utgangsport)
Du kan stable disse cellene i mange forskjellige konfigurasjoner. Så det er ikke noe enkelt «LSTM-nettverk» – snarere et sett med mange mulige arkitekturer som kan bygges fra disse grunnleggende nodene.
Håper det kommer i gang!
Kommentarer
- Tusen takk for svaret ditt, men kan du legge til noen bilder for å forbedre min forståelse av arkitekturen
- Hva med tilbaketrekning i fremovernettverket skjer det i feed forward network
- Hei @codezcar, det er bilder av LSTM i svaret mitt som jeg koblet. For et feedforward nevralt nettverk er et bilde her: medium.com/random-techpark/… Ja, du kan bruke backpropagation for å finne de optimale vektene i alle typer nevrale nettverk (feed forward, LSTM, GRU, … hva som helst!).
Svar
Som nevnt av Philipp, hjelper nettverk med tilbakemeldingsløkker med modellering av tid i dataene.
Du vil se etter en oversikt over forskjellige NN-arkitekturer: https://i.stack.imgur.com/LgmYv.png
Svar
Fremovernettverk er nettverk der hver node er koblet til bare noder fra følgende lag. De har ikke «sirkel» -forbindelser. Data kan bare reise fra inngang til utgang uten sløyfer. Eksempler kan være Simple Layer Perceptron eller Multilayer Perceptrion. Convolutional Neural Networks er også rent feed forward-nettverk
I motsetning til som er tilbakevendende nevrale nettverk. LSTM er et av disse. Disse RNN-ene kan også kobles «sidelengs». Det betyr at dataene dine ikke bare kan bevege seg videre til neste lag, men også til andre noder i samme lag eller bakover. Fra en arkitektur synspunkt som betyr at selv om du har et nettverk med kanskje bare ett skjult lag, får du «dybde» ved å legge sløyfer til noder i det laget. Vanligvis representerer disse «tid» i dataene.
Dette bildet viser hva jeg mener med «dyphet» gjennom tilbakemeldingsløkker: https://en.wikipedia.org/wiki/Recurrent_neural_network#/media/File:Recurrent_neural_network_unfold.svg
Selv om det er teknisk en node i lagarkitekturen din, blir den dypere og dypere jo flere sløyfer du legger til
Svar
Jeg vil diskutere noe høyt nivå intuisjon bak LSTM-nettverk. Her er noen spørsmål for å utforske aspektene hvorfor :
- Hvorfor / når vil vi bruke en LSTM over et feed forward neuralt nettverk (FFNN)?
- Hva er fordeler og ulemper ved LSTM og hvordan sammenlignes de med FFNN?
- Hvordan er de forskjellige fra tradisjonelle tilbakevendende nevrale nettverk (RNN)?
Feed Forward Neural Networks (FFNN)
La oss først vurdere en standard FFNN med arkitektur:
Som du sikkert vet, tar denne FFNN tre innganger, behandler dem ved hjelp av det skjulte laget og produserer to utganger. Vi kan utvide denne arkitekturen til å inkludere flere skjulte lag, men det grunnleggende konseptet holder fremdeles: innganger kommer inn, de behandles i en retning, og de blir sendt ut til slutt.
Dette konseptet er veldig godt forklart av andre artikler, så jeg vil ikke gå nærmere inn på det.Nøkkelopptaket er:
Den primære tilstanden som skiller FFNN fra tilbakevendende arkitekturer er at inngangene til et nevron må komme fra laget før nevronet.
Recurrent Neural Networks (RNN)
Gjentatte nevrale nettverk er matematisk ganske like FFNN-modeller. Hovedforskjellen deres er at begrensningen som er plassert på FFNN ikke lenger brukes:
Innganger til et neuron kan komme fra hvilket som helst annet lag.
Du vil ofte se at denne arkitekturen ofte «rulles» inn i en tilbakevendende enhet, for eksempel følgende:
De «rullede» enhetene du kan se i arkitekturdiagrammer kan derfor være villedende liten. Når du ruller ut dem, vil nettverket ofte være ganske dypt!
Lang-korttidsminne (LSTM)
LSTM er en spesiell type RNN som er designet for å takle det forsvinnende / eksploderende gradientproblemet.
Når du trener et tradisjonelt RNN, lider nettverket ofte av forsvinnende / eksploderende gradienter: å rulle ut en tilbakevendende enhet resulterer i et veldig dypt nettverk! Hvis du går gjennom algoritmen for backpropagation ved hjelp av tradisjonelle RNN-arkitekturer, vil de tidligere lagene bli mindre og mindre viktige når vi forplanter oss gjennom nettverket. Dette gjør tradisjonelle RNN-er tilbøyelige til å glemme informasjon, spesielt data som vises mange tidssprang før den nåværende tiden.
Et eksempel på en LSTM-celle er illustrert slik:
Denne strukturen ligner på den tradisjonelle RNN-utrullede enheten, men nøkkelforskjellen med LSTM er portene: inngangsport, utgangsport og glemsport. Funksjonen til disse portene er godt beskrevet av navnene:
- inngangsport styrer data som kommer inn i cellen
- glem gate styrer i hvilken grad data forblir i cellen
- utgangsport styrer utgangen til cellen via aktiveringsfunksjonen
Dette github IO-innlegget er en flott introduksjon til det grunnleggende om LSTM. Det gjør også en fantastisk jobb med å forklare intuisjonen bak matematikken til en LSTM.
Egenskaper og et eksempel på bruk av RNN
Tilbakemeldingsløkkene gir tilbakevendende nevrale nettverk bedre til tidsmessige utfordringer. Tiden blir tatt med i arkitekturen deres!
La oss utforske et eksempel:
Kanskje du bruker et nettverk for å forutsi neste ord i en setning. Si at du får inngangene:
Sultende, Alice kjører til nærmeste butikk for å kjøpe [prediksjon]
Et tilbakevendende nevrale nettverk kan glemme det første ordet «sulter» mens en LSTM ideelt sett vil forplante den. En LSTM vil derfor bruke konteksten den hørte tidligere i setningen til å gjette «mat», mens en RNN kan gjette alt som er kjøpt i en butikk, spesielt gitt en lang setning eller flere setninger.
Gatemekanismene som tillater denne typen minne forklares godt av @StatsSorceress her: Glem laget i et tilbakevendende nevralt nettverk (RNN) –
RNNs er designet for å håndtere sekvenser. Dette kan brukes til å analysere video (sekvenser av bilder), skriving / tale (ordsekvenser) osv.
LSTM-er er designet for å la viktig informasjon vare over tid. RNN-er vil ofte «glemme» over tid.
FFNN-er er minneløse systemer; etter å ha behandlet noen innspill glemmer de alt om den inngangen. Si for eksempel at vi trener et FFNN som tar 5 ord som innganger og forutsier neste utgang. Denne modellen vil da motta innspill fra eksemplet ovenfor:
nærmeste butikk å kjøpe [prediksjon] .
Dette mister tydelig kontekst, og vi ville få et dårlig resultat.
Nå kan du spørre, hva om vi laget et FFNN som tok mange innganger slik at det inkluderte ordet «sulter» i inngangene? Med andre ord, kunne vi ikke øke antall innganger til et FFNN for å tilstrekkelig representere tidligere data?
Svaret er ja, men denne metoden er både ineffektiv og ofte upraktisk. Si for eksempel at vi trenger å huske kontekst et helt avsnitt tilbake. Vi trenger et veldig stort FFNN! Dessuten, hvordan vet vi hvor mange ord vi ønsker som kontekst? Ville 20 være tilstrekkelig? 30? 100? LSTM-arkitekturen eliminerer disse problemene helt ved å la nettverket administrere et forbigående minne. Dette problemet forverres av videobehandlingsutfordringer fordi hver ramme vil kreve betydelig flere innganger enn NLP-oppgaver.
Vær imidlertid oppmerksom på at LSTM-enheter iboende er mer beregningsmessig komplekse enn enheter av et FFNN, så trening av dem vanskeligere og tar mer tid. Til tross for disse ulempene, garanterer deres suksess i tidsmessige datautfordringer deres bruk over FFNN.