0% found this document useful (0 votes)
40 views

CS 224D: Deep Learning For NLP: Lecture Notes: Part I Spring 2016

This document introduces natural language processing and discusses approaches to creating word vectors, including: 1) One-hot vectors represent each word as a vector with a 1 in the index corresponding to the word's position and 0s elsewhere. 2) SVD-based methods accumulate word co-occurrence counts in a matrix and perform SVD to derive word embeddings from the matrix. Methods include word-document matrices and window-based co-occurrence matrices. 3) Popular word vector approaches like skip-gram and CBOW aim to predict words nearby other words to learn embeddings that encode semantic relationships.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

CS 224D: Deep Learning For NLP: Lecture Notes: Part I Spring 2016

This document introduces natural language processing and discusses approaches to creating word vectors, including: 1) One-hot vectors represent each word as a vector with a 1 in the index corresponding to the word's position and 0s elsewhere. 2) SVD-based methods accumulate word co-occurrence counts in a matrix and perform SVD to derive word embeddings from the matrix. Methods include word-document matrices and window-based co-occurrence matrices. 3) Popular word vector approaches like skip-gram and CBOW aim to predict words nearby other words to learn embeddings that encode semantic relationships.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

CS 224D: Deep Learning for NLP1 1

Course Instructor: Richard Socher

Lecture Notes: Part I2 2


Authors: Francois Chaubard, Rohit
Mundra, Richard Socher
Spring 2016

Keyphrases: Natural Language Processing. Word Vectors. Singu-


lar Value Decomposition. Skip-gram. Continuous Bag of Words
(CBOW). Negative Sampling.
This set of notes begins by introducing the concept of Natural
Language Processing (NLP) and the problems NLP faces today. We
then move forward to discuss the concept of representing words as
numeric vectors. Lastly, we discuss popular approaches to designing
word vectors.

1 Introduction to Natural Language Processing


Natural Language Processing tasks
We begin with a general discussion of what is NLP. The goal of NLP come in varying levels of difficulty:
is to be able to design algorithms to allow computers to "understand" Easy
natural language in order to perform some task. Example tasks come • Spell Checking
in varying level of difficulty: • Keyword Search
• Finding Synonyms
Easy Medium
• Parsing information from websites,
• Spell Checking
documents, etc.

• Keyword Search Hard


• Machine Translation
• Finding Synonyms • Semantic Analysis
• Coreference
Medium
• Question Answering
• Parsing information from websites, documents, etc.

Hard

• Machine Translation (e.g. Translate Chinese text to English)

• Semantic Analysis (What is the meaning of query statement?)

• Coreference (e.g. What does "he" or "it" refer to given a docu-


ment?)

• Question Answering (e.g. Answering Jeopardy questions).

The first and arguably most important common denominator


across all NLP tasks is how we represent words as input to any and
all of our models. Much of the earlier NLP work that we will not
cover treats words as atomic symbols. To perform well on most NLP
tasks we first need to have some notion of similarity and difference
cs 224d: deep learning for nlp 2

between words. With word vectors, we can quite easily encode this
ability in the vectors themselves (using distance measures such as
Jaccard, Cosine, Euclidean, etc).

2 Word Vectors

There are an estimated 13 million tokens for the English language


but are they all completely unrelated? Feline to cat, hotel to motel?
I think not. Thus, we want to encode word tokens each into some
vector that represents a point in some sort of "word" space. This is
paramount for a number of reasons but the most intuitive reason is
that perhaps there actually exists some N-dimensional space (such
that N  13 million) that is sufficient to encode all semantics of
our language. Each dimension would encode some meaning that
we transfer using speech. For instance, semantic dimensions might
indicate tense (past vs. present vs. future), count (singular vs. plural),
and gender (masculine vs. feminine). One-hot vector: Represent every word
So let’s dive into our first word vector and arguably the most as an R|V |×1 vector with all 0s and one
1 at the index of that word in the sorted
simple, the one-hot vector: Represent every word as an R|V |×1 vector english language.
with all 0s and one 1 at the index of that word in the sorted english
language. In this notation, |V | is the size of our vocabulary. Word
vectors in this type of encoding would appear as the following:
       
1 0 0 0
 0   1   0   0 
       
w aardvark =  0 , w a =  0 , w at =  1 , · · · wzebra =  0 
       
