DEEP LEARNING LESSON 11 RECURRENT NEURAL NETWORKS

Problems With Basic RNNs

Basic RNNs can process sequence data and carry information through a hidden state, but they have important limitations. The biggest problem is that they can struggle to remember information from far earlier in a long sequence.

Why Do Basic RNNs Have Problems?

Remember how an RNN processes a sequence:

Input 1
   ↓
RNN
   ↓
Hidden State 1
   ↓
Input 2 + Hidden State 1
   ↓
RNN
   ↓
Hidden State 2
   ↓
Input 3 + Hidden State 2
   ↓
RNN
   ↓
Hidden State 3
   ↓
...

Information has to pass through many RNN steps.

When the sequence is very long, information from the beginning can become difficult to preserve until the end.

Problem 1 — Long-Term Dependencies

A long-term dependency happens when the current output depends on information that appeared much earlier in the sequence.

Consider:

The boy who lived in a small village
for many years and studied every day
eventually became a doctor.

The word "boy" appears near the beginning, but information about it may still be important much later.

With a long sequence:

Important Information
        ↓
        ↓
        ↓
      many
      steps
        ↓
        ↓
        ↓
Current Output

A basic RNN may struggle to preserve that early information.

Simple Example

Look at these two sentences:

1. The movie was good.

2. The movie was not good.

In the second sentence, the word "not" changes the meaning of "good".

Because "not" is close to "good", a basic RNN usually has a much easier time using this information.

Now imagine:

The movie was not
[100 other words]
good.

Now the important word is much farther away. The RNN has to carry that information through many more steps.

This is where basic RNNs can struggle.

Problem 2 — Vanishing Gradient

The vanishing gradient problem happens during training.

Remember that backpropagation sends gradients backward through the network so the model can update its weights.

Output
  ↓
Gradient
  ↓
Previous Step
  ↓
Previous Step
  ↓
Previous Step
  ↓
...
  ↓
Early Step

In a basic RNN, gradients are repeatedly multiplied while moving backward through many time steps.

If those values become smaller and smaller, the gradient can become extremely close to zero.

0.5
 ↓
0.25
 ↓
0.125
 ↓
0.0625
 ↓
0.03125
 ↓
...
 ↓
Very close to 0

When the gradient becomes very small, earlier parts of the sequence receive almost no useful learning signal.

Why Is Vanishing Gradient a Problem?

The neural network learns by updating its weights using gradients.

Weight Update
      ↓
Learning
      ↓
Better Predictions

But if the gradient becomes almost zero:

Gradient ≈ 0
     ↓
Very small weight update
     ↓
Very little learning
     ↓
Early information is difficult to learn

So the RNN may have difficulty learning relationships between events that are far apart in the sequence.

Problem 3 — Exploding Gradient

The opposite problem can also happen.

Instead of gradients becoming smaller, they can become extremely large.

2
 ↓
4
 ↓
8
 ↓
16
 ↓
32
 ↓
64
 ↓
Very large value

This is called the exploding gradient problem.

Very large gradients can cause extremely large weight updates.

Huge Gradient
      ↓
Huge Weight Update
      ↓
Unstable Training
      ↓
Model can behave badly

So basic RNNs can suffer from both:

Vanishing Gradient
        ↓
Gradient becomes too small


Exploding Gradient
        ↓
Gradient becomes too large

Simple Example of the Problem

Imagine that during backpropagation a value is repeatedly multiplied by 0.5.

1 × 0.5 = 0.5

0.5 × 0.5 = 0.25

0.25 × 0.5 = 0.125

0.125 × 0.5 = 0.0625

0.0625 × 0.5 = 0.03125

After many steps, the value becomes extremely small.

That is the basic idea behind the vanishing gradient problem.

The exact behavior in a real RNN is more complicated, but this simple example shows why repeatedly multiplying values smaller than 1 can cause problems.

Problem 4 — Weak Long-Term Memory

