146
Recurrent Neural Networks Amir H. Payberah [email protected] 26/11/2019

Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks

Amir H. [email protected]

26/11/2019

Page 2: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

The Course Web Page

https://id2223kth.github.io

1 / 82

Page 3: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Where Are We?

2 / 82

Page 4: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Where Are We?

3 / 82

Page 5: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Let’s Start With An Example

4 / 82

Page 6: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

5 / 82

Page 7: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Language Modeling (1/2)

I Language modeling is the task of predicting what word comes next.

6 / 82

Page 8: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Language Modeling (2/2)

I More formally: given a sequence of words x(1), x(2), · · · , x(t), compute the probabilitydistribution of the next word x(t+1):

p(x(t+1) = wj|x(t), · · · x(1))

I wj is a word in vocabulary V = {w1, · · · , wv}.

7 / 82

Page 9: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Language Modeling (2/2)

I More formally: given a sequence of words x(1), x(2), · · · , x(t), compute the probabilitydistribution of the next word x(t+1):

p(x(t+1) = wj|x(t), · · · x(1))

I wj is a word in vocabulary V = {w1, · · · , wv}.

7 / 82

Page 10: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.

• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 11: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.

• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 12: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.

• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 13: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.

• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 14: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.• Unigrams: "the", "students", "opened", "their"

• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 15: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"

• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 16: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"

• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 17: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 18: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models

I the students opened their

I How to learn a Language Model?

I Learn a n-gram Language Model!

I A n-gram is a chunk of n consecutive words.• Unigrams: "the", "students", "opened", "their"• Bigrams: "the students", "students opened", "opened their"• Trigrams: "the students opened", "students opened their"• 4-grams: "the students opened their"

I Collect statistics about how frequent different n-grams are, and use these to predictnext word.

8 / 82

Page 19: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models - Example

I Suppose we are learning a 4-gram Language Model.• x(t+1) depends only on the preceding 3 words {x(t), x(t−1), x(t−2)}.

p(wj|students opened their) =students opened their wj

students opened their

I In the corpus:• "students opened their" occurred 1000 times

• "students opened their books occurred 400 times:p(books|students opened their) = 0.4

• "students opened their exams occurred 100 times:p(exams|students opened their) = 0.1

9 / 82

Page 20: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models - Example

I Suppose we are learning a 4-gram Language Model.• x(t+1) depends only on the preceding 3 words {x(t), x(t−1), x(t−2)}.

p(wj|students opened their) =students opened their wj

students opened their

I In the corpus:• "students opened their" occurred 1000 times

• "students opened their books occurred 400 times:p(books|students opened their) = 0.4

• "students opened their exams occurred 100 times:p(exams|students opened their) = 0.1

9 / 82

Page 21: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models - Example

I Suppose we are learning a 4-gram Language Model.• x(t+1) depends only on the preceding 3 words {x(t), x(t−1), x(t−2)}.

p(wj|students opened their) =students opened their wj

students opened their

I In the corpus:• "students opened their" occurred 1000 times

• "students opened their books occurred 400 times:p(books|students opened their) = 0.4

• "students opened their exams occurred 100 times:p(exams|students opened their) = 0.1

9 / 82

Page 22: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models - Example

I Suppose we are learning a 4-gram Language Model.• x(t+1) depends only on the preceding 3 words {x(t), x(t−1), x(t−2)}.

p(wj|students opened their) =students opened their wj

students opened their

I In the corpus:• "students opened their" occurred 1000 times• "students opened their books occurred 400 times:p(books|students opened their) = 0.4

• "students opened their exams occurred 100 times:p(exams|students opened their) = 0.1

9 / 82

Page 23: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

n-gram Language Models - Example

I Suppose we are learning a 4-gram Language Model.• x(t+1) depends only on the preceding 3 words {x(t), x(t−1), x(t−2)}.

p(wj|students opened their) =students opened their wj

students opened their

I In the corpus:• "students opened their" occurred 1000 times• "students opened their books occurred 400 times:p(books|students opened their) = 0.4

• "students opened their exams occurred 100 times:p(exams|students opened their) = 0.1

9 / 82

Page 24: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Sparsity

p(wj|students opened their) =students opened their wj

students opened their

I What if "students opened their wj" never occurred in data? Then wj has prob-ability 0!

I What if "students opened their" never occurred in data? Then we can’t calcu-late probability for any wj!

I Increasing n makes sparsity problems worse.• Typically we can’t have n bigger than 5.

10 / 82

Page 25: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Sparsity

p(wj|students opened their) =students opened their wj

students opened their

I What if "students opened their wj" never occurred in data? Then wj has prob-ability 0!

I What if "students opened their" never occurred in data? Then we can’t calcu-late probability for any wj!

I Increasing n makes sparsity problems worse.• Typically we can’t have n bigger than 5.

10 / 82

Page 26: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Sparsity

p(wj|students opened their) =students opened their wj

students opened their

I What if "students opened their wj" never occurred in data? Then wj has prob-ability 0!