Fun fact: The term "one-hot" comes
 ..   ..   ..   .. 
       
from digital circuit design, meaning "a
 .   .   .   .  group of bits among which the legal
0 0 0 1 combinations of values are only those
We represent each word as a completely independent entity. As with a single high (1) bit and all the
others low (0)".
we previously discussed, this word representation does not give us
directly any notion of similarity. For instance,

(whotel )T wmotel = (whotel )T wcat = 0


So maybe we can try to reduce the size of this space from R| V | to
something smaller and thus find a subspace that encodes the rela-
tionships between words.

3 SVD Based Methods

For this class of methods to find word embeddings (otherwise known


as word vectors), we first loop over a massive dataset and accumu-
late word co-occurrence counts in some form of a matrix X, and then
perform Singular Value Decomposition on X to get a USV T decom-
position. We then use the rows of U as the word embeddings for all
cs 224d: deep learning for nlp 3

words in our dictionary. Let us discuss a few choices of X.

3.1 Word-Document Matrix


As our first attempt, we make the bold conjecture that words that
are related will often appear in the same documents. For instance,
"banks", "bonds", "stocks", "money", etc. are probably likely to ap-
pear together. But "banks", "octopus", "banana", and "hockey" would
probably not consistently appear together. We use this fact to build
a word-document matrix, X in the following manner: Loop over
billions of documents and for each time word i appears in docu-
ment j, we add one to entry Xij . This is obviously a very large matrix
(R|V |× M ) and it scales with the number of documents (M). So per-
haps we can try something better.

3.2 Window based Co-occurrence Matrix


The same kind of logic applies here however, the matrix X stores
co-occurrences of words thereby becoming an affinity matrix. In this
method we count the number of times each word appears inside a
window of a particular size around the word of interest. We calculate
this count for all the words in corpus. We display an example below.
Let our corpus contain just three sentences and the window size be 1: Using Word-Word Co-occurrence
Matrix:
1. I enjoy flying. • Generate |V | × |V | co-occurrence
matrix, X.
2. I like NLP.
• Apply SVD on X to get X = USV T .
3. I like deep learning. • Select the first k columns of U to get
a k-dimensional word vectors.
The resulting counts matrix will then be: ∑ik=1 σi
• |V | indicates the amount of
∑i=1 σi
variance captured by the first k
I like enjoy deep learning NLP f lying .
  dimensions.
I 0 2 1 0 0 0 0 0
like

 2 0 0 1 0 1 0 0 

1 0 0 0 0 0 1 0
 
enjoy  
 
deep  0 1 0 0 1 0 0 0 
X=  
learning

 0 0 0 1 0 0 0 1 

0 1 0 0 0 0 0 1
 
NLP  
 
f lying  0 0 1 0 0 0 0 1 
. 0 0 0 0 1 1 1 0

We now perform SVD on X, observe the singular values (the diag-


onal entries in the resulting S matrix), and cut them off at some index
k based on the desired percentage variance captured:

∑ik=1 σi
|V |
∑i=1 σi
cs 224d: deep learning for nlp 4

We then take the submatrix of U1:|V |,1:k to be our word embedding


matrix. This would thus give us a k-dimensional representation of
every word in the vocabulary.

Applying SVD to X:

|V | |V | |V | |V |
   
0 ··· − v1 −
   
| | σ1
 0 · · ·  |V |  − v2 − 
   
X =  u1 u2 · · ·  |V | σ2
   
|V |  |V |
.. .. .. ..
   
| | . . . .

Reducing dimensionality by selecting first k singular vectors:

|V | k k |V |
   
0 ··· − v1 −
   
| | σ1
 0 ···  k  − v2 − 
   
X̂ =  u1 u2 ···  k σ2
   
|V |  |V |
.. .. .. ..
   
| | . . . .

Both of these methods give us word vectors that are more than
sufficient to encode semantic and syntactic (part of speech) informa-
tion but are associated with many other problems:

• The dimensions of the matrix change very often (new words are
added very frequently and corpus changes in size).

• The matrix is extremely sparse since most words do not co-occur.

• The matrix is very high dimensional in general (≈ 106 × 106 )

• Quadratic cost to train (i.e. to perform SVD)

• Requires the incorporation of some hacks on X to account for the


drastic imbalance in word frequency

Some solutions to exist to resolve some of the issues discussed above:

• Ignore function words such as "the", "he", "has", etc.