Basic RNNs are often good at using recent information.

Recent Input
     ↓
Hidden State
     ↓
Current Output

But information from many steps ago may become harder to preserve.

Old Information
      ↓
      ↓
      ↓
Many RNN Steps
      ↓
      ↓
Current Output

This is why basic RNNs are not ideal for every type of sequence problem.

Short Sequence vs Long Sequence

For a short sequence:

Input
 ↓
Input
 ↓
Input
 ↓
Output

Information does not have to travel very far.

For a long sequence:

Input
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
 ↓
Output

Information has to travel through many steps.

The second case is much harder for a basic RNN.

Main Problems at a Glance

Basic RNN
   │
   ├── Long-term dependencies
   │
   ├── Vanishing gradients
   │
   ├── Exploding gradients
   │
   └── Difficulty preserving old information

These problems become especially important when working with long sequences.

How Are These Problems Addressed?

These limitations led to improved recurrent architectures such as:

LSTM
Long Short-Term Memory


GRU
Gated Recurrent Unit

These architectures introduce mechanisms called gates that help control what information should be kept, updated, or discarded.

Basic RNN
     ↓
Simple hidden state


LSTM / GRU
     ↓
Controlled information flow
     ↓
Better handling of long-term dependencies

You do not need to understand the gates yet. The important point is that LSTM and GRU were designed to address major weaknesses of basic RNNs.

Simple Python Example

We can create a basic RNN using TensorFlow/Keras:

import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.SimpleRNN(4)
])

model.build(input_shape=(None, 100, 1))

model.summary()

Here the sequence length is:

100 time steps

The RNN has to process information across all those steps.

A longer sequence does not automatically mean the model will fail. It means that basic RNN limitations become more relevant as dependencies become longer and harder to learn.

Understand the Python Code

import tensorflow as tf

This imports TensorFlow.

tf.keras.Sequential([
    tf.keras.layers.SimpleRNN(4)
])

This creates a simple RNN with 4 hidden units.

input_shape=(None, 100, 1)

The important dimensions are:

None
↓
Number of samples can vary

100
↓
100 time steps

1
↓
One feature at each time step

The example shows why sequence length matters: the RNN must repeatedly carry information through those time steps.

Two Simple Examples

Example 1 — Short dependency

The movie was not good.

"not" and "good" are close together, so the RNN has a relatively short distance over which to carry the information.

Example 2 — Long dependency

The movie was not
[very long sequence]
good.

Now the information has to survive many more recurrent steps. This is much harder for a basic RNN.

The Main Idea

Basic RNN

Current Input
      +
Previous Hidden State
      ↓
     RNN
      ↓
New Hidden State
      ↓
Next Step
      ↓
Next Step
      ↓
Next Step
      ↓
Current Output

The same recurrent process that gives the RNN its ability to handle sequences also creates a challenge: information and gradients must travel through many steps.

When the sequence is long, that can lead to vanishing gradients, exploding gradients, and difficulty learning long-term dependencies.

Final Summary

Problems With Basic RNNs

1. Long-term dependencies
   ↓
   Difficult to preserve old information

2. Vanishing gradients
   ↓
   Gradients become extremely small

3. Exploding gradients
   ↓
   Gradients become extremely large

4. Weak long-term memory
   ↓
   Earlier information can become difficult
   to use effectively

Solution
   ↓
LSTM and GRU

The most important point to remember is:

Basic RNNs can remember information,
but they struggle when important information
must be carried across many time steps.
QUICK CHECK

Check Your Understanding

1. What is the biggest problem with basic RNNs?
They can struggle to learn long-term dependencies.

2. What is vanishing gradient?
A situation where gradients become extremely small during backpropagation.

3. What is exploding gradient?
A situation where gradients become extremely large.

4. Why are long sequences difficult for basic RNNs?
Information and gradients have to pass through many recurrent steps.

5. What architectures help with these problems?
LSTM and GRU.