I What if "students opened their" never occurred in data? Then we can’t calcu-late probability for any wj!

I Increasing n makes sparsity problems worse.• Typically we can’t have n bigger than 5.

10 / 82

Page 27: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Sparsity

p(wj|students opened their) =students opened their wj

students opened their

I What if "students opened their wj" never occurred in data? Then wj has prob-ability 0!

I What if "students opened their" never occurred in data? Then we can’t calcu-late probability for any wj!

I Increasing n makes sparsity problems worse.• Typically we can’t have n bigger than 5.

10 / 82

Page 28: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Storage

p(wj|students opened their) =students opened their wj

students opened their

I For "students opened their wj", we need to store count for all possible 4-grams.

I The model size is in the order of O(exp(n)).

I Increasing n makes model size huge.

11 / 82

Page 29: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Problems with n-gram Language Models - Storage

p(wj|students opened their) =students opened their wj

students opened their

I For "students opened their wj", we need to store count for all possible 4-grams.

I The model size is in the order of O(exp(n)).

I Increasing n makes model size huge.

11 / 82

Page 30: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Can We Build a Neural Language Model? (1/3)

I Recall the Language Modeling task:• Input: sequence of words x(1), x(2), · · · , x(t)• Output: probability dist of the next word p(x(t+1) = wj|x(t), · · · , x(1))

I One-Hot encoding• Represent a categorical variable as a binary vector.• All recodes are zero, except the index of the integer, which is one.• Each embedded word e(t) = Eᵀx(t) is a one-hot vector of size vocabulary size.

12 / 82

Page 31: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Can We Build a Neural Language Model? (1/3)

I Recall the Language Modeling task:• Input: sequence of words x(1), x(2), · · · , x(t)• Output: probability dist of the next word p(x(t+1) = wj|x(t), · · · , x(1))

I One-Hot encoding• Represent a categorical variable as a binary vector.• All recodes are zero, except the index of the integer, which is one.• Each embedded word e(t) = Eᵀx(t) is a one-hot vector of size vocabulary size.

12 / 82

Page 32: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Can We Build a Neural Language Model? (2/3)

I A MLP model• Input: words x(1), x(2), x(3), x(4)

• Input layer: one-hot vectors e(1), e(2), e(3), e(4)

• Hidden layer: h = f(wᵀe), f is an activation function.• Output: y = softmax(vᵀh)

13 / 82

Page 33: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Can We Build a Neural Language Model? (3/3)

I Improvements over n-gram LM:• No sparsity problem• Model size is O(n) not O(exp(n))

I Remaining problems:• It is fixed 4 in our example, which is small• We need a neural architecture that can process

any length input

14 / 82

Page 34: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Can We Build a Neural Language Model? (3/3)

I Improvements over n-gram LM:• No sparsity problem• Model size is O(n) not O(exp(n))

I Remaining problems:• It is fixed 4 in our example, which is small• We need a neural architecture that can process

any length input

14 / 82

Page 35: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (RNN)

15 / 82

Page 36: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (1/4)

I The idea behind Recurrent neural networks (RNN) is to make use of sequential data.

• Until here, we assume that all inputs (and outputs) are independent of each other.• Independent input (output) is a bad idea for many tasks, e.g., predicting the next word

in a sentence (it’s better to know which words came before it).

I They can analyze time series data and predict the future.

I They can work on sequences of arbitrary lengths, rather than on fixed-sized inputs.

16 / 82

Page 37: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (1/4)

I The idea behind Recurrent neural networks (RNN) is to make use of sequential data.

• Until here, we assume that all inputs (and outputs) are independent of each other.

• Independent input (output) is a bad idea for many tasks, e.g., predicting the next wordin a sentence (it’s better to know which words came before it).

I They can analyze time series data and predict the future.

I They can work on sequences of arbitrary lengths, rather than on fixed-sized inputs.

16 / 82

Page 38: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (1/4)

I The idea behind Recurrent neural networks (RNN) is to make use of sequential data.

• Until here, we assume that all inputs (and outputs) are independent of each other.• Independent input (output) is a bad idea for many tasks, e.g., predicting the next word

in a sentence (it’s better to know which words came before it).

I They can analyze time series data and predict the future.

I They can work on sequences of arbitrary lengths, rather than on fixed-sized inputs.

16 / 82

Page 39: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (1/4)

I The idea behind Recurrent neural networks (RNN) is to make use of sequential data.

• Until here, we assume that all inputs (and outputs) are independent of each other.• Independent input (output) is a bad idea for many tasks, e.g., predicting the next word

in a sentence (it’s better to know which words came before it).

I They can analyze time series data and predict the future.

I They can work on sequences of arbitrary lengths, rather than on fixed-sized inputs.

16 / 82

Page 40: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (1/4)

I The idea behind Recurrent neural networks (RNN) is to make use of sequential data.

• Until here, we assume that all inputs (and outputs) are independent of each other.• Independent input (output) is a bad idea for many tasks, e.g., predicting the next word