• Apply a ramp window – i.e. weight the co-occurrence count based


on distance between the words in the document.

• Use Pearson correlation and set negative counts to 0 instead of


using just raw count.

As we see in the next section, iteration based methods solve many


of these issues in a far more elegant manner.
cs 224d: deep learning for nlp 5

4 Iteration Based Methods

Let us step back and try a new approach. Instead of computing and
storing global information about some huge dataset (which might be
billions of sentences), we can try to create a model that will be able
to learn one iteration at a time and eventually be able to encode the
probability of a word given its context. Context of a word:
We can set up this probabilistic model of known and unknown The context of a word is the set of C
surrounding words. For instance, the
parameters and take one training example at a time in order to learn C = 2 context of the word "fox" in the
just a little bit of information for the unknown parameters based on sentence "The quick brown fox jumped
over the lazy dog" is {"quick", "brown",
the input, the output of the model, and the desired output of the "jumped", "over"}.
model.
At every iteration we run our model, evaluate the errors, and
follow an update rule that has some notion of penalizing the model
parameters that caused the error. This idea is a very old one dating
back to 1986. We call this method "backpropagating" the errors (see
Learning representations by back-propagating errors.
David E. Rumelhart, Geoffrey E. Hinton, and Ronald J.
Williams (1988).)

4.1 Language Models (Unigrams, Bigrams, etc.)


First, we need to create such a model that will assign a probability to
a sequence of tokens. Let us start with an example:

"The cat jumped over the puddle."

A good language model will give this sentence a high probability


because this is a completely valid sentence, syntactically and semanti-
cally. Similarly, the sentence "stock boil fish is toy" should have a very
low probability because it makes no sense. Mathematically, we can
call this probability on any given sequence of n words:

P ( w1 , w2 , · · · , w n )

We can take the unary language model approach and break apart
this probability by assuming the word occurrences are completely
independent:
n
P ( w1 , w2 , · · · , w n ) = ∏ P ( wi )
i =1
Unigram model:
However, we know this is a bit ludicrous because we know the n
next word is highly contingent upon the previous sequence of words. P ( w1 , w2 , · · · , w n ) = ∏ P ( wi )
i =1
And the silly sentence example might actually score highly. So per-
haps we let the probability of the sequence depend on the pairwise
probability of a word in the sequence and the word next to it. We call
this the bigram model and represent it as:
cs 224d: deep learning for nlp 6

n
P ( w1 , w2 , · · · , w n ) = ∏ P ( wi | wi −1 )
i =2
Bigram model:
Again this is certainly a bit naive since we are only concerning n
ourselves with pairs of neighboring words rather than evaluating a P ( w1 , w2 , · · · , w n ) = ∏ P ( wi | wi −1 )
i =2
whole sentence, but as we will see, this representation gets us pretty
far along. Note in the Word-Word Matrix with a context of size 1, we
basically can learn these pairwise probabilities. But again, this would
require computing and storing global information about a massive
dataset.
Now that we understand how we can think about a sequence of
tokens having a probability, let us observe some example models that
could learn these probabilities.

4.2 Continuous Bag of Words Model (CBOW)


One approach is to treat {"The", "cat", ’over", "the’, "puddle"} as a
context and from these words, be able to predict or generate the
center word "jumped". This type of model we call a Continuous Bag
of Words (CBOW) Model. CBOW Model:
Let’s discuss the CBOW Model above in greater detail. First, we Predicting a center word form the
surrounding context
set up our known parameters. Let the known parameters in our
model be the sentence represented by one-hot word vectors. The
input one hot vectors or context we will represent with an x (c) . And
the output as y(c) and in the CBOW model, since we only have one
output, so we just call this y which is the one hot vector of the known
center word. Now let’s define our unknowns in our model. Notation for CBOW Model:
We create two matrices, V ∈ Rn×|V | and U ∈ R|V |×n . Where n • wi : Word i from vocabulary V
is an arbitrary size which defines the size of our embedding space. • V ∈ Rn×|V | : Input word matrix
V is the input word matrix such that the i-th column of V is the n- • vi : i-th column of V , the input vector
dimensional embedded vector for word wi when it is an input to this representation of word wi

model. We denote this n × 1 vector as vi . Similarly, U is the output • U ∈ Rn×|V | : Output word matrix

