DeepSeek Sparse Attention: Learned Token Selection from Scratch
Letting the model choose its own sparse pattern — a lightweight indexer scores every past token, top-k selects the keys that matter for this query, and two-stage training with KL alignment keeps the sparse model faithful to its dense teacher at $O(nk)$ cost.
The previous two blogs derived two approaches to sparse attention, both living on the same axis: reduce the number of entries each token attends to.
The Sparse Transformer (the Sparse Factorization blog) used fixed factorized patterns — strided and fixed — achieving . The patterns were rigid: which tokens attend to which was determined entirely by position, independent of content.
Longformer (the Sliding Window blog) used sliding windows plus global attention, achieving . The windows were local and fixed-width, the global tokens were chosen by task (like [CLS] for classification), not by content. This was simpler and faster, but still static — token 7 always attends to tokens 5 through 9 regardless of what those tokens contain.
Both approaches make the same fundamental bet: the structure of attention can be decided in advance. Neither approach asks the question: “given what this token actually says, which other tokens in the context are most relevant to it?”
DeepSeek Sparse Attention (DSA), introduced in the DeepSeek-V3.2 paper (DeepSeek-AI, 2025), takes the next step. It learns a lightweight scoring network — the lightning indexer — that reads each query token and every preceding token, scores their relevance, and selects only the top- most relevant tokens for attention. The attention pattern is no longer fixed by position or task. It is determined dynamically, at inference time, by the content of the tokens themselves.
The result: attention complexity drops from to where is a fixed budget of selected tokens, with no degradation in model quality on standard benchmarks.
We will derive the entire mechanism from scratch, trace every computation by hand, and verify every count numerically.
The Running Example
We continue with the same sequence of tokens from the previous blogs:
Since DSA is designed for autoregressive (causal) models, each token can only attend to preceding tokens (plus itself). We focus on computing the attention output for query token , which has 10 preceding tokens to choose from: positions 0 through 9.
We fix the following DSA-specific parameters:
- Indexer dimension: (the dimension of indexer query and key vectors)
- Indexer heads: (number of heads in the lightning indexer)
- Selection budget: (number of tokens selected for attention)
For the main attention mechanism, the same model as always:
- , heads, , layers, fp16
In the real DeepSeek-V3.2 deployment, tokens are selected from contexts of up to tokens. We use out of 10 preceding tokens so that we can trace every computation by hand.
1. The Problem with Fixed Sparse Patterns
1.1 What the Sparse Transformer and Longformer assume
Both previous approaches define the connectivity set — the set of tokens that position attends to — using a fixed rule based on position alone:
Sparse Transformer (Sparse Factorization blog): is determined by strided or fixed factorization patterns. Token attends to tokens at positions within its stride group and to designated summary positions. The rule depends on .
Longformer (Sliding Window blog): , where is the window radius and is a fixed set of global positions. The rule depends on and whether .
In both cases, is the same regardless of what the tokens contain. If token 5 is the word “the” or the word “catastrophe,” it attends to exactly the same set of positions.
1.2 Why this wastes capacity
Real attention patterns in trained transformers are not uniform. Empirically, attention is highly concentrated: for a given query, a small number of key-value pairs receive the vast majority of attention weight, and the rest receive near-zero weight. Clark et al. (2019) and Kovaleva et al. (2019) documented this extensively.
A sliding window of width computes attention scores for all 512 positions in the window, but many of those scores are near zero after softmax. The computation spent on near-zero entries is wasted.
The ideal approach: for each query, identify the small number of tokens that would receive high attention weight under full attention, attend only to those, and skip the rest. This is what DSA does.
1.3 The design challenge
The challenge is circular: to know which tokens would receive high attention weight, we need to compute the attention scores — but computing all attention scores is exactly what we are trying to avoid.
DSA resolves this circularity with a two-component design:
- A lightning indexer — a small, cheap scoring network that approximates the full attention distribution
- A top- selector — picks the highest-scoring tokens according to the indexer
The indexer is much cheaper than full attention, so the total cost (indexer + sparse attention on selected tokens) is less than the cost of full dense attention.
2. The Lightning Indexer
2.1 Definition
The lightning indexer is a small multi-head network that computes an index score between a query token at position and each preceding token at position . This score estimates how relevant token is to token .
The formula is:
where:
- is the number of indexer heads (a small number, independent of the main attention heads )
- is the indexer query vector for token at indexer head , derived from the query token’s hidden state
- is the indexer key vector for token , derived from the preceding token’s hidden state
- is a scalar weight for indexer head at query position , also derived from
- is the rectified linear unit
The dot product measures the alignment between query and key in indexer head . The ReLU clips negative alignments to zero — if a token is anti-aligned with the query, it contributes nothing. The scalar weights allow the model to weight different indexer heads differently for each query position.
2.2 Why ReLU instead of softmax
The main attention mechanism uses softmax to normalize scores into a probability distribution. The indexer uses ReLU instead. Why?
The indexer does not need normalized scores. Its only job is to produce a ranking — which tokens have the highest scores — so that the top- selector can pick them. For ranking, unnormalized scores suffice. ReLU is cheaper to compute than softmax (no exponentiation, no summation over all positions), and it can be implemented efficiently in low-precision arithmetic (FP8). Since the indexer runs over every query-key pair — the same number of pairs as full attention — making each operation as cheap as possible is critical.
2.3 Tracing for our running example
We compute for all preceding tokens .
We use indexer heads and . Here are the concrete vectors:
Indexer head 1 (): ,
Indexer head 2 (): ,
Indexer key vectors (shared across heads, derived from each preceding token’s hidden state):
| Token | |
|---|---|
| 0 | |
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 |
2.4 Step-by-step computation
Head 1 (, ):
For each token , we compute the dot product , apply ReLU, then multiply by :
| 0 | ||||
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | ||||
| 7 | ||||
| 8 | ||||
| 9 |
Head 2 (, ):
| 0 | ||||
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | ||||
| 7 | ||||
| 8 | ||||
| 9 |
2.5 Combining heads
The total index score for each token is the sum across both heads:
| Token | Head 1 contribution | Head 2 contribution | |
|---|---|---|---|
| 0 | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 |
2.6 Interpretation
The index scores are content-dependent. Token 3 scores highest () because its key vector aligns well with both indexer heads. Token 6 scores zero because its key vector is anti-aligned with both indexer queries — ReLU clips both dot products to zero.
This is the fundamental difference from all previous sparse attention methods. In the Sparse Transformer and Longformer, token 6 might or might not be in the connectivity set, but that decision was based on its position, not its content. Here, token 6 is excluded because the indexer determined — based on the actual hidden states — that it is irrelevant to the current query.
Notice that each head captures different relevance patterns. Head 1 (query ) favors tokens with large second components — tokens 3 and 8, which have key vectors and . Head 2 (query ) favors tokens with large first components and small or negative second components — tokens 9 and 7, with key vectors and . The multi-head structure lets the indexer capture multiple notions of relevance simultaneously.
3. Top- Token Selection
3.1 Definition
Given the index scores for all preceding tokens, the fine-grained token selection mechanism retrieves only the key-value entries corresponding to the top- index scores. The selected set is:
This is the set of token positions with the highest index scores. Only these positions participate in the main attention computation.
3.2 Selection for our running example
With , we select the 3 tokens with the highest index scores from the table above:
| Rank | Token | |
|---|---|---|
| 1 | 3 | |
| 2 | 9 | |
| 3 | 8 |
So the selected set is:
Out of 10 preceding tokens, token 10 will attend to only 3. Tokens 0, 1, 2, 4, 5, 6, and 7 are excluded entirely — their key-value entries are never loaded, and no attention scores are computed for them.
3.3 The attention computation on selected tokens
The attention output for token is computed using only the selected key-value entries:
where denotes the key-value entry for token , and is the standard attention mechanism (query-key dot product, softmax, value-weighted sum).
Expanding this for our example: the query vector is computed from as usual. The key vectors , , and value vectors , , are computed from (or retrieved from the KV cache for) the selected positions. The attention weights are:
The softmax is computed over only 3 entries instead of 10. The output is:
3.4 Comparing connectivity sets
Let us place DSA alongside the previous methods for token in our running example:
| Method | Selection rule | ||
|---|---|---|---|
| Full causal | All preceding tokens | ||
| Sliding window () | Positions within distance | ||
| Longformer (, ) | Window global | ||
| DSA () | Top- by content relevance |
DSA selects token 3, which is far outside the sliding window (distance 7 from position 10). No fixed-window method would include it. But the indexer determined that token 3’s content is highly relevant to token 10’s query — more relevant than nearby tokens 4, 5, 6, or 7.
At the same time, DSA excludes token 10 itself from the selected set (its index score was not in the top 3). In practice, this is handled by always including the current token, or by using a sufficiently large that nearby tokens are naturally included. We omit this detail to keep the example clean.
3.5 Interpretation
The top- selection is a hard selection — tokens either participate in attention or they do not. There is no soft weighting of excluded tokens. This is different from approaches like Adaptive Span (Sukhbaatar et al., 2019) that use a soft mask to gradually reduce attention to distant tokens.
The hard selection has a practical advantage: excluded tokens’ key-value entries are never loaded from memory. In the KV cache during autoregressive generation, this means only entries are read per query token instead of all preceding entries. For long contexts (), this is the dominant source of speedup.
4. Instantiation Under MLA
4.1 Why MLA matters
DeepSeek-V3.2 uses Multi-head Latent Attention (MLA), which was introduced in the DeepSeek-V2 paper and derived in an earlier blog in this series. In MLA, the key-value cache stores a single compressed latent vector per token, rather than separate key and value vectors for each head. This dramatically reduces the KV cache size.
DSA must work within MLA’s framework. The paper implements DSA based on the MQA (Multi-Query Attention) mode of MLA, where each latent vector is shared across all query heads. This means the indexer’s selected set applies uniformly to all attention heads — every head attends to the same set of tokens.
4.2 Why shared selection across heads
At the kernel level, each key-value entry must be shared across multiple queries for computational efficiency. If different heads selected different tokens, the memory access pattern would become irregular and difficult to parallelize. By using MQA mode, all heads share the same selected key-value entries, enabling efficient batched matrix multiplications.
4.3 The indexer’s projection matrices
The indexer query vectors and scalar weights are derived from the query token’s hidden state through learned linear projections. The indexer key vectors are derived from the latent vectors (or equivalently, from the hidden states of the preceding tokens). RoPE (Rotary Position Embedding) is partially applied to the indexer’s queries and keys to encode positional information.
The critical point is that all of these projections are small: is much smaller than , and is much smaller than . The indexer is intentionally lightweight.
4.4 Parameter count of the indexer
Each indexer head requires:
- A query projection: , contributing parameters
- A scalar weight projection: , contributing parameters
The key projection is shared across heads: , contributing parameters.
Total indexer parameters per layer:
4.5 Numerical check
With our running example values (, , ):
Compare to the main attention’s QKV projections: parameters per layer. The indexer adds overhead — negligible.
In practice, the indexer dimensions are larger than our toy example, but the principle holds: the indexer is a tiny fraction of the main model’s parameters.
5. Training Stage 1: Dense Warm-up
5.1 The chicken-and-egg problem
DSA is introduced into an existing pretrained model (DeepSeek-V3.1-Terminus) through continued training. At the start, the lightning indexer is randomly initialized — it has no idea which tokens are relevant. If we immediately use the indexer to select tokens and train with sparse attention, the model would attend to random subsets, producing garbage gradients.
The solution is a two-stage training procedure. The first stage — the dense warm-up — trains the indexer to match the existing model’s full attention distribution while keeping the rest of the model frozen.
5.2 Constructing the target distribution
During dense warm-up, the model runs with full (dense) attention as usual. For each query token , the main attention mechanism computes attention scores across all heads. We need a single target distribution that the indexer should learn to approximate.
The paper constructs this target in two steps:
Step 1: Aggregate across heads. For each query token , sum the attention score matrices across all attention heads to get a single relevance score for each key position :
where is the attention weight that head assigns to key position when processing query position .
Step 2: L1-normalize along the sequence dimension. Divide by the sum to produce a proper probability distribution:
Since each head’s attention weights already sum to 1 (by the softmax normalization property), the sum across heads is . We swap the order of summation by Fubini’s theorem (interchanging finite sums). So the L1 normalization divides by :
This is simply the arithmetic mean of the attention distributions across heads.
5.3 Numerical check
With heads, suppose the attention weights for query at key position across the 8 heads are: .
The target says: “averaged across all heads, about 11.4% of the attention weight goes to token 3.” The indexer should learn to assign a high score to token 3.
5.4 The warm-up loss function
The training objective is a KL divergence between the target distribution and the softmax of the indexer scores :
The KL divergence (also called Kullback-Leibler divergence or relative entropy) between two distributions and over the same discrete set is:
By the logarithm quotient rule (), this is equivalent to:
The first term is the negative entropy of , which is a constant with respect to the indexer parameters (since comes from the frozen main model). So minimizing the KL divergence is equivalent to minimizing:
where . This is the cross-entropy between the target distribution and the indexer’s predicted distribution . The gradient flows only through the indexer parameters.
5.5 What the loss drives the indexer to do
When is large (the main model attends heavily to token ), the loss penalizes the indexer for assigning a low softmax probability to that token. The amplifies small probabilities — if is near zero for a token that values, the loss is very large.
The effect: the indexer learns to produce high scores for exactly the tokens that the full attention mechanism considers important. After warm-up, the indexer’s top- selection should closely match the set of tokens that receive the most attention weight in the full model.
5.6 Warm-up training details
The warm-up stage is deliberately short and focused:
- All model parameters are frozen except the lightning indexer
- Learning rate:
- Duration: 1,000 steps
- Batch size: 16 sequences of 128K tokens each
- Total tokens:
Only 2.1 billion tokens are needed to train the indexer — a tiny fraction of the model’s full pretraining budget. This works because the indexer has very few parameters and the target distribution provides a strong supervision signal.
6. Training Stage 2: Sparse Training
6.1 Transitioning from dense to sparse
After the warm-up, the indexer can approximately identify the most relevant tokens. Now the model transitions to actually using sparse attention: for each query, only the top- tokens selected by the indexer participate in the main attention computation.
In this stage, all model parameters are unfrozen — both the main model and the indexer are trained jointly. The main model adapts to receiving only tokens per query instead of all preceding tokens, and the indexer continues to improve its selection.
6.2 The sparse training loss for the indexer
The indexer’s loss changes in the sparse stage. During warm-up, the KL divergence was computed over all positions. Now, it is computed only over the selected positions :
where denotes the target distribution restricted to the selected set , and is the softmax of the indexer scores restricted to the same set.
6.3 Why restrict to the selected set
During sparse training, the main attention is only computed over the selected tokens. The attention distribution from the main model now only has entries for positions in — there are no attention weights for excluded positions because they were never computed.
So the KL divergence can only be evaluated over positions where both distributions are defined: the selected set .
6.4 Detaching the indexer input
This is a subtle but important implementation detail. The paper states that the indexer input is detached from the computational graph for separate optimization:
“It is worth noting that we detach the indexer input from the computational graph for separate optimization.”
What does this mean? The indexer’s input — the hidden states and from which the indexer queries and keys are derived — comes from the main model’s forward pass. If we allowed gradients to flow from the indexer loss back through these hidden states, the indexer loss would influence the main model’s weights. This would create an undesirable coupling: the main model might distort its representations to make the indexer’s job easier, rather than to minimize the language modeling loss.
By detaching, the two training signals are kept separate:
- The main model is trained only by the language modeling loss (next-token prediction)
- The indexer is trained only by (matching the main model’s attention distribution)
6.5 Sparse training details
- Learning rate: (much lower than warm-up — the main model is being finetuned, not the indexer alone)
- Token selection budget: per query token
- Duration: 15,000 steps
- Batch size: 480 sequences of 128K tokens each
- Total tokens:
6.6 Numerical check on token budget
In DeepSeek-V3.2’s deployment with 128K context, each query token can potentially attend to up to 128,000 preceding positions. The selection budget is . The fraction of tokens selected:
Each query attends to only 1.6% of the context. The remaining 98.4% of key-value entries are never loaded from memory.
For our running example: . At the small scale of 16 tokens, the savings are modest. The benefit scales with context length.
7. Complexity Analysis
7.1 Full attention baseline
In standard causal attention, each query token attends to all preceding tokens plus itself. The total number of attention entries across all positions is:
This is . This is the triangular number formula (also called Gauss’s summation formula).
7.2 DSA core attention
With DSA, each query token attends to at most selected tokens. The total attention entries are at most:
For , the second term dominates:
7.3 Numerical check
With , :
Compare to full causal attention: . Reduction factor: .
At deployment scale (, ):
Reduction factor: .
7.4 The indexer’s own cost
The lightning indexer itself has complexity — it computes a score for every query-key pair, just like full attention. So DSA does not eliminate quadratic operations entirely.
The key insight: the indexer’s per-pair cost is far smaller than the main attention’s per-pair cost. The main attention requires:
- Compute for -dimensional vectors: multiply-adds
- Apply softmax: exponentiation and normalization
- Compute weighted value sum: multiply-adds
The indexer requires:
- Compute for -dimensional vectors: multiply-adds (with )
- Apply ReLU: a single comparison
- Multiply by scalar weight: 1 multiply
- Sum across heads: additions
Since and the indexer can run in FP8 (8-bit floating point) while the main attention typically runs in FP16 or BF16, the indexer’s per-pair cost is a small fraction of the main attention’s per-pair cost.
7.5 Total cost comparison
Let be the per-pair cost of the main attention and be the per-pair cost of the indexer, with .
| Method | Total cost |
|---|---|
| Full attention | |
| DSA |
For the ratio:
With (a rough estimate given the dimension and precision differences) and :
DSA uses roughly 6.6% of the compute of full attention — a reduction.
7.6 The four-method scaling comparison
| Full | Sparse | Window | DSA | |
|---|---|---|---|---|
| 1,024 | 524,288 | 49,152 | 525,312 | 524,288 * |
| 16,384 | 134,217,728 | 3,145,728 | 8,404,992 | 33,554,432 |
| 128,000 | 8,192,000,000 | 68,567,040 | 65,664,000 | 262,144,000 |
For (Longformer) and (DSA). *When (as in the row), DSA cannot select more tokens than exist — it collapses to full attention, so the entry count equals . At first glance, DSA’s entry count is larger than Longformer’s — because . But the comparison is misleading: DSA selects the most relevant tokens from anywhere in the context, while Longformer is restricted to a local window of width . DSA’s selected tokens carry more information per entry because they are chosen by content relevance, not by proximity.
The real comparison is quality-adjusted: DSA with achieves the same model quality as full attention with entries. Longformer with may miss important long-range dependencies that fall outside the window.
8. Parity Evaluation: Does Sparsity Hurt?
8.1 Standard benchmarks
The paper evaluates DeepSeek-V3.2-Exp (the version with DSA) against DeepSeek-V3.1-Terminus (the dense baseline) on a suite of standard benchmarks. The goal: verify that introducing sparse attention does not degrade model quality.
The result: performance is closely matched. On both short-context and long-context tasks, DeepSeek-V3.2-Exp shows no substantial performance degradation compared to the dense baseline. ChatbotArena Elo scores — a measure of human preference — are also closely matched between the two models.
8.2 Long-context evaluation
Long-context tasks are the critical test, because they are where sparse attention is most aggressive (selecting out of up to tokens). On AA-LCR (a long-context reasoning benchmark), DeepSeek-V3.2-Exp scores 4 points higher than DeepSeek-V3.1-Terminus. On Fiction.liveBench, it consistently outperforms the dense baseline across multiple metrics.
This is a striking result. The model that sees only 1.6% of the context per query performs as well as — or better than — the model that sees 100%. The implication: the remaining 98.4% of tokens contribute near-zero attention weight and can be safely ignored.
8.3 Interpretation
The parity result validates the core hypothesis: real attention patterns are sparse, and a lightweight indexer can learn to identify the important tokens. The 2.1 billion tokens of warm-up training are sufficient to align the indexer with the full attention distribution, and the 943.7 billion tokens of sparse training are sufficient for the model to adapt to receiving only selected tokens.
9. Inference Cost Savings
9.1 The cost profile of autoregressive generation
During autoregressive generation (decoding), the model generates one token at a time. For each new token, it must:
- Compute the query vector for the new token
- Load all previous key-value entries from the KV cache
- Compute attention scores against all previous entries
- Produce the attention output
Step 2 is the bottleneck for long sequences — the KV cache grows linearly with sequence length, and loading it from GPU memory is the dominant cost.
9.2 DSA’s effect on decoding cost
With DSA, step 2 changes: instead of loading all previous KV entries, the model first runs the lightning indexer to score all entries, then loads only the top- entries.
The indexer’s scoring requires loading the indexer keys (which are much smaller than the full KV entries, since ). After selection, only full KV entries are loaded.
The paper provides concrete cost comparisons at different sequence positions, estimated from benchmarking on H800 GPUs at $2 per GPU-hour:
At 128K context during decoding, DeepSeek-V3.2 (with DSA) is significantly cheaper per token than DeepSeek-V3.1-Terminus (dense). The cost curves in Figure 3 of the paper show that the dense model’s decoding cost grows linearly with position (as expected — each new token attends to all previous tokens), while DSA’s cost grows much more slowly (the indexer cost grows linearly, but the main attention cost is capped at entries).
9.3 Short-context behavior
For short sequences where the context length is less than or close to , DSA provides no benefit — the model would select all tokens anyway. The paper notes that for short-sequence prefilling, they use a masked MHA mode to simulate dense attention, achieving higher efficiency under short-context conditions.
10. The Unified View: Four Sparse Attention Approaches
We have now seen four approaches to reducing attention complexity, all on the same axis of the taxonomy. Let us place them in a single framework.
10.1 The common abstraction
Every approach defines a connectivity set for each query position . The attention output is identical in all cases:
The only difference is the rule for constructing :
| Method | construction | Depends on content? |
|---|---|---|
| Full attention | No | |
| Sparse Transformer | Fixed factorized patterns | No |
| Longformer | Window global positions | No |
| DSA | Top- by learned indexer | Yes |
10.2 The progression
These four methods represent a clear progression along two dimensions — cost and adaptivity:
| Property | Full | Sparse Transformer | Longformer | DSA |
|---|---|---|---|---|
| Complexity | ||||
| Pattern | Dense | Fixed sparse | Fixed local + global | Learned sparse |
| Task adaptation | None | None | Global token choice | Content-dependent |
| Long-range access | All tokens | 2-hop | Via global tokens or hops | Direct (if indexer selects) |
| Integration | Native | Train from scratch | Drop-in (pretrain bridge) | Continued training |
DSA is the first method in this series where the sparse pattern is determined by content. Every previous method could be fully described before seeing any data — the pattern was a function of positions alone. DSA’s pattern is a function of the actual hidden states at runtime.
10.3 Interpretation
The trajectory from the Sparse Factorization blog through this blog traces a shift from structural assumptions to learned decisions.
The Sparse Transformer assumed periodicity — strided patterns for images, fixed patterns for text. This was a strong inductive bias that worked well for structured data but could not adapt to the actual content.
Longformer assumed locality — most relevant information is nearby, with a few global exceptions. This was a weaker, more general assumption, and it enabled linear scaling. But the global tokens were still chosen by position (the first token, the question tokens), not by content.
DSA makes no structural assumption at all. It learns, from the model’s own attention patterns, which tokens matter for each query. The cost is a small overhead (the indexer) and a two-stage training procedure. The benefit is a sparse attention pattern that is as close to optimal as the indexer can learn — no wasted computation on irrelevant tokens, no missed long-range dependencies that happen to fall outside a fixed window.
Summary
DeepSeek Sparse Attention replaces the fixed connectivity rules of previous sparse methods with a learned, content-dependent token selection mechanism. A lightweight lightning indexer — a small multi-head network using ReLU activations and low-precision arithmetic — scores every preceding token’s relevance to each query, and a top- selector picks the most relevant tokens for the main attention computation. The indexer is trained in two stages: a dense warm-up that aligns it with the full model’s attention distribution via KL divergence (2.1B tokens, 1,000 steps, model frozen), followed by sparse training where both the indexer and the main model adapt jointly (943.7B tokens, 15,000 steps). Instantiated under MLA’s MQA mode, DSA reduces the core attention complexity from to — at and , each query attends to only 1.6% of the context — with no degradation on standard or long-context benchmarks.
Previous: Sliding Window Attention: From Local Windows to Global Context
Next: Mathematical Prerequisites for the Delta Rule
Enjoyed this post?
Subscribe to get notified when I publish new posts. No spam, unsubscribe anytime.