in a sentence (it’s better to know which words came before it).

I They can analyze time series data and predict the future.

I They can work on sequences of arbitrary lengths, rather than on fixed-sized inputs.

16 / 82

Page 41: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (2/4)

I Neurons in an RNN have connections pointing backward.

I RNNs have memory, which captures information about what has been calculated sofar.

17 / 82

Page 42: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (3/4)

I Unfolding the network: represent a network against the time axis.• We write out the network for the complete sequence.

I For example, if the sequence we care about is a sentence of three words, the networkwould be unfolded into a 3-layer neural network.

• One layer for each word.

18 / 82

Page 43: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (3/4)

I Unfolding the network: represent a network against the time axis.• We write out the network for the complete sequence.

I For example, if the sequence we care about is a sentence of three words, the networkwould be unfolded into a 3-layer neural network.

• One layer for each word.

18 / 82

Page 44: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (4/4)

I h(t) = f(uᵀx(t) + wh(t−1)), where f is an activation function, e.g., tanh or ReLU.

I y(t) = g(vh(t)), where g can be the softmax function.

I cost(y(t), y(t)) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

I y(t) is the correct word at time step t, and y(t) is the prediction.

19 / 82

Page 45: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (4/4)

I h(t) = f(uᵀx(t) + wh(t−1)), where f is an activation function, e.g., tanh or ReLU.

I y(t) = g(vh(t)), where g can be the softmax function.

I cost(y(t), y(t)) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

I y(t) is the correct word at time step t, and y(t) is the prediction.

19 / 82

Page 46: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neural Networks (4/4)

I h(t) = f(uᵀx(t) + wh(t−1)), where f is an activation function, e.g., tanh or ReLU.

I y(t) = g(vh(t)), where g can be the softmax function.

I cost(y(t), y(t)) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

I y(t) is the correct word at time step t, and y(t) is the prediction.

19 / 82

Page 47: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (1/4)

I Each recurrent neuron has three sets of weights: u, w, and v.

20 / 82

Page 48: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (2/4)

I u: the weights for the inputs x(t).

I x(t): is the input at time step t.

I For example, x(1) could be a one-hot vector corresponding to the first word of asentence.

21 / 82

Page 49: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (2/4)

I u: the weights for the inputs x(t).

I x(t): is the input at time step t.

I For example, x(1) could be a one-hot vector corresponding to the first word of asentence.

21 / 82

Page 50: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (3/4)

I w: the weights for the hidden state of the previous time step h(t−1).

I h(t): is the hidden state (memory) at time step t.• h(t) = tanh(uᵀx(t) + wh(t−1))• h(0) is the initial hidden state.

22 / 82

Page 51: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (3/4)

I w: the weights for the hidden state of the previous time step h(t−1).

I h(t): is the hidden state (memory) at time step t.• h(t) = tanh(uᵀx(t) + wh(t−1))• h(0) is the initial hidden state.

22 / 82

Page 52: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (4/4)

I v: the weights for the hidden state of the current time step h(t).

I y(t) is the output at step t.

I y(t) = softmax(vh(t))

I For example, if we wanted to predict the next word in a sentence, it would be avector of probabilities across our vocabulary.

23 / 82

Page 53: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (4/4)

I v: the weights for the hidden state of the current time step h(t).

I y(t) is the output at step t.

I y(t) = softmax(vh(t))

I For example, if we wanted to predict the next word in a sentence, it would be avector of probabilities across our vocabulary.

23 / 82

Page 54: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Recurrent Neurons - Weights (4/4)

I v: the weights for the hidden state of the current time step h(t).

I y(t) is the output at step t.

I y(t) = softmax(vh(t))

I For example, if we wanted to predict the next word in a sentence, it would be avector of probabilities across our vocabulary.

23 / 82

Page 55: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Layers of Recurrent Neurons

I At each time step t, every neuron of a layer receives both the input vector x(t) andthe output vector from the previous time step h(t−1).

h(t) = tanh(uᵀx(t) + wᵀh(t−1))

y(t) = sigmoid(vᵀh(t))

24 / 82

Page 56: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Deep RNN

I Stacking multiple layers of cells gives you a deep RNN.

25 / 82

Page 57: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Let’s Back to Language Model Example

26 / 82

Page 58: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

A RNN Neural Language Model (1/2)

I The input x will be a sequence of words (each x(t) is a single word).

I Each embedded word e(t) = Eᵀx(t) is a one-hot vector of size vocabulary size.

27 / 82

Page 59: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

A RNN Neural Language Model (2/2)

I Let’s recap the equations for the RNN:• h(t) = tanh(uᵀe(t) + wh(t−1))• y(t) = softmax(vh(t))

I The output y(t) is a vector of vocabulary size elements.

I Each element of y(t) represents the probability of thatword being the next word in the sentence.

28 / 82

Page 60: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

A RNN Neural Language Model (2/2)

I Let’s recap the equations for the RNN:• h(t) = tanh(uᵀe(t) + wh(t−1))• y(t) = softmax(vh(t))