word matrix. The j-th row of U is an n-dimensional embedded vector • ui : i-th row of U , the output vector
representation of word wi
for word w j when it is an output of the model. We denote this row of
U as u j . Note that we do in fact learn two vectors for every word wi
(i.e. input word vector vi and output word vector ui ).

We breakdown the way this model works in these steps:

1. We generate our one hot word vectors (x (c−m) , . . . , x (c−1) , x (c+1) , . . . , x (c+m) )
for the input context of size m.

2. We get our embedded word vectors for the context (vc−m =


V x (c−m) , vc−m+1 = V x (c−m+1) , . . ., vc+m = V x (c+m) )
cs 224d: deep learning for nlp 7

vc−m +vc−m+1 +...+vc+m


3. Average these vectors to get v̂ = 2m

4. Generate a score vector z = U v̂

5. Turn the scores into probabilities ŷ = softmax(z)

6. We desire our probabilities generated, ŷ, to match the true prob-


abilities, y, which also happens to be the one hot vector of the
actual word.
So now that we have an understanding of how our model would
work if we had a V and U , how would we learn these two matrices?
Well, we need to create an objective function. Very often when we
are trying to learn a probability from some true probability, we look
to information theory to give us a measure of the distance between
Figure 1: This image demonstrates how
two distributions. Here, we use a popular choice of distance/loss
CBOW works and how we must learn
measure, cross entropy H (ŷ, y). the transfer matrices
The intuition for the use of cross-entropy in the discrete case can
be derived from the formulation of the loss function:
|V |
H (ŷ, y) = − ∑ y j log(ŷ j )
j =1

Let us concern ourselves with the case at hand, which is that y is


a one-hot vector. Thus we know that the above loss simplifies to
simply:
H (ŷ, y) = −yi log(ŷi )
In this formulation, c is the index where the correct word’s one
hot vector is 1. We can now consider the case where our predic-
tion was perfect and thus ŷc = 1. We can then calculate H (ŷ, y) =
−1 log(1) = 0. Thus, for a perfect prediction, we face no penalty or
loss. Now let us consider the opposite case where our prediction was
very bad and thus ŷc = 0.01. As before, we can calculate our loss to
be H (ŷ, y) = −1 log(0.01) ≈ 4.605. We can thus see that for proba-
bility distributions, cross entropy provides us with a good measure of
distance. We thus formulate our optimization objective as:
minimize J = − log P(wc |wc−m , . . . , wc−1 , wc+1 , . . . , wc+m )
= − log P(uc |v̂)
exp(ucT v̂)
= − log |V |
∑ j=1 exp(u Tj v̂)
|V |
= −ucT v̂ + log ∑ exp(u Tj v̂)
j =1

We use gradient descent to update all relevant word vectors uc and


vj.
cs 224d: deep learning for nlp 8

4.3 Skip-Gram Model


Skip-Gram Model:
Another approach is to create a model such that given the center Predicting surrounding context words
word "jumped", the model will be able to predict or generate the given a center word

surrounding words "The", "cat", "over", "the", "puddle". Here we call


the word "jumped" the context. We call this type of model a Skip-
Gram model. Notation for Skip-Gram Model:
Let’s discuss the Skip-Gram model above. The setup is largely the • wi : Word i from vocabulary V
same but we essentially swap our x and y i.e. x in the CBOW are • V ∈ Rn×|V | : Input word matrix
now y and vice-versa. The input one hot vector (center word) we will • vi : i-th column of V , the input vector
represent with an x (since there is only one). And the output vectors representation of word wi

as y( j) . We define V and U the same as in CBOW. • U ∈ Rn×|V | : Output word matrix


• ui : i-th row of U , the output vector
representation of word wi
We breakdown the way this model works in these 6 steps:

1. We generate our one hot input vector x

2. We get our embedded word vectors for the context vc = V x

3. Since there is no averaging, just set v̂ = vc ?

4. Generate 2m score vectors, uc−m , . . . , uc−1 , uc+1 , . . . , uc+m using


u = U vc

5. Turn each of the scores into probabilities, y = softmax(u)

6. We desire our probability vector generated to match the true prob-


abilities which is y(c−m) , . . . , y(c−1) , y(c+1) , . . . , y(c+m) , the one hot
vectors of the actual output.

As in CBOW, we need to generate an objective function for us to


