Wat is het verschil tussen feed-forward neuraal netwerk en LSTM ? Hoe verschillen ze in hun architectuur?
Antwoord
Een feed-forward neuraal netwerk ziet er als volgt uit:
invoer -> verborgen laag 1 -> verborgen laag 2 -> … -> verborgen laag k -> uitvoer.
Elke laag kan een ander aantal neuronen hebben, maar dat is de architectuur .
Een LSTM (long-short term memory cell) is een speciaal soort knooppunt binnen een neuraal netwerk. Het kan in een feedforward neuraal netwerk worden geplaatst, en dat is meestal ook zo . Wanneer dat gebeurt, wordt het feedforward neurale netwerk een LSTM genoemd (verwarrend!).
Dus hoe werkt een LSTM? Bekijk hier mijn antwoord: Vergeet laag in een recurrent neuraal netwerk (RNN) –
tl; dr: een LSTM-cel heeft drie poorten, die elk worden gebruikt om de invoer op de een of andere manier te moduleren: een invoerpoort, een vergeetpoort en een uitvoerpoort. Het heeft een “geheugen” en een uitvoer die door de poorten worden gewijzigd. Dat wil zeggen, binnen een enkele LSTM-cel:
(input vorige celstatus) -> (invoer & poorten vergeten) -> (update celstatus)
(invoer & vorige celstatus & bijgewerkte celstatus) -> (uitvoerpoort)
U kunt deze cellen in veel verschillende configuraties stapelen. Er is dus geen enkel “LSTM-netwerk” – eerder een set van vele mogelijke architecturen die kunnen worden gebouwd op basis van deze basisknooppunten.
Ik hoop dat je hiermee aan de slag gaat!
Opmerkingen
- Heel erg bedankt voor je antwoord, maar kun je wat afbeeldingen toevoegen om mijn begrip van de architectuur te verbeteren
- Hoe zit het met terugpropogatie in het feed-forward-netwerk komt het voor in feed forward netwerk
- Hallo @codezcar, er zijn afbeeldingen van de LSTM in mijn antwoord die ik heb gelinkt. Voor een feedforward neuraal netwerk is een afbeelding hier: medium.com/random-techpark/… Ja, jij kan backpropagation gebruiken om de optimale gewichten te vinden in elk type neuraal netwerk (feed forward, LSTM, GRU, … wat dan ook!).
Antwoord
Zoals vermeld door Philipp, helpen netwerken met feedbackloops bij het modelleren van tijd in de gegevens.
Je zou hier willen kijken voor een overzicht van verschillende NN-architecturen: https://i.stack.imgur.com/LgmYv.png
Answer
Feedforwardnetwerken zijn netwerken waarbij elk knooppunt is verbonden met alleen knooppunten van de volgende laag. Ze hebben geen cirkel-verbindingen. Gegevens kunnen alleen zonder lussen van invoer naar uitvoer reizen. Voorbeelden zijn Simple Layer Perceptron of Multilayer Perceptrion. Convolutionele neurale netwerken zijn ook puur feed-forward-netwerken.
In tegenstelling tot dat zijn terugkerende neurale netwerken. LSTM is er een van. Deze RNNs kunnen ook “zijwaarts” worden verbonden. Dit betekent dat uw gegevens niet alleen vooruit naar de volgende laag kunnen gaan, maar ook naar andere knooppunten in dezelfde laag of achteruit. Van een architectuur standpunt dat betekent dat hoewel je een netwerk hebt met misschien maar één verborgen laag, je “diepte” krijgt door lussen toe te voegen aan knooppunten in die laag. Meestal vertegenwoordigen deze “tijd” in de gegevens.
Deze afbeelding toont wat ik bedoel met “diepte” via feedbackloops: https://en.wikipedia.org/wiki/Recurrent_neural_network#/media/File:Recurrent_neural_network_unfold.svg
Hoewel het technisch gezien een knooppunt in je laagarchitectuur, het wordt dieper en dieper naarmate je meer lussen toevoegt
Antwoord
Ik wil enige intuïtie op hoog niveau achter LSTM-netwerken bespreken. Hier zijn enkele vragen om de waarom aspecten te onderzoeken:
- Waarom / wanneer zouden we een LSTM gebruiken via een feed forward neuraal netwerk (FFNN)?
- Wat zijn de voor- en nadelen van LSTMs en hoe verhouden ze zich tot FFNN?
- Waarin verschillen ze van traditionele recurrente neurale netwerken (RNNs)?
Feed Forward Neural Networks (FFNN)
Laten we eerst eens kijken naar een standaard FFNN met architectuur:
Zoals u waarschijnlijk weet, neemt deze FFNN drie inputs, verwerkt ze met behulp van de verborgen laag en produceert twee outputs. We kunnen deze architectuur uitbreiden om meer verborgen lagen op te nemen, maar het basisconcept is nog steeds van kracht: inputs komen binnen, ze worden in één richting verwerkt en ze worden aan het einde uitgevoerd.
Dit concept wordt heel goed uitgelegd door andere artikelen, dus ik zal niet veel meer in detail treden.De belangrijkste afweging is:
De primaire voorwaarde die FFNN scheidt van terugkerende architecturen is dat de input naar een neuron moet komen van de laag vóór dat neuron.
Terugkerende neurale netwerken (RNN)
Terugkerende neurale netwerken zijn wiskundig gezien vrij gelijkaardig aan FFNN-modellen. Hun belangrijkste verschil is dat de beperking op FFNN niet langer wordt toegepast:
Invoer naar een neuron kan van elke andere laag komen.
Je zult vaak zien dat deze architectuur vaak wordt “gerold” in een terugkerende eenheid, zoals de volgende:
De “opgerolde” eenheden die u in architectuurdiagrammen kunt zien, kunnen daarom bedrieglijk klein. Wanneer je ze uitrolt, zal het netwerk vaak behoorlijk diep zijn!
Langetermijngeheugen (LSTM)
LSTMs zijn een speciaal type RNN die zijn ontworpen om het verdwijnende / exploderende gradiëntprobleem aan te pakken.
Wanneer je een traditionele RNN traint, lijdt het netwerk vaak aan verdwijnende / exploderende gradiënten: het uitrollen van een terugkerende eenheid resulteert in een zeer diep netwerk! Als je het backpropagation-algoritme doorloopt met traditionele RNN-architecturen, zullen de eerdere lagen steeds minder belangrijk worden naarmate we ons door het netwerk verspreiden. Dit maakt traditionele RNNs vatbaar voor het vergeten van informatie, met name gegevens die veel tijdstappen vóór de huidige tijd verschijnen.
Een voorbeeld van een LSTM-cel wordt als zodanig geïllustreerd:
Deze structuur is vergelijkbaar met de traditionele RNN-uitgerolde eenheid, maar het belangrijkste verschil met de LSTM zijn de poorten: ingangspoort, uitgangspoort en poort vergeten. De functie van deze poorten wordt goed beschreven met hun namen:
- invoerpoort beheert de gegevens die de cel binnenkomen
- poort vergeten bepaalt de mate waarin gegevens in de cel blijven
- output gate bestuurt de output van de cel via de activeringsfunctie
Dit github IO-bericht is een geweldige inleiding tot de basisprincipes van LSTMs. Het verklaart ook geweldig de intuïtie achter de wiskunde van een LSTM.
Eigenschappen en een voorbeeldtoepassing van RNN
De feedbackloops lenen terugkerende neurale netwerken beter voor tijdelijke uitdagingen. Tijd is in hun architectuur verwerkt!
Laten we een voorbeeld onderzoeken:
Misschien gebruikt u een netwerk om het volgende woord in een zin te voorspellen. Stel dat u de invoer krijgt:
Starving, Alice rijdt naar de dichtstbijzijnde winkel om te kopen [voorspelling]
Een terugkerend neuraal netwerk kan het eerste woord vergeten “uitgehongerd” terwijl een LSTM het idealiter zou verspreiden. Een LSTM zou daarom de context gebruiken die hij eerder in de zin hoorde om “voedsel” te raden, terwijl een RNN alles zou kunnen raden dat in een winkel wordt gekocht, vooral bij een lange zin of meerdere zinnen.
De poortmechanismen die dit type geheugen mogelijk maken, wordt goed uitgelegd door @StatsSorceress hier: Vergeet laag in een recurrent neuraal netwerk (RNN) –
RNNs zijn ontworpen om reeksen te verwerken. Dit kan worden gebruikt om video (reeksen afbeeldingen), schrijven / spraak (reeksen woorden) te analyseren , enz.
LSTMs zijn ontworpen om belangrijke informatie in de loop van de tijd te behouden. RNNs zullen na verloop van tijd vaak “vergeten”.
FFNNs zijn geheugenloze systemen; na het verwerken van wat invoer, vergeten ze alles over die invoer. Stel dat we bijvoorbeeld een FFNN trainen die 5 woorden als invoer nodig heeft en de volgende uitvoer voorspelt. Dit model zou dan de input ontvangen van het bovenstaande voorbeeld:
de dichtstbijzijnde winkel om te kopen [voorspelling] .
Dit verliest duidelijk de context, en we zou een slecht resultaat krijgen.
Nu zou je je kunnen afvragen, wat als we een FFNN zouden maken die veel invoer nodig had, zodat het woord “uitgehongerd” in zijn invoer was opgenomen? Met andere woorden, zouden we het aantal ingangen naar een FFNN niet kunnen verhogen om eerdere gegevens voldoende weer te geven?
Het antwoord is ja, maar deze methode is zowel inefficiënt als vaak onpraktisch. Stel dat we de context van een hele alinea terug moeten onthouden. We zouden een heel grote FFNN nodig hebben! Bovendien, hoe weten we hoeveel woorden we terug willen als context? Zou 20 voldoende zijn? 30? 100? De LSTM-architectuur elimineert deze problemen volledig door het netwerk een tijdelijk geheugen te laten beheren. Dit probleem wordt verergerd door uitdagingen op het gebied van videoverwerking, omdat elk frame aanzienlijk meer invoer nodig heeft dan NLP-taken.
Merk echter op dat LSTM-eenheden inherent rekenkundig complexer zijn dan eenheden van een FFNN, dus het trainen ervan is vaak moeilijker en kost meer tijd. Ondanks deze nadelen rechtvaardigt hun succes bij temporele gegevensuitdagingen duidelijk hun gebruik boven FFNN.