I The output y(t) is a vector of vocabulary size elements.

I Each element of y(t) represents the probability of thatword being the next word in the sentence.

28 / 82

Page 61: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

A RNN Neural Language Model (2/2)

I Let’s recap the equations for the RNN:• h(t) = tanh(uᵀe(t) + wh(t−1))• y(t) = softmax(vh(t))

I The output y(t) is a vector of vocabulary size elements.

I Each element of y(t) represents the probability of thatword being the next word in the sentence.

28 / 82

Page 62: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

29 / 82

Page 63: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns

30 / 82

Page 64: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Sequence-to-Vector

I Sequence-to-vector network: takes a sequence of inputs, and ignore all outputs exceptfor the last one.

I E.g., you could feed the network a sequence of words corresponding to a moviereview, and the network would output a sentiment score.

31 / 82

Page 65: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Sequence-to-Vector

I Sequence-to-vector network: takes a sequence of inputs, and ignore all outputs exceptfor the last one.

I E.g., you could feed the network a sequence of words corresponding to a moviereview, and the network would output a sentiment score.

31 / 82

Page 66: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Vector-to-Sequence

I Vector-to-sequence network: takes a single input at the first time step, and let itoutput a sequence.

I E.g., the input could be an image, and the output could be a caption for that image.

32 / 82

Page 67: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Vector-to-Sequence

I Vector-to-sequence network: takes a single input at the first time step, and let itoutput a sequence.

I E.g., the input could be an image, and the output could be a caption for that image.

32 / 82

Page 68: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Sequence-to-Sequence

I Sequence-to-sequence network: takes a sequence of inputs and produce a sequenceof outputs.

I Useful for predicting time series such as stock prices: you feed it the prices over thelast N days, and it must output the prices shifted by one day into the future.

I Here, both input sequences and output sequences have the same length.

33 / 82

Page 69: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Sequence-to-Sequence

I Sequence-to-sequence network: takes a sequence of inputs and produce a sequenceof outputs.

I Useful for predicting time series such as stock prices: you feed it the prices over thelast N days, and it must output the prices shifted by one day into the future.

I Here, both input sequences and output sequences have the same length.

33 / 82

Page 70: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Encoder-Decoder

I Encoder-decoder network: a sequence-to-vector network (encoder), followed by avector-to-sequence network (decoder).

I E.g., translating a sentence from one language to another.

I You would feed the network a sentence in one language, the encoder would convertthis sentence into a single vector representation, and then the decoder would decodethis vector into a sentence in another language.

34 / 82

Page 71: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Design Patterns - Encoder-Decoder

I Encoder-decoder network: a sequence-to-vector network (encoder), followed by avector-to-sequence network (decoder).

I E.g., translating a sentence from one language to another.

I You would feed the network a sentence in one language, the encoder would convertthis sentence into a single vector representation, and then the decoder would decodethis vector into a sentence in another language.

34 / 82

Page 72: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow

35 / 82

Page 73: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow (1/5)

I Forecasting a time series

I E.g., a dataset of 10000 time series, each of them 50 time steps long.

I The goal here is to forecast the value at the next time step (represented by the X)for each of them.

36 / 82

Page 74: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow (2/5)

I Use fully connected network

model = keras.models.Sequential([

keras.layers.Flatten(input_shape=[50, 1]),

keras.layers.Dense(1)

])

model.compile(loss="mse", optimizer="adam")

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

# loss: 0.003993967570985357

37 / 82

Page 75: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow (3/5)

I Simple RNN

model = keras.models.Sequential([

keras.layers.SimpleRNN(1, input_shape=[None, 1])

])

model.compile(loss="mse", optimizer=’adam’)

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

# loss: 0.011026302369932333

38 / 82

Page 76: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow (4/5)

I Deep RNN

model = keras.models.Sequential([

keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),

keras.layers.SimpleRNN(20, return_sequences=True),

keras.layers.SimpleRNN(1)

])

model.compile(loss="mse", optimizer="adam")

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

# loss: 0.003197280486735205

39 / 82

Page 77: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN in TensorFlow (5/5)

I Deep RNN (second implementation)

I Make the second layer return only the last output (no return sequences)

model = keras.models.Sequential([

keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),

keras.layers.SimpleRNN(20),

keras.layers.Dense(1)

])

model.compile(loss="mse", optimizer="adam")

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

# loss: 0.002757748544837038

40 / 82

Page 78: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Training RNNs

41 / 82

Page 79: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Training RNNs

I To train an RNN, we should unroll it through time and then simply use regularbackpropagation.

I This strategy is called backpropagation through time (BPTT).

42 / 82

Page 80: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Backpropagation Through Time (1/3)

I To train the model using BPTT, we go through the following steps:

I 1. Forward pass through the unrolled network (represented by the dashed arrows).

I 2. The cost function is C(ytmin, ytmin+1, · · · , ytmax), where tmin and tmax are thefirst and last output time steps, not counting the ignored outputs.