evaluate the model. A key difference here is that we invoke a Naive
Bayes assumption to break out the probabilities. If you have not
seen this before, then simply put, it is a strong (naive) conditional
independence assumption. In other words, given the center word, all
output words are completely independent.

Figure 2: This image demonstrates how


Skip-Gram works and how we must
learn the transfer matrices
cs 224d: deep learning for nlp 9

minimize J = − log P(wc−m , . . . , wc−1 , wc+1 , . . . , wc+m |wc )


2m
= − log ∏ P ( wc−m+ j | wc )
j=0,j6=m
2m
= − log ∏ P (uc−m+ j | vc )
j=0,j6=m
2m exp(ucT−m+ j vc )
= − log ∏ |V |
j=0,j6=m ∑k=1 exp(ukT vc )
2m |V |
=− ∑ ucT−m+ j vc + 2m log ∑ exp(ukT vc )
j=0,j6=m k =1

With this objective function, we can compute the gradients with


respect to the unknown parameters and at each iteration update
them via Stochastic Gradient Descent.

4.4 Negative Sampling


Lets take a second to look at the objective function. Note that the
summation over |V | is computationally huge! Any update we do or
evaluation of the objective function would take O(|V |) time which
if we recall is in the millions. A simple idea is we could instead just
approximate it.
For every training step, instead of looping over the entire vocabu-
lary, we can just sample several negative examples! We "sample" from
a noise distribution (Pn (w)) whose probabilities match the ordering
of the frequency of the vocabulary. To augment our formulation of
the problem to incorporate Negative Sampling, all we need to do is
update the:

• objective function

• gradients

• update rules

Mikolov et al. present Negative Sampling in Distributed


Representations of Words and Phrases and their Compo-
sitionality. While negative sampling is based on the Skip-Gram
model, it is in fact optimizing a different objective. Consider a pair
(w, c) of word and context. Did this pair come from the training
data? Let’s denote by P( D = 1|w, c) the probability that (w, c) came
from the corpus data. Correspondingly, P( D = 0|w, c) will be the
cs 224d: deep learning for nlp 10

probability that (w, c) did not come from the corpus data. First, let’s
model P( D = 1|w, c) with the sigmoid function:

1
P( D = 1|w, c, θ ) = T
1 + e(−vc vw )
Now, we build a new objective function that tries to maximize the
probability of a word and context being in the corpus data if it in-
deed is, and maximize the probability of a word and context not
being in the corpus data if it indeed is not. We take a simple maxi-
mum likelihood approach of these two probabilities. (Here we take θ
to be the parameters of the model, and in our case it is V and U .)

θ = argmax ∏ P( D = 1|w, c, θ ) ∏ P( D = 0|w, c, θ )


θ (w,c)∈ D (w,c)∈ D̃

= argmax ∏ P( D = 1|w, c, θ ) ∏ (1 − P( D = 1|w, c, θ ))


θ (w,c)∈ D (w,c)∈ D̃

= argmax ∑ log P( D = 1|w, c, θ ) + ∑ log(1 − P( D = 1|w, c, θ ))


θ (w,c)∈ D (w,c)∈ D̃
1 1
= argmax ∑ log Tv )
1 + exp(−uw c
+ ∑ log(1 −
1 + exp Tv )
(−uw c
)
θ (w,c)∈ D (w,c)∈ D̃
1 1
= argmax ∑ log Tv )
1 + exp(−uw c
+ ∑ log(
1 + exp Tv )
(uw c
)
θ (w,c)∈ D (w,c)∈ D̃

Note that D̃ is a "false" or "negative" corpus. Where we would have


sentences like "stock boil fish is toy". Unnatural sentences that should
get a low probability of ever occurring. We can generate D̃ on the fly
by randomly sampling this negative from the word bank. Our new
objective function would then be:

K
log σ (ucT−m+ j · vc ) + ∑ log σ(−ũkT · vc )
k =1

In the above formulation, {ũk |k = 1 . . . K } are sampled from Pn (w).


Let’s discuss what Pn (w) should be. While there is much discussion
of what makes the best approximation, what seems to work best is
the Unigram Model raised to the power of 3/4. Why 3/4? Here’s an
example that might help gain some intuition:

is: 0.93/4 = 0.92


Constitution: 0.093/4 = 0.16
bombastic: 0.013/4 = 0.032

"Bombastic" is now 3x more likely to be sampled while "is" only


went up marginally.

You might also like