Neural Network LMs
READ CHAPTERS 5 AND 7 IN JURAFSKY AND MARTIN READ CHAPTER 4 FROM YOAV GOLDBER’S BOOK NE NEURAL L NE NETWOR ORKS ME METHODS FOR NLP NLP (IT’S FREE TO DOWNLOAD FROM PENN’S CAMPUS!)
Neural Network LMs READ CHAPTERS 5 AND 7 IN JURAFSKY AND MARTIN - - PowerPoint PPT Presentation
Neural Network LMs READ CHAPTERS 5 AND 7 IN JURAFSKY AND MARTIN READ CHAPTER 4 FROM YOAV GOLDBERS BOOK NE NEURAL L NE NETWOR ORKS ME METHODS FOR NLP NLP (ITS FREE TO DOWNLOAD FROM PENNS CAMPUS!) Reminders QUIZ IS DUE
READ CHAPTERS 5 AND 7 IN JURAFSKY AND MARTIN READ CHAPTER 4 FROM YOAV GOLDBER’S BOOK NE NEURAL L NE NETWOR ORKS ME METHODS FOR NLP NLP (IT’S FREE TO DOWNLOAD FROM PENN’S CAMPUS!)
QUIZ IS DUE TONIGHT BY 11:59PM HOMEWORK 5 IS DUE WEDNESDAY
Logistic regression solves this task by learning, from a training set, a vector of weights and a bias term. We can also write this as a dot product:
z = n X
i=1
wixi ! +b
z = w·x+b
P(y = 1) = σ(w·x+b) = 1 1+e−(w·x+b) P(y = 0) = 1−σ(w·x+b) = 1− 1 1+e−(w·x+b) = e−(w·x+b) 1+e−(w·x+b)
We need to determine for some observation x how close the classifier output (! 𝑧 = σ (w · x + b)) is to the correct output y, which is 0 or 1. 𝑀 ! 𝑧, 𝑧 = how much ! 𝑧 differs from the true y
For one observation x, let’s ma maximi mize the probability of the correct label p(y|x). 𝑞 𝑧 𝑦 = ! 𝑧((1 − ! 𝑧)-.( If y = 1, then p y x = ! 𝑧. If y = 0, then p y x = 1 − ! 𝑧.
Th The result is cross-en entropy loss: 𝑀23 ! 𝑧, 𝑧 = −log 𝑞(𝑧|𝑦) = −[𝑧 log ! 𝑧 + 1 − 𝑧 log(1 − ! 𝑧)] Fi Finally, plug in the defi finition for r ; 𝒛= σ (w · x) + b 𝑀23 ! 𝑧, 𝑧 = −[𝑧 log σ(w·x+b) + 1 − 𝑧 log(1 − σ(w·x+b))]
Why does minimizing this negative log probability do what we want? A perfect classifier would assign probability 1 to the correct
That means the higher ; 𝒛 (the closer it is to 1), the better the classifier; the lower ; 𝒛 is (the closer it is to 0), the worse the classifier. The negative log of this probability is a convenient loss metric since it goes from 0 (negative log of 1, no loss) to infinity (negative log of 0, infinite loss).
log 𝑞 𝑢𝑠𝑏𝑗𝑜𝑗𝑜 𝑚𝑏𝑐𝑓𝑚𝑡 = log G
HI- J
𝑞(𝑧 H |𝑦 H ) = K
HI- J
log𝑞(𝑧 H |𝑦 H ) = − K
HI- J
LMN(! 𝑧 H |𝑧 H )
We use gradient descent to find good settings for our weights and bias by minimizing the loss function. Gradient descent is a method that finds a minimum of a function by figuring out in which direction (in the space of the parameters θ) the function’s slope is rising the most steeply, and moving in the opposite direction.
ˆ θ = argmin
θ
1 m
m
X
i=1
LCE(y(i),x(i);θ)
We use gradient descent to find good settings for our weights and bias by minimizing the loss function. Gradient descent is a method that finds a minimum of a function by figuring out in which direction (in the space of the parameters θ) the function’s slope is rising the most steeply, and moving in the opposite direction.
O 𝜄 = argmin
V
1 𝑛 K
HI- J
𝑀23(𝑧 H , 𝑦 H ; 𝜄)
For logistic regression, this loss function is conveniently convex. A convex function has just one minimum, so there are no local minima to get stuck in. So gradient descent starting from any point is guaranteed to find the minimum.
w Loss w1 wmin
slope of loss at w1 is negative
(goal)
descent
The magnitude of the amount to move in gradient descent is the value
A higher/faster learning rate means that we should move w more on each step.
wt+1 = wt −η d dw f(x;w) intuition from a function of one
Cost(w,b) w b
∇θL( f(x;θ),y)) =
∂ ∂w1 L( f(x;θ),y) ∂ ∂w2 L( f(x;θ),y)
. . .
∂ ∂wn L( f(x;θ),y)
equation for updating θ based on the gradient is thus
θt+1 = θt −η∇L(f(x;θ),y)
The final equation for updating θ based on the gradient is
To update θ, we need a definition for the gradient ∇L( f (x; θ ), y). For logistic regression the cross-entropy loss function is: The derivative of this function for one observation vector x for a single weight wj is The gradient is a very intuitive value: the difference between the true y and our estimate for x, multiplied by the corresponding input value xj .
LCE(w,b) = −[ylogσ(w·x+b)+(1−y)log(1−σ(w·x+b))]
∂LCE(w,b) ∂wj = [σ(w·x+b)−y]xj
This is what we want to minimize!!
𝐷𝑝𝑡𝑢 𝑥, 𝑐 = 1 𝑛 K
HI- J
𝑀23(! 𝑧 H , 𝑧(H)) = − 1 𝑛 K
HI- J
𝑧 H log 𝜏 𝑥 ⋅ 𝑦 H + 𝑐 + 1 − 𝑧 H log(1 − 𝜏 𝑥 ⋅ 𝑦 H + 𝑐 )
The loss for a batch of data or an entire dataset is just the average loss
The gradient for multiple data points is the sum of the individual gradients:
𝐷𝑝𝑡𝑢 𝑥, 𝑐 = − 1 𝑛 K
HI- J
𝑧(H) log 𝜏 𝑥 ⋅ 𝑦 H + 𝑐 + 1 − 𝑧 H log(1 − 𝜏 𝑥 ⋅ 𝑦 H + 𝑐 ) 𝜖𝐷𝑝𝑡𝑢 𝑥, 𝑐 𝜖𝑥
`
= K
HI- J
[𝜏 𝑥 ⋅ 𝑦 H + 𝑐 − 𝑧(H)]𝑦`
(H)
function STOCHASTIC GRADIENT DESCENT(L(), f(), x, y) returns θ # where: L is the loss function # f is a function parameterized by θ # x is the set of training inputs x(1), x(2),..., x(n) # y is the set of training outputs (labels) y(1), y(2),..., y(n) θ ←0 repeat T times For each training tuple (x(i), y(i)) (in random order) Compute ˆ y(i) = f(x(i);θ) # What is our estimated output ˆ y? Compute the loss L(ˆ y(i),y(i)) # How far off is ˆ y(i)) from the true output y(i)? g←∇θL( f(x(i);θ),y(i)) # How should we move θ to maximize loss ? θ ←θ − η g # go the other way instead return θ
Instead of binary classification, we often want more than two classes. For sentiment classification we might extend the class labels to be positive, negative, and neutral. We want to know the probability of y for each class c ∈ C, p(y = c|x). To get a proper probability, we will use a generalization of the sigmoid function called the softmax function. softmax 𝑨H = 𝑓fg ∑`I-
i
𝑓fg 1 ≤ 𝑗 ≤ 𝑙
The softmax function takes in an input vector z = [z1,z2,...,zk] and outputs a vector of values normalized into probabilities. For example, for this input: z = [0.6, 1.1, −1.5, 1.2, 3.2, −1.1] Softmax will output: [0.056, 0.090, 0.007, 0.099, 0.74, 0.010] softmax 𝑨 = [ 𝑓fl ∑HI-
i
𝑓fm , 𝑓fn ∑HI-
i
𝑓fm , ⋯ , 𝑓fp ∑HI-
i
𝑓fm]
Neuron Input y1 x1 x2 x3 x4
∫
Hidden layer Hidden layer Input layer y2 y3 y1 x1 x2 x3 x4
∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫
The simplest neural network is called a perceptron. It is simply a linear model: where W is the weight matrix and b is a bias term.
To go beyond linear function, we introduce a non-linear hidden layer. The result is called a Multi-Layer Perceptron with one hidden layer. Here W1 and b1 are a matrix and a bias for the first linear transformation of the input x, g is a nonlinear function (also an activation function), W2 and b2 are the matrix and bias term for a second linear transform.
We can add additional linear transformations and nonlinearities, resulting with a MLP with two hidden layers:
Hidden layer Hidden layer Input layer y2 y3 y1 x1 x2 x3 x4
∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫
h1 Dg1.xW 1 C b1/ h2 Dg2.h1W 2 C b2/ y Dh2W 3:
intermediary variables:
A neural network can be described the the dimensions of its layers and
din is the number of dimensions of the input vector dout is the number of dimensions of the output vector A fully connected layer l(x) = xW + b with input size din and and output size dout will have the following dimensions: the dimensions of x are 1 x din the dimensions of W are din x dout the dimensions of b are 1 x dout
dout = 1 means the neural networks output is a scalar. Such networks can be used for
dout = k > 1 can be used for k-class classification.
maximal value.
interpreted as a distribution over class assignments. The softmax forces the values in an output layer to be positive and sum to 1, making them interpretable as a probability distribution.
y D .xW C b/ O yŒi D e.xW Cb/Œi P
j e.xW Cb/Œj :
A Multi-Layer Perceptron with one hidden layer is a “universal approximator”. It can approximate a family of functions that includes all continuous functions on a closed and bounded subset of Rn It can approximate any function mapping from any finite dimensional discrete space to another.
Hidden layer Hidden layer Input layer y2 y3 y1 x1 x2 x3 x4
∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫ ∫
0.5 0.0
2 4 6 1.0 0.5 0.0
2 4 6 1.0 0.5 0.0
2 4 6
2 4 6
2 4 6 1.0 0.5 0.0
1.0 0.5 0.0
1.0 0.5 0.0
1.0 0.5 0.0
2 4 6
2 4 6 1.0 0.5 0.0
2 4 6 sigmoid(x) tanh(x) hardtanh(x) ReLU(x)
f x f x f x f x
Loss functions. Much like training a logistic regression classifier, we define a loss function 𝑀 ! 𝑧, 𝑧 = how much ! 𝑧 differs from the true y Loss functions like cross-entropy loss are relevant for neural nets too.
alongside our loss function when we search for the best parameters. Dropout attempts to avoid overfitting by randomly dropping (setting to 0) half of the neurons in the network in each training example in SGD.
‚ D
‚
L.‚/ C R.‚/
D
‚
1 n
n
X
iD1
L.f .xiI ‚/; yi/ C R.‚/:
Estimate the probability of a sentence consisting of word sequence w1:n We need to estimate the probability of P(wi+1|wk-i:i) from a large corpus.
n
Y
iD1
P.wi j wikWi1/;
W
O p.wiC1 D mjwikWi/ D .wikWiC1/
.wikWi/
p˛.wiC1 D mjwikWi/ D .wikWiC1/ C ˛
.wikWi/ C ˛jV j
p.wiC1 D mjwikWi/ D wikWi .wikWiC1/ .wikWi/ C .1 wikWi / O p.wiC1 D mjwi.k1/Wi/:
The “curse of dimensionality”. If we want to model the full joint distribution of 10 consecutive words with a vocabulary V of size 100,000, there are potentially 100,00010 =1050 -free parameters. In n-gram LMs, we simplify this to predict the next word given a limited
Only those combinations of successive words that actually occur in our training corpus are recorded in the table. Having observed black car and blue car does not influence our estimates of red car. A lot of what we do is language modelling (smoothing, backoff, etc) is trying to deal with the unobserved entries.
1. Associate each word in the vocabulary with a vector-representation, thereby creating a notion of similarity between words. 2. Express the joint probability function of a word sequence in terms of the word vectors for the words in that sequence. 3. Simultaneously learn the word vectors and the parameters of the function. The word vectors are low-dimensional (d=30 to d=100) dense vectors, like we’ve seen before. The probability function is expressed the product of conditional probabilities of the next word given the previous word, using a multi- layer neural network.
The input to the neural network is a k-gram of words w1:k. The output is a probability distribution over the next word. The k context words are treated as a word window. Each word is associated with an embedding vector: The input vector x just concatenates v(w) for each of the k words:
v.w/ 2 Rdw
The input x is fed into a neural network with 1 or more hidden layers:
y D P.wijw1Wk/ D LM.w1Wk/ D .hW 2 C b2/ h D g.xW 1 C b1/ x D Œv.w1/I v.w2/I : : : I v.wk/ v.w/ D E Œw
E 2 RjV jdw W 1 2 Rkdwd b1 2 Rd W 2 2 RdjV j b2 2 RjV j
The training examples are simply word kgrams from the corpus The identities of the first k+1 words are used as features, and the last word is used as the target label for the classification. Conceptually, the model is trained using cross-entropy loss. Working with cross entropy loss works very well, but requires the use of a costly softmax operation which can be prohibitive for very large vocabularies, we we often use alternative loss functions or approximations.
Better results. They achieve better preplexity scores than SOTA n-gram LMs. Larger N. NN LMs can scale to much larger orders of n. This is achievable because parameters are associated only with individual words, and not with n-grams. They generalize across contexts. For example, by observing that the words blue, green, red, black, etc. appear in similar contexts, the model will be able to assign a reasonable score to the green car even though it never observed in training, because it did observe blue car and red car. A by-product of training are word embeddings!
Goal: Learn a function that returns the joint probability Primary difficulty:
This is sometimes called the “curse of dimensionality”
words / word sequences that we have observed.
Suppose we want a joint distribution over 10 words. Suppose we have a vocabulary of size 100,000. 100,00010 =1050 parameters This is too high to estimate from data.
In LMs we user chain rule to get the conditional probability
words: 𝑄(𝑥-𝑥r𝑥s…𝑥t) = ∏tI-
v
𝑄(𝑥t| 𝑥-…𝑥t.-) What assumption do we make in n-gram LMs to simplify this? The probability of the next word only depends on the previous n-1 words. A small n makes it easier for us to get an estimate of the probability from data.
We construct tables to look up the probability of seeing a word given a history. The tables only store observed sequences. What happens when we have a new (unseen) combination
curse of P(wt | wt-n … wt-1) dimensionality azure knowledge
What happens when we have a new (unseen) combination
We are basically just stitching together short sequences of
Let’s try generalizing. Intuition: Take a sentence like The cat is walking in the bedroom And use it when we assign probabilities to similar sentences like The dog is running around the room
with real values ℝm. m=30, 60, 100. This gives a way to compute word similarity.
in a sequence based on a sequence of these vectors.
probability function from data. Seeing one of the cat/dog sentences allows them to increase the probability for that sentence and its combinatorial # of “neighbor” sentences in vector space.
Bengio et al NIPS 2003
Given:
A training set w1 … wt where wt ∈V
Learn:
f(w1 … wt) = P(wt|w1 … wt-1) Subject to giving a high probability to an unseen text/dev set (e.g. minimizing the perplexity)
Constraint:
Create a proper probability distribution (e.g. sums to 1) so that we can take the product of conditional probabilities to get the joint probability of a sentence
ℝM. Store this in a V-by-M matrix. Initialize it with singular value decomposition (SVD).
word vectors onto a probability distribution over the vocabulary V g(C(wt-n) … C(wt-1)) = P(wt|wt-n … wt-1)
When the ~50 dimensional vectors that result from training a neural LM are projected down to 2-dimensions, we see a lot of words that are intuitively similar to each other are close together.