43 / 82

Page 81: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Backpropagation Through Time (2/3)

I 3. Propagate backward the gradients of that cost function through the unrollednetwork (represented by the solid arrows).

I 4. The model parameters are updated using the gradients computed during BPTT.

44 / 82

Page 82: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Backpropagation Through Time (3/3)

I The gradients flow backward through all the outputs used by the cost function, notjust through the final output.

I For example, in the following figure:• The cost function is computed using the last three outputs, y(2), y(3), and y(4).• Gradients flow through these three outputs, but not through y(0) and y(1).

45 / 82

Page 83: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (1/20)

46 / 82

Page 84: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (2/20)

47 / 82

Page 85: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (3/20)

48 / 82

Page 86: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (4/20)

49 / 82

Page 87: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (5/20)

50 / 82

Page 88: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (6/20)

51 / 82

Page 89: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (7/20)

52 / 82

Page 90: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (8/20)

53 / 82

Page 91: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (9/20)

54 / 82

Page 92: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (10/20)

55 / 82

Page 93: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (11/20)

56 / 82

Page 94: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (12/20)

s(t) = uTx(t) + wh(t−1)

h(t) = tanh(s(t))

z(t) = vh(t)

y(t) = softmax(z(t))

J(t) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

57 / 82

Page 95: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

58 / 82

Page 96: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (13/20)

J(t) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

I We treat the full sequence as one training example.

I The total error E is just the sum of the errors at each time step.

I E.g., E = J(1) + J(2) + · · ·+ J(t)

59 / 82

Page 97: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (13/20)

J(t) = cross entropy(y(t), y(t)) = −∑

y(t)logy(t)

I We treat the full sequence as one training example.

I The total error E is just the sum of the errors at each time step.

I E.g., E = J(1) + J(2) + · · ·+ J(t)

59 / 82

Page 98: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 99: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 100: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 101: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 102: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 103: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (14/20)

I J(t) is the total cost, so we can say that a 1-unit increase in v, w or u will impacteach of J(1), J(2), until J(t) individually.

I The gradient is equal to the sum of the respective gradients at each time step t.

I For example if t = 3 we have: E = J(1) + J(2) + J(3)

∂E

∂v=∑t

∂J(t)

∂v=∂J(3)

∂v+∂J(2)

∂v+∂J(1)

∂v

∂E

∂w=∑t

∂J(t)

∂w=∂J(3)

∂w+∂J(2)

∂w+∂J(1)

∂w

∂E

∂u=∑t

∂J(3)

∂u=∂J(3)

∂u+∂J(2)

∂u+∂J(1)

∂u

60 / 82

Page 104: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (15/20)

I Let’s start with ∂E∂v .

I A change in v will only impact J(3) at time t = 3, because it plays no role incomputing the value of anything other than z(3).

∂E∂v =

∑t

∂J(t)

∂v = ∂J(3)

∂v + ∂J(2)

∂v + ∂J(1)

∂v

∂J(3)

∂v = ∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂v

∂J(2)

∂v = ∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂v

∂J(1)

∂v = ∂J(1)

∂y(1)∂y(1)

∂z(1)∂z(1)

∂v

61 / 82

Page 105: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (15/20)

I Let’s start with ∂E∂v .

I A change in v will only impact J(3) at time t = 3, because it plays no role incomputing the value of anything other than z(3).

∂E∂v =

∑t

∂J(t)

∂v = ∂J(3)

∂v + ∂J(2)

∂v + ∂J(1)

∂v

∂J(3)

∂v = ∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂v

∂J(2)

∂v = ∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂v

∂J(1)

∂v = ∂J(1)

∂y(1)∂y(1)

∂z(1)∂z(1)

∂v

61 / 82

Page 106: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (15/20)

I Let’s start with ∂E∂v .

I A change in v will only impact J(3) at time t = 3, because it plays no role incomputing the value of anything other than z(3).

∂E∂v =

∑t

∂J(t)

∂v = ∂J(3)

∂v + ∂J(2)

∂v + ∂J(1)

∂v

∂J(3)

∂v = ∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂v

∂J(2)

∂v = ∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂v

∂J(1)

∂v = ∂J(1)

∂y(1)∂y(1)

∂z(1)∂z(1)

∂v

61 / 82

Page 107: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (15/20)

I Let’s start with ∂E∂v .

I A change in v will only impact J(3) at time t = 3, because it plays no role incomputing the value of anything other than z(3).

∂E∂v =

∑t

∂J(t)

∂v = ∂J(3)

∂v + ∂J(2)

∂v + ∂J(1)

∂v

∂J(3)

∂v = ∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂v

∂J(2)

∂v = ∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂v

∂J(1)

∂v = ∂J(1)

∂y(1)∂y(1)

∂z(1)∂z(1)

∂v

61 / 82

Page 108: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (16/20)

I Let’s compute the derivatives of ∂J∂w and ∂J

∂u , which are computed the same.

