Attention helps a model focus on important parts of the input when making decisions. It improves understanding by weighing useful information more.
Attention mechanism in depth in NLP
Attention(Q, K, V) = softmax((Q * K^T) / sqrt(d_k)) * V
Q = Query, K = Key, V = Value are matrices derived from input data.
softmax normalizes scores to probabilities, highlighting important parts.
Q = [[1, 0]] K = [[1, 0], [0, 1]] V = [[1, 2], [3, 4]] scores = Q @ K.T / (2 ** 0.5) weights = softmax(scores) output = weights @ V
import torch Q = torch.tensor([[1., 0.]]) K = torch.tensor([[1., 0.], [0., 1.]]) V = torch.tensor([[1., 2.], [3., 4.]]) scores = torch.matmul(Q, K.T) / (2 ** 0.5) weights = torch.nn.functional.softmax(scores, dim=-1) output = torch.matmul(weights, V) print(output)
This program shows how attention scores are computed, normalized, and used to get a weighted sum of values. It uses simple tensors to demonstrate the core idea.
import torch import torch.nn.functional as F # Define Query, Key, Value tensors Q = torch.tensor([[1., 0., 1.]]) # Query vector K = torch.tensor([[1., 0., 1.], [0., 1., 0.], [1., 1., 0.]]) # Key vectors V = torch.tensor([[1., 2.], [3., 4.], [5., 6.]]) # Value vectors d_k = Q.size(-1) # dimension of key # Calculate scaled dot-product attention scores = torch.matmul(Q, K.T) / (d_k ** 0.5) # shape: (1, 3) weights = F.softmax(scores, dim=-1) # shape: (1, 3) output = torch.matmul(weights, V) # shape: (1, 2) print(f"Scores: {scores}") print(f"Weights (attention probabilities): {weights}") print(f"Output (weighted sum of values): {output}")
Attention scores measure how well each key matches the query.
Scaling by sqrt(d_k) prevents large dot products that hurt learning.
Softmax turns scores into probabilities that sum to 1.
Attention helps models focus on important parts of input data.
It uses queries, keys, and values to compute weighted sums.
Softmax normalizes scores to highlight relevant information.
Practice
Solution
Step 1: Understand attention's role
Attention helps models decide which parts of the input are most important for the task.Step 2: Compare options
Only To help the model focus on important parts of the input data correctly describes this focus mechanism; others describe unrelated actions.Final Answer:
To help the model focus on important parts of the input data -> Option CQuick Check:
Attention = Focus on important input [OK]
- Thinking attention changes input size
- Confusing attention with model depth
- Assuming attention shuffles data
Solution
Step 1: Recall attention weight calculation
Attention weights are computed by multiplying queries with keys transposed, then applying softmax.Step 2: Evaluate options
Only softmax(Q x K^T) matches the correct formula softmax(Q x K^T). Others are incorrect operations.Final Answer:
softmax(Q x K^T) -> Option AQuick Check:
Attention weights = softmax(Q x K^T) [OK]
- Using addition instead of multiplication
- Forgetting to transpose keys
- Skipping softmax normalization
Solution
Step 1: Calculate dot products Q x K^T
Q = [1,0], K = [[1,0],[-10,1]]; dot products: [1*1+0*0=1, 1*(-10)+0*1=-10]Step 2: Apply softmax to scores
softmax([1,-10]) ≈ [1, 0] (e^{-10} negligible)Step 3: Compute weighted sum of values
Output ≈ 1*[10,20] + 0*[30,40] = [[10, 20]]Step 4: Match option
[[10, 20]] matches exactly.Final Answer:
[[10, 20]] -> Option AQuick Check:
Weighted sum of values = [[10, 20]] [OK]
- Skipping softmax normalization
- Using keys instead of values for output
- Incorrect dot product calculation
import numpy as np Q = np.array([[1, 0]]) K = np.array([[1, 0], [-10, 1]]) scores = np.dot(Q, K) weights = np.exp(scores) / np.sum(np.exp(scores))
Solution
Step 1: Check dot product operation
Dot product should be between Q and K transposed to align dimensions correctly.Step 2: Analyze code
Code uses np.dot(Q, K) without transposing K, causing wrong shape and incorrect scores.Final Answer:
Keys should be transposed before dot product -> Option DQuick Check:
Transpose keys before dot product [OK]
- Forgetting to transpose keys
- Misapplying softmax formula
- Ignoring shape compatibility
Solution
Step 1: Understand dot product scaling
Large dot products can cause softmax to produce very small gradients, slowing learning.Step 2: Role of scaling by sqrt of key dimension
Scaling reduces dot product magnitude, stabilizing gradients and improving training.Final Answer:
To prevent large dot product values causing very small gradients -> Option BQuick Check:
Scaling avoids tiny gradients in softmax [OK]
- Thinking scaling increases dot product
- Confusing scaling with normalization to [0,1]
- Assuming scaling reduces keys count
Ready to prove it?
Pass the test and this pattern moves unknown
