Gestapelde netwerken voor lang kortetermijngeheugen

Gestapelde netwerken voor lang kortetermijngeheugen

Zachte kennismaking met de Stacked LSTM
met voorbeeldcode in Python.

Het originele LSTM-model bestaat uit een enkele verborgen LSTM-laag, gevolgd door een standaard feedforward-uitvoerlaag.

De Stacked LSTM is een uitbreiding op dit model dat meerdere verborgen LSTM-lagen heeft, waarbij elke laag meerdere geheugencellen bevat.

In dit bericht ontdek je de Stacked LSTM-modelarchitectuur.

Na het voltooien van deze tutorial weet je:

  • Het voordeel van diepe neurale netwerkarchitecturen.
  • De gestapelde LSTM terugkerende neurale netwerkarchitectuur.
  • Hoe gestapelde LSTM's in Python met Keras te implementeren.

Geef uw project een kickstart met mijn nieuwe boek Long Short-Term Memory Networks With Python, inclusief stap-voor-stap tutorials en de Python-broncode bestanden voor alle voorbeelden.

Laten we beginnen.

Zachte introductie tot gestapelde netwerken met lang kortetermijngeheugen

Zachte introductie tot gestapelde netwerken voor lang kortetermijngeheugen
Foto door Joost Markerink, enkele rechten voorbehouden.

Overzicht

Dit bericht is opgedeeld in 3 delen, dit zijn:

  1. Waarom de diepte vergroten?
  2. Gestapelde LSTM-architectuur
  3. Implementeer gestapelde LSTM's in Keras

Waarom de diepte vergroten?

Het stapelen van verborgen LSTM-lagen maakt het model dieper, waardoor de beschrijving nauwkeuriger wordt verdiend als een techniek voor diep leren.

Het is de diepte van neurale netwerken die over het algemeen wordt toegeschreven aan het succes van de aanpak van een breed scala aan uitdagende voorspellingsproblemen.

[the success of deep neural networks] wordt gewoonlijk toegeschreven aan de hiërarchie die wordt geïntroduceerd vanwege de verschillende lagen. Elke laag verwerkt een deel van de taak die we willen oplossen en geeft dit door aan de volgende. In die zin kan de DNN worden gezien als een verwerkingspijplijn, waarin elke laag een deel van de taak oplost alvorens deze door te geven aan de volgende, totdat uiteindelijk de laatste laag de output levert.

- Training en analyse van diepe terugkerende neurale netwerken, 2013

Extra verborgen lagen kunnen worden toegevoegd aan een Multilayer Perceptron neuraal netwerk om het dieper te maken. De extra verborgen lagen zijn bedoeld om de geleerde representatie van eerdere lagen te combineren en nieuwe representaties te creëren op een hoog abstractieniveau. Bijvoorbeeld van lijnen tot vormen tot objecten.

Een voldoende grote enkele verborgen laag Multilayer Perceptron kan worden gebruikt om de meeste functies te benaderen. Door de diepte van het netwerk te vergroten, ontstaat een alternatieve oplossing waarvoor minder neuronen nodig zijn en die sneller traint. Uiteindelijk is het toevoegen van diepte een soort representatieve optimalisatie.

Deep learning is gebaseerd op de hypothese dat een diep, hiërarchisch model exponentieel efficiënter kan zijn in het weergeven van sommige functies dan een oppervlakkig model.

- Hoe diepe terugkerende neurale netwerken te construeren, 2013.

Hulp nodig met LSTM's voor sequentievoorspelling?

Volg mijn gratis 7-daagse e-mailcursus en ontdek 6 verschillende LSTM-architecturen (met code).

Klik om u aan te melden en ontvang ook een gratis pdf-e-boekversie van de cursus.

Start nu uw GRATIS minicursus!

Gestapelde LSTM-architectuur

Dezelfde voordelen kunnen worden benut met LSTM's.

Aangezien LSTM's op sequentiegegevens werken, betekent dit dat de toevoeging van lagen in de loop van de tijd abstractieniveaus van invoerwaarnemingen toevoegt. In feite worden observaties in de tijd verdeeld of het probleem op verschillende tijdschalen weergegeven.

… Een diepe RNN opbouwen door meerdere terugkerende verborgen toestanden op elkaar te stapelen. Deze benadering maakt het mogelijk dat de verborgen toestand op elk niveau op een verschillende tijdschaal werkt

- Hoe diepe terugkerende neurale netwerken te construeren, 2013