I A change in w at t = 3 will impact our cost J in 3 separate ways:

1. When computing the value of h(1).2. When computing the value of h(2), which depends on h(1).3. When computing the value of h(3), which depends on h(2), which depends on h(1).

62 / 82

Page 109: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (17/20)

I we compute our individual gradients as:

∑t

∂J(t)

∂w = ∂J(3)

∂w + ∂J(2)

∂w + ∂J(1)

∂w

∂J(1)

∂w = ∂J(1)

∂y(1)∂y(1)

∂z(1)∂z(1)

∂h(1)∂h(1)

∂s(1)∂s(1)

∂w

63 / 82

Page 110: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (18/20)

I we compute our individual gradients as:

∑t

∂J(t)

∂w = ∂J(3)

∂w + ∂J(2)

∂w + ∂J(1)

∂w

∂J(2)

∂w = ∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂h(2)∂h(2)

∂s(2)∂s(2)

∂w +

∂J(2)

∂y(2)∂y(2)

∂z(2)∂z(2)

∂h(2)∂h(2)

∂s(2)∂s(2)

∂h(1)∂h(1)

∂s(1)∂s(1)

∂w

64 / 82

Page 111: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (19/20)

I we compute our individual gradients as:

∑t

∂J(t)

∂w = ∂J(3)

∂w + ∂J(2)

∂w + ∂J(1)

∂w

∂J(3)

∂w = ∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂h(3)∂h(3)

∂s(3)∂s(3)

∂w +

∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂h(3)∂h(3)

∂s(3)∂s(3)

∂h(2)∂h(2)

∂s(2)∂s(2)

∂w +

∂J(3)

∂y(3)∂y(3)

∂z(3)∂z(3)

∂h(3)∂h(3)

∂s(3)∂s(3)

∂h(2)∂h(2)

∂s(2)∂s(2)

∂h(1)∂h(1)

∂s(1)∂s(1)

∂w

65 / 82

Page 112: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

BPTT Step by Step (20/20)

I More generally, a change in w will impact our cost J(t) on t separate occasions.

∂J(t)

∂w=

t∑k=1

∂J(t)

∂y(t)∂y(t)

∂z(t)∂z(t)

∂h(t)

(t∏

j=k+1

∂h(j)

∂s(j)∂s(j)

∂h(j−1)

)∂h(k)

∂s(k)∂s(k)

∂w

66 / 82

Page 113: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

LSTM

67 / 82

Page 114: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Problems

I Sometimes we only need to look at recent information to perform the present task.• E.g., predicting the next word based on the previous ones.

I In such cases, where the gap between the relevant information and the place thatit’s needed is small, RNNs can learn to use the past information.

I But, as that gap grows, RNNs become unable to learn to connect the information.

I RNNs may suffer from the vanishing/exploding gradients problem.

I To solve these problem, long short-term memory (LSTM) have been introduced.

I In LSTM, the network can learn what to store and what to throw away.

68 / 82

Page 115: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Problems

I Sometimes we only need to look at recent information to perform the present task.• E.g., predicting the next word based on the previous ones.

I In such cases, where the gap between the relevant information and the place thatit’s needed is small, RNNs can learn to use the past information.

I But, as that gap grows, RNNs become unable to learn to connect the information.

I RNNs may suffer from the vanishing/exploding gradients problem.

I To solve these problem, long short-term memory (LSTM) have been introduced.

I In LSTM, the network can learn what to store and what to throw away.

68 / 82

Page 116: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Problems

I Sometimes we only need to look at recent information to perform the present task.• E.g., predicting the next word based on the previous ones.

I In such cases, where the gap between the relevant information and the place thatit’s needed is small, RNNs can learn to use the past information.

I But, as that gap grows, RNNs become unable to learn to connect the information.

I RNNs may suffer from the vanishing/exploding gradients problem.

I To solve these problem, long short-term memory (LSTM) have been introduced.

I In LSTM, the network can learn what to store and what to throw away.

68 / 82

Page 117: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Problems

I Sometimes we only need to look at recent information to perform the present task.• E.g., predicting the next word based on the previous ones.

I In such cases, where the gap between the relevant information and the place thatit’s needed is small, RNNs can learn to use the past information.

I But, as that gap grows, RNNs become unable to learn to connect the information.

I RNNs may suffer from the vanishing/exploding gradients problem.

I To solve these problem, long short-term memory (LSTM) have been introduced.

I In LSTM, the network can learn what to store and what to throw away.

68 / 82

Page 118: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Problems

I Sometimes we only need to look at recent information to perform the present task.• E.g., predicting the next word based on the previous ones.

I In such cases, where the gap between the relevant information and the place thatit’s needed is small, RNNs can learn to use the past information.

I But, as that gap grows, RNNs become unable to learn to connect the information.

I RNNs may suffer from the vanishing/exploding gradients problem.

I To solve these problem, long short-term memory (LSTM) have been introduced.

I In LSTM, the network can learn what to store and what to throw away.

68 / 82

Page 119: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Basic Cell vs. LSTM

I Without looking inside the box, the LSTM cell looks exactly like a basic RNN cell.

I A basic RNN contains a single layer in each cell.

I An LSTM contains four interacting layers in each cell.

69 / 82

Page 120: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Basic Cell vs. LSTM

I Without looking inside the box, the LSTM cell looks exactly like a basic RNN cell.

I A basic RNN contains a single layer in each cell.

I An LSTM contains four interacting layers in each cell.

69 / 82

Page 121: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

RNN Basic Cell vs. LSTM

I Without looking inside the box, the LSTM cell looks exactly like a basic RNN cell.

I A basic RNN contains a single layer in each cell.

I An LSTM contains four interacting layers in each cell.

69 / 82

Page 122: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

LSTM (1/2)

I In LSTM state is split in two vectors:

1. h(t) (h stands for hidden): the short-term state2. c(t) (c stands for cell): the long-term state

70 / 82

Page 123: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

LSTM (2/2)

I The cell state (long-term state), the horizontal line on the top of the diagram.

I The LSTM can remove/add information to the cell state, regulated by three gates.• Forget gate, input gate and output gate

71 / 82

Page 124: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (1/4)

I Step one: decides what information we are going to throw away from the cell state.

I This decision is made by a sigmoid layer, called the forget gate layer.

I It looks at h(t−1) and x(t), and outputs a number between 0 and 1 for each numberin the cell state c(t−1).

• 1 represents completely keep this, and 0 represents completely get rid of this.

f(t) = σ(uᵀfx(t) + wfh

(t−1))

72 / 82

Page 125: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (1/4)

I Step one: decides what information we are going to throw away from the cell state.

I This decision is made by a sigmoid layer, called the forget gate layer.

I It looks at h(t−1) and x(t), and outputs a number between 0 and 1 for each numberin the cell state c(t−1).

• 1 represents completely keep this, and 0 represents completely get rid of this.

f(t) = σ(uᵀfx(t) + wfh

(t−1))

72 / 82

Page 126: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (1/4)

I Step one: decides what information we are going to throw away from the cell state.

I This decision is made by a sigmoid layer, called the forget gate layer.

I It looks at h(t−1) and x(t), and outputs a number between 0 and 1 for each numberin the cell state c(t−1).

• 1 represents completely keep this, and 0 represents completely get rid of this.

f(t) = σ(uᵀfx(t) + wfh

(t−1))

72 / 82

Page 127: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (2/4)

I Second step: decides what new information we are going to store in the cell state.This has two parts:

I 1. A sigmoid layer, called the input gate layer, decides which values we will update.

I 2. A tanh layer creates a vector of new candidate values that could be added to thestate.

i(t) = σ(uᵀix(t) + wih

(t−1))

~c(t) = tanh(uᵀ~cx(t) + w~ch

(t−1))

73 / 82

Page 128: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (2/4)

I Second step: decides what new information we are going to store in the cell state.This has two parts:

I 1. A sigmoid layer, called the input gate layer, decides which values we will update.

I 2. A tanh layer creates a vector of new candidate values that could be added to thestate.

i(t) = σ(uᵀix(t) + wih

(t−1))

~c(t) = tanh(uᵀ~cx(t) + w~ch

(t−1))

73 / 82

Page 129: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (2/4)

I Second step: decides what new information we are going to store in the cell state.This has two parts:

I 1. A sigmoid layer, called the input gate layer, decides which values we will update.

I 2. A tanh layer creates a vector of new candidate values that could be added to thestate.

i(t) = σ(uᵀix(t) + wih

(t−1))

~c(t) = tanh(uᵀ~cx(t) + w~ch

(t−1))

73 / 82

Page 130: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (3/4)

I Third step: updates the old cell state c(t−1), into the new cell state c(t).

I We multiply the old state by f(t), forgetting the things we decided to forget earlier.

I Then we add it i(t) ⊗ ~c(t).

I This is the new candidate values, scaled by how much we decided to update eachstate value.

c(t) = f(t) ⊗ c(t−1) + i(t) ⊗ ~c(t)

74 / 82

Page 131: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (3/4)

I Third step: updates the old cell state c(t−1), into the new cell state c(t).

I We multiply the old state by f(t), forgetting the things we decided to forget earlier.

I Then we add it i(t) ⊗ ~c(t).

I This is the new candidate values, scaled by how much we decided to update eachstate value.

c(t) = f(t) ⊗ c(t−1) + i(t) ⊗ ~c(t)

74 / 82

Page 132: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (3/4)

I Third step: updates the old cell state c(t−1), into the new cell state c(t).

I We multiply the old state by f(t), forgetting the things we decided to forget earlier.

I Then we add it i(t) ⊗ ~c(t).

I This is the new candidate values, scaled by how much we decided to update eachstate value.

c(t) = f(t) ⊗ c(t−1) + i(t) ⊗ ~c(t)

74 / 82

Page 133: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (3/4)

I Third step: updates the old cell state c(t−1), into the new cell state c(t).

