Recurrent neural networks rnn

Sequentiële data en geheugen

Recurrent Neural Networks (RNN's) zijn een klasse van neurale netwerken die zijn ontworpen voor sequentiële data, zoals tekst, spraak en tijdreeksen. Anders dan feedforward netwerken hebben RNN's terugkoppelingen: de uitvoer van een neuron wordt niet alleen naar de volgende laag gestuurd, maar ook terug naar zichzelf of naar andere neuronen in dezelfde laag. Hierdoor heeft het netwerk een vorm van geheugen. Op elk tijdstip t neemt het netwerk een invoer x_t en de verborgen toestand h_{t-1} van het vorige tijdstip, en berekent een nieuwe verborgen toestand h_t. Deze wordt gebruikt voor de uitvoer en doorgegeven aan het volgende tijdstip. RNN's kunnen in principe informatie over lange afstanden onthouden, maar in de praktijk lukt dat niet goed door de vanishing gradient en exploding gradient problemen. Bij backpropagation through time worden gradiënten vele malen vermenigvuldigd, waardoor ze exploderen of verdwijnen. Dit maakt het moeilijk om langetermijnafhankelijkheden te leren. RNN's worden gebruikt voor taalmodellering, machine translation, spraakherkenning en het voorspellen van tijdreeksen. Ze zijn de basis voor meer geavanceerde architecturen zoals LSTM en GRU.

Varianten en beperkingen

Er bestaan verschillende varianten van RNN's. Bidirectionele RNN's verwerken de sequentie in beide richtingen, wat nuttig is voor taken waarbij de hele context belangrijk is, zoals named entity recognition. Deep RNN's stapelen meerdere RNN-lagen op elkaar. Encoder-decoder architecturen gebruiken een RNN om de invoer te coderen en een andere om de uitvoer te decoderen; dit is de basis van sequence-to-sequence modellen voor vertaling. RNN's hebben echter beperkingen. Ze zijn moeilijk paralleliseerbaar, omdat de berekening per tijdstip afhankelijk is van het vorige. Dit maakt ze traag op moderne hardware. Ze hebben moeite met lange sequenties door de vanishing gradient. LSTM en GRU lossen dit op met poorten, maar zijn nog steeds sequentieel. Transformers hebben RNN's grotendeels vervangen in NLP, omdat ze paralleliseerbaar zijn en beter omgaan met lange afstanden. RNN's worden nog steeds gebruikt in toepassingen waar sequentiële verwerking essentieel is en de sequenties niet te lang zijn, zoals real-time spraakherkenning en het voorspellen van sensordata. Ze blijven een belangrijk concept in de studie van deep learning.

Dit toepassen in
jouw bedrijf?

We vertalen het naar jouw processen en laten binnen een week een werkend prototype zien.