Gestapelde LSTM's of Deep LSTM's werden geïntroduceerd door Graves, et al. in hun toepassing van LSTM's op spraakherkenning, waarmee ze een benchmark verslaan voor een uitdagend standaardprobleem.

RNN's zijn inherent diep in de tijd, aangezien hun verborgen toestand een functie is van alle voorgaande verborgen toestanden. De vraag die deze paper inspireerde, was of RNN's ook kunnen profiteren van diepte in de ruimte; dat wil zeggen door meerdere terugkerende verborgen lagen op elkaar te stapelen, net zoals feedforward-lagen worden gestapeld in conventionele diepe netwerken.

- Spraakherkenning met diepe terugkerende neurale netwerken, 2013

In hetzelfde werk ontdekten ze dat de diepte van het netwerk belangrijker was dan het aantal geheugencellen in een bepaalde laag om vaardigheid te modelleren.

Gestapelde LSTM's zijn nu een stabiele techniek voor uitdagende sequentievoorspellingsproblemen. Een gestapelde LSTM-architectuur kan worden gedefinieerd als een LSTM-model dat uit meerdere LSTM-lagen bestaat. Een LSTM-laag hierboven biedt een sequentie-uitvoer in plaats van een enkele waarde-uitvoer naar de LSTM-laag eronder. Specifiek één uitgang per invoertijdstap, in plaats van één uitvoertijdstap voor alle invoertijdstappen.

Gestapelde lange-termijngeheugenarchiectuur

Gestapelde lange-termijngeheugenarchiectuur

Implementeer gestapelde LSTM's in Keras

We kunnen eenvoudig gestapelde LSTM-modellen maken in de deep learning-bibliotheek van Keras Python

Elke LSTM-geheugencel vereist een 3D-ingang. Wanneer een LSTM één invoerreeks van tijdstappen verwerkt, zal elke geheugencel een enkele waarde voor de hele reeks als een 2D-array uitvoeren.

We kunnen dit hieronder demonstreren met een model met een enkele verborgen LSTM-laag die ook de uitvoerlaag is.

De invoerreeks heeft 3 waarden. Als u het voorbeeld uitvoert, wordt een enkele waarde voor de invoersequentie uitgevoerd als een 2D-array.

Om LSTM-lagen te stapelen, moeten we de configuratie van de eerdere LSTM-laag wijzigen om een ​​3D-array uit te voeren als invoer voor de volgende laag.

We kunnen dit doen door het argument return_sequences op de laag in te stellen op True (standaard ingesteld op False). Hiermee wordt één uitvoer geretourneerd voor elke invoertijdstap en wordt een 3D-array geboden.
Hieronder ziet u hetzelfde voorbeeld als hierboven met return_sequences = True.

Als u het voorbeeld uitvoert, wordt een enkele waarde uitgevoerd voor elke tijdstap in de invoervolgorde.

Hieronder ziet u een voorbeeld van het definiëren van een Stacked LSTM met twee verborgen lagen:

We kunnen doorgaan met het toevoegen van verborgen LSTM-lagen zolang de voorgaande LSTM-laag een 3D-uitvoer levert als invoer voor de volgende laag; hieronder is bijvoorbeeld een gestapelde LSTM met 4 verborgen lagen.

Verder lezen

Deze sectie biedt meer bronnen over het onderwerp als u dieper zoekt.

Overzicht

In dit bericht heb je de gestapelde netwerkarchitectuur voor lang kortetermijngeheugen ontdekt.

Concreet heb je geleerd:

  • Het voordeel van diepe neurale netwerkarchitecturen.
  • De gestapelde LSTM terugkerende neurale netwerkarchitectuur.
  • Hoe gestapelde LSTM's in Python met Keras te implementeren.

Heb je nog vragen?
Stel je vragen in de comments hieronder en ik zal mijn best doen om deze te beantwoorden.

Ontwikkel vandaag nog LSTM's voor sequentievoorspelling!

Lange-termijngeheugennetwerken met Python

Ontwikkel uw eigen LSTM-modellen in enkele minuten

... met slechts een paar regels python-code

Ontdek hoe in mijn nieuwe e-boek:
Lange-termijngeheugennetwerken met Python

Het zorgt voor zelfstudie tutorials over onderwerpen als:
CNN LSTM's, Encoder-Decoder LSTM's, generatieve modellen, gegevensvoorbereiding, voorspellingen doen en veel meer...

Breng eindelijk LSTM terugkerende neurale netwerken naar
Uw projecten voor sequentievoorspellingen

Sla de academici over. Alleen resultaten.

Zie wat erin zit

Du kan också vara intresserad av