I We multiply the old state by f(t), forgetting the things we decided to forget earlier.

I Then we add it i(t) ⊗ ~c(t).

I This is the new candidate values, scaled by how much we decided to update eachstate value.

c(t) = f(t) ⊗ c(t−1) + i(t) ⊗ ~c(t)

74 / 82

Page 134: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (4/4)

I Fourth step: decides about the output.

I First, runs a sigmoid layer that decides what parts of the cell state we are going tooutput.

I Then, puts the cell state through tanh and multiplies it by the output of the sigmoidgate (output gate), so that it only outputs the parts it decided to.

o(t) = σ(uᵀox(t) + woh

(t−1))

h(t) = o(t) ⊗ tanh(c(t))

75 / 82

Page 135: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (4/4)

I Fourth step: decides about the output.

I First, runs a sigmoid layer that decides what parts of the cell state we are going tooutput.

I Then, puts the cell state through tanh and multiplies it by the output of the sigmoidgate (output gate), so that it only outputs the parts it decided to.

o(t) = σ(uᵀox(t) + woh

(t−1))

h(t) = o(t) ⊗ tanh(c(t))

75 / 82

Page 136: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Step-by-Step LSTM Walk Through (4/4)

I Fourth step: decides about the output.

I First, runs a sigmoid layer that decides what parts of the cell state we are going tooutput.

I Then, puts the cell state through tanh and multiplies it by the output of the sigmoidgate (output gate), so that it only outputs the parts it decided to.

o(t) = σ(uᵀox(t) + woh

(t−1))

h(t) = o(t) ⊗ tanh(c(t))

75 / 82

Page 137: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

LSTM in TensorFlow

I Use LSTM

model = keras.models.Sequential([

keras.layers.LSTM(20, return_sequences=True, input_shape=[None, 1]),

keras.layers.LSTM(20),

keras.layers.Dense(1)

])

model.compile(loss="mse", optimizer="adam", metrics=[last_time_step_mse])

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

76 / 82

Page 138: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Gated Recurrent Unit (GRU)

I The GRU cell is a simplified version of the LSTM cell.

I Instead of separately deciding what to forget and what to add to the new informationto, it makes those decisions together.

• It only forgets when it is going to input something in its place.• It only inputs new values to the state when it forgets something older.

c(t) = f(t) ⊗ c(t−1) + (1− f(t))⊗ ~c(t)

GRU LSTM

77 / 82

Page 139: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Gated Recurrent Unit (GRU)

I The GRU cell is a simplified version of the LSTM cell.

I Instead of separately deciding what to forget and what to add to the new informationto, it makes those decisions together.

• It only forgets when it is going to input something in its place.• It only inputs new values to the state when it forgets something older.

c(t) = f(t) ⊗ c(t−1) + (1− f(t))⊗ ~c(t)

GRU LSTM

77 / 82

Page 140: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Gated Recurrent Unit (GRU)

I The GRU cell is a simplified version of the LSTM cell.

I Instead of separately deciding what to forget and what to add to the new informationto, it makes those decisions together.

• It only forgets when it is going to input something in its place.

• It only inputs new values to the state when it forgets something older.

c(t) = f(t) ⊗ c(t−1) + (1− f(t))⊗ ~c(t)

GRU LSTM

77 / 82

Page 141: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Gated Recurrent Unit (GRU)

I The GRU cell is a simplified version of the LSTM cell.

I Instead of separately deciding what to forget and what to add to the new informationto, it makes those decisions together.

• It only forgets when it is going to input something in its place.• It only inputs new values to the state when it forgets something older.

c(t) = f(t) ⊗ c(t−1) + (1− f(t))⊗ ~c(t)

GRU LSTM

77 / 82

Page 142: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

GRU in TensorFlow

I Use GRU

model = keras.models.Sequential([

keras.layers.GRU(20, return_sequences=True, input_shape=[None, 1]),

keras.layers.GRU(20),

keras.layers.Dense(1)

])

model.compile(loss="mse", optimizer="adam", metrics=[last_time_step_mse])

history = model.fit(X_train, y_train, epochs=20)

model.evaluate(X_test, y_test, verbose=0)

78 / 82

Page 143: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Summary

79 / 82

Page 144: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Summary

I RNN

I Unfolding the network

I Three weights

I RNN design patterns

I Backpropagation through time

I LSTM and GRU

80 / 82

Page 145: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Reference

I Ian Goodfellow et al., Deep Learning (Ch. 10)

I Aurelien Geron, Hands-On Machine Learning (Ch. 15)

I Understanding LSTM Networkshttp://colah.github.io/posts/2015-08-Understanding-LSTMs

I CS224d: Deep Learning for Natural Language Processinghttp://cs224d.stanford.edu

81 / 82

Page 146: Recurrent Neural Networks - GitHub Pages · 2019-12-09 · Language Modeling (1/2) I Language modelingis the task ofpredictingwhat word comes next. 6/82

Questions?

82 / 82