M5 · Performance OptimizationM5-0323 min read
Lesson 37 of 51 · Module 6 of 7 · Week 5
Threads:The compute-efficiency thread
Neural Network Pruning: Structured vs. Unstructured Sparsity
Pruning removes redundant weights, neurons, or filters from a trained network to shrink it and cut compute while preserving most of its performance; structured pruning removes whole channels or filters and is hardware-friendly, while unstructured pruning zeroes individual weights, reaching sparser results that are harder for a GPU to actually accelerate, and either way a short fine-tuning pass afterward is what recovers the accuracy pruning cost.
By the end you can
- 01State what pruning removes and why a trained network tolerates losing some of its weights.
- 02Distinguish structured pruning from unstructured pruning by what each one removes and what each one costs in practice.
- 03Explain why unstructured pruning's sparsity does not automatically translate into faster inference on typical hardware.
- 04Recognize why pruning is normally followed by a fine-tuning pass, and what that pass is recovering.
What pruning is and why a trained network tolerates it
Identity statement: neural network pruning is the process of removing weights, neurons, or filters from a trained network — identified as contributing little to its output — in order to reduce the network's size and the compute required to run it, while preserving most of its original performance.
When it matters: any time a scenario describes a trained multimodal model that needs to be smaller or faster and mentions removing parts of the network itself, rather than changing how those parts are numerically represented.
[GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md): "Neural network pruning removes redundant weights/neurons/filters from a trained network to reduce size and compute while preserving performance." The word "redundant" is doing real work here. A network trained with more capacity than its task strictly requires typically ends up with many weights whose magnitude is near zero, or whose removal barely moves the output for the inputs the network actually sees — these are the candidates pruning targets. A weight is not redundant because it is small in absolute terms alone; it is redundant because the network's output does not meaningfully depend on it, which is usually correlated with small magnitude but is not strictly the same thing, and more sophisticated pruning criteria look at the weight's actual contribution rather than its size alone.
[GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md) also names a specific class of technique worth recognizing by name: "optimization-based approaches (e.g., combinatorial methods) prune many weights at once for better sparsity–accuracy tradeoffs." Simpler pruning criteria remove one weight at a time, ranking every weight independently and cutting the least important ones; a combinatorial or optimization-based approach instead considers how removing several weights together affects the output, because two weights that each look individually unimportant can still be jointly load-bearing — removing both at once can hurt more than removing either one alone would predict. This is the pruning-specific version of the same interaction effect that makes multi-variable experiments hard to reason about (M3-01): removing things one at a time and removing things in combination are genuinely different problems, and a pruning method that only evaluates single weights in isolation can miss exactly the interactions that matter most.
Structured vs. unstructured pruning
L1 — Intuition: removing whole shelves versus removing individual books
Structured pruning removes an entire, regularly-shaped unit — a whole channel, a whole filter, an entire attention head — the way clearing a whole shelf removes every book on it at once, leaving the remaining shelves exactly as full and exactly as easy to access as before. Unstructured pruning removes individual weights wherever they happen to be least important, the way pulling out one book from every shelf leaves every shelf partially, irregularly emptied — more total space freed for the same number of items removed, but no shelf is now fully empty, so nothing about the shelving itself gets any simpler.
L2 — Mechanism: what gets removed, and why the shape matters to hardware
[GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md) states the core distinction directly: "Structured pruning removes whole channels/filters (hardware-friendly); unstructured pruning zeroes individual weights (sparser but harder to accelerate)."
Structured pruning removes an entire, predictable unit of the network's structure — a convolutional filter, an output channel, a row or column of a weight matrix, or in a transformer, an entire attention head. Because the removed unit has a regular, predictable shape, the resulting smaller network can be represented with an ordinary dense weight matrix, just a smaller one — a GPU's existing dense matrix-multiply hardware runs it exactly as fast per element as it ran the original network, there is simply less of it to run. This is the property that makes structured pruning "hardware-friendly": no new hardware support or special sparse-matrix handling is required, the result is architecturally just a smaller version of the same network.
Unstructured pruning zeroes individual weights wherever a per-weight importance criterion says they matter least, without respect to any structural boundary — a weight matrix pruned this way still has its original dimensions, but some fraction of its entries are now exactly zero, scattered throughout in no particular pattern. This reaches a given accuracy target with fewer nonzero weights than structured pruning typically can, because it is free to remove exactly the least-important individual weight wherever it happens to sit, rather than being constrained to remove only whole units. The cost is that a weight matrix with scattered zeros is still, mechanically, the same size and shape it always was — a dense matrix-multiply routine has no way to skip the zero entries and simply does the same amount of arithmetic it always did, multiplying by zero instead of skipping the multiplication. Realizing an actual speedup from unstructured sparsity requires specialized sparse-matrix hardware or software support capable of recognizing and skipping the zeroed entries, which is a narrower and more hardware-generation-dependent capability than the dense matrix-multiply support every GPU already has.
L3 — The exam-relevant edge case: sparser is not the same as faster
This is the distinction the exam's own framing is testing when it asks you to choose between the two methods for a described deployment target: unstructured pruning's sparsity numbers — the percentage of weights zeroed — can look more impressive than structured pruning's, and a naive reading assumes more zeros must mean more savings. Whether that sparsity actually translates into a faster or smaller deployed model depends entirely on whether the serving stack underneath can exploit scattered zeros, which is a separate, additional requirement beyond the pruning step itself. A team targeting a deployment environment without dedicated sparse-matrix acceleration gets a real speedup from structured pruning immediately, because the resulting network is just smaller and every existing dense-matmul path already benefits. The same team applying unstructured pruning at an even higher reported sparsity percentage can end up with a model that is smaller to store but not meaningfully faster to run, because the matrix-multiply hardware still processes every zero entry as if it were a real number.
⭐ THE EARNED INSIGHT
Pruning has two separate outputs that are easy to conflate: how many weights got removed, and how much faster or smaller the deployed model actually becomes. Structured pruning ties those two outputs together tightly, because a smaller dense matrix is unconditionally faster on hardware every GPU already has. Unstructured pruning decouples them — a high sparsity percentage is a real property of the resulting weight matrix, but it converts into a real speedup only if something downstream is specifically built to exploit scattered zeros, which is a second, independent condition a described scenario can either satisfy or fail to satisfy.
Comparison table: structured vs. unstructured pruning
| Dimension | Structured pruning | Unstructured pruning |
|---|---|---|
| What gets removed | Whole channels, filters, or attention heads | Individual weights, wherever ranked least important |
| Resulting weight-matrix shape | Smaller, but still a regular dense matrix | Original dimensions, with scattered zero entries |
| Hardware-friendliness | High — runs on any existing dense matmul path | Lower — needs sparse-matrix support to realize a speedup |
| Achievable sparsity at a given accuracy loss | Lower, because removal is constrained to whole units | Higher — free to remove exactly the least-important individual weight |
| Typical accuracy impact at moderate sparsity | Small, if the removed units were genuinely low-contribution | Small, for the same reason, but easier to push further before it grows |
| Deployment target it suits best | General hardware with no special sparse-matrix support | Hardware or software stacks with dedicated sparse-tensor acceleration |
| Fine-tuning afterward | Usually still beneficial | Usually necessary, especially at higher sparsity |
Worked example: pruning a vision encoder's convolutional filters (structured)
Constructed scenario, with every figure derived from stated assumptions rather than measured on a real checkpoint. A vision encoder's convolutional layer has 512 output filters, each contributing to the layer's output feature map. A structured-pruning pass ranks the 512 filters by an importance score — for instance, the average magnitude of each filter's weights, or its contribution to the layer's output variance — and removes the lowest-ranked 25%.
Before pruning:
512 filters x (3x3 kernel x 256 input channels) = 512 x 2,304 = 1,179,648 weights
Layer output: 512 feature maps
After removing the 128 lowest-ranked filters (25%):
384 filters x 2,304 = 884,736 weights (25% fewer weights, exactly)
Layer output: 384 feature maps
Downstream effect: every layer consuming this layer's output must also
shrink its input dimension from 512 to 384 channels, since the removed
filters' outputs no longer exist to be consumed.
Two things are visible in this arithmetic that generalize past this specific layer. First, the weight reduction is exact and predictable — remove 25% of the filters, get exactly 25% fewer weights in this layer — which is the direct consequence of removing a whole, regularly-shaped unit rather than a scattered set of individual entries. Second, the removal has a downstream ripple effect: because the next layer's input dimension was sized to match this layer's 512-channel output, that next layer must also be resized to accept 384 channels, and doing so changes its own weight count too. This ripple is a real cost of structured pruning's own hardware-friendliness — removing a whole unit is clean specifically because everything connected to it must also be resized cleanly, whereas unstructured pruning's scattered zeros need no such resizing anywhere, because the matrix dimensions never change.
Worked example: pruning the same layer with unstructured pruning, and why storage savings and speed savings diverge
Take the same 1,179,648-weight convolutional layer from section 4, but this time zero individual weights by magnitude, wherever they fall, rather than removing whole filters.
Before pruning: 1,179,648 weights, stored as 32-bit floats = 4,718,592 bytes (~4.5 MB)
After unstructured pruning to 70% sparsity (zeroing the 70% smallest-
magnitude individual weights, scattered throughout the matrix):
Nonzero weights: 1,179,648 x 0.30 = 353,894
If stored in a sparse format (value + index per nonzero entry,
roughly 8 bytes each on a typical sparse encoding):
353,894 x 8 bytes = 2,831,152 bytes (~2.7 MB)
If stored in the original dense format (all 1,179,648 positions
still allocated, most holding zero):
1,179,648 x 4 bytes = 4,718,592 bytes (~4.5 MB, unchanged)
Storage-wise, sparse encoding gets a real win — roughly 40% smaller than the dense original, even though 70% of the weights are zero, because a sparse format's per-entry overhead (an index alongside each value) eats into the theoretical savings. But storage is not the same question as speed:
Inference time on hardware with no sparse-matmul support:
The matmul kernel processes all 1,179,648 positions regardless of
which ones are zero — multiplying by zero still costs a cycle.
Inference time: unchanged from the dense, unpruned layer.
Inference time on hardware with sparse-matmul support:
The matmul kernel skips zero entries entirely.
Inference time: roughly proportional to the 30% nonzero fraction,
i.e. meaningfully faster.
This is a constructed illustration, with every number derived from stated assumptions, built specifically to make the storage-versus-speed divergence visible; it is not a measurement from any real deployment. The lesson to generalize is exact: unstructured pruning's 70% sparsity is a real, measurable property of the weight matrix in every case, but whether that 70% converts into faster inference depends entirely on whether the hardware or software stack underneath has sparse-matmul support — a condition external to the pruning method itself, and the exact gap section 2's L3 discussion names directly.
Why pruning is normally followed by fine-tuning
[GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md): "Pruning is typically followed by fine-tuning to recover accuracy." Removing weights, however carefully targeted, changes the network's function — the remaining weights were trained under the assumption that the removed ones were also contributing, and once they are gone the remaining weights are operating in a slightly different context than the one they were originally optimized for. A short fine-tuning pass — continuing training, usually at a reduced learning rate, on the pruned network — lets the surviving weights adjust to compensate for what was removed, recovering some or most of the accuracy the pruning step cost.
This mirrors the recovery relationship between PTQ and QAT from M5-02 in shape, though the mechanism differs: quantization rounds every weight's precision and QAT teaches the model to tolerate that rounding during training; pruning removes weights entirely and fine-tuning teaches the remaining weights to compensate for the removal afterward. Both are examples of the same broader pattern in this module — an aggressive size or speed intervention followed by a recovery step that is cheaper than the training run that originally produced the model.
Pruning a multimodal model's separate encoders at different rates
M5-02 established that a multimodal model's vision encoder, text encoder, and fusion layer can tolerate the same precision cut to very different degrees, and the same structural fact holds for pruning: nothing requires pruning every component of a multimodal model to the same sparsity target. This is inference from the general mechanism of pruning applied to multimodal architecture, not a claim traceable to a specific NVIDIA study-guide sentence about per-component pruning policy. A vision encoder built on a convolutional backbone often has substantial filter-level redundancy — many filters learn near-duplicate or rarely-activated features — and tolerates a fairly aggressive structured-pruning pass well. A small fusion layer sitting at the point where two modalities' representations must be combined correctly has comparatively little redundant capacity to spare, for the same structural reason M5-02's worked example found the fusion head disproportionately sensitive to quantization: a component with few parameters and a narrow, high-stakes role in the pipeline has less room to lose weights without losing function.
The practical implication mirrors M5-02's: measure each component's accuracy impact separately before committing to one pruning rate for the whole model. A uniform 40% pruning rate applied everywhere might be comfortably absorbed by the vision encoder, mostly absorbed by the text encoder, and genuinely damaging to the fusion layer — and a whole-model accuracy average, exactly as in the quantization case, can hide which component actually took the hit. Pruning each component to the rate it individually tolerates, rather than one rate for the whole model, is the more accuracy-efficient choice whenever the components' redundancy differs enough to matter.
Decision table: choosing a pruning strategy for a deployment target
The situations below each pair a described deployment constraint with a default action and the reasoning behind it.
| Situation | Do this | Reasoning |
|---|---|---|
| Deploying to general-purpose hardware with no sparse-matmul support | Structured pruning | Only structured pruning's savings are unconditionally realized on ordinary dense-matmul hardware |
| Deploying to hardware or a serving stack with confirmed sparse-tensor acceleration | Unstructured pruning is viable, and may reach a higher sparsity–accuracy tradeoff | Its higher achievable sparsity converts into a real speedup only under this condition |
| Storage footprint matters more than inference speed | Unstructured pruning with a sparse storage format | Storage savings from sparse encoding are realized regardless of matmul support; speed savings are not |
| Unsure whether the target stack supports sparse acceleration | Default to structured pruning | Its benefit does not depend on an unconfirmed hardware capability |
| Accuracy dropped more than expected after pruning | Fine-tune the pruned network before concluding the sparsity level is too aggressive | Fine-tuning routinely recovers accuracy that looks lost immediately after pruning |
| Combining pruning with quantization on the same model | Prune first, then quantize the pruned network, then re-run the eval set | The two attack different redundancy; stacking them requires re-measuring after each step, not assuming the effects simply add |
Common mistakes about neural network pruning
The recurring failure across the mistakes below is treating pruning's two outputs — a smaller model and a faster model — as automatically the same thing.
| Mistake | Symptom | Cause | Fix |
|---|---|---|---|
| Assuming a higher sparsity percentage always means a faster model | A heavily-pruned unstructured model runs no faster than before pruning | Sparsity is a property of the weight matrix; speed depends on whether the hardware can skip zeros | Confirm sparse-matmul support before choosing unstructured pruning for a speed goal |
| Skipping fine-tuning after pruning | Accuracy loss looks larger than the pruning method's typical reported cost | The remaining weights never got a chance to adjust to the removed ones | Fine-tune at a reduced learning rate after pruning, before judging the accuracy cost final |
| Pruning individual weights one at a time with no interaction check | Removing several individually-unimportant weights together costs more accuracy than expected | Two weights can be jointly load-bearing even when each looks unimportant alone | Consider a combinatorial or optimization-based pruning criterion when single-weight rankings underperform |
| Treating structured and unstructured pruning as interchangeable | A deployment plan assumes a sparsity target will translate directly to a latency target | The two methods have different hardware dependencies for realizing their savings | Match the method to the confirmed capability of the deployment hardware |
| Forgetting the downstream ripple effect of structured pruning | A resized layer's neighboring layer throws a dimension-mismatch error | Removing a whole filter changes the output dimension every downstream layer expects | Resize every connected layer's input dimension to match the pruned layer's new output size |
| Confusing pruning with quantization | Describing weight removal when the scenario is actually about numeric precision reduction, or vice versa | Both are model-shrinking techniques introduced in the same module | Pruning removes weights; quantization reduces the precision of the weights that remain |
Every row above traces back to the same root confusion between a model getting smaller and a model getting faster, which are related but not identical outcomes.
Why is pruning on the NCA-GENM exam?
Performance Optimization is Domain 5 of the NCA-GENM blueprint at 10% weight, and [GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md) lists pruning among the concrete techniques the domain expects you to recognize at a foundational level: what each one trades off and when to reach for it, not the mathematics of a specific pruning criterion. For pruning specifically, that foundational bar means being able to name the structured-versus-unstructured distinction instantly, state which one is hardware-friendly and why, and recognize that a fine-tuning pass typically follows either one.
Questions in this family tend to arrive as an identification item naming which pruning method removes whole channels or filters (structured) versus which zeroes individual weights (unstructured), or as a scenario item describing a deployment target and asking which method suits it — the keyed reasoning traces back to whether the target hardware can exploit scattered sparsity, exactly the distinction sections 2 and 5 build. A related trap worth anticipating even though the source material's own explicit trap list for this subsection is short: an option describing unstructured pruning as strictly superior because it reaches higher sparsity, without qualifying that claim against hardware support, is offering a true fact about achievable sparsity as if it settled a different question — realized speedup — that it does not by itself answer.
What the distractors typically look like
Expect an option that swaps which method is "hardware-friendly" — describing unstructured pruning's scattered zeros as the easy-to-accelerate case, when it is structured pruning's regular shape that any GPU's existing dense-matmul path already benefits from. Expect a sparsity percentage offered as if it were already a speed or latency number, trading on the fact that "more zeros" sounds like it should mean "faster" without the hardware-support qualifier attached. And expect fine-tuning omitted from a described pruning workflow as if pruning alone, with no recovery step, were the complete and standard procedure.
Can you prune and quantize the same model?
Yes, and doing both is common practice precisely because the two techniques attack different kinds of redundancy: pruning removes weights the network barely uses, while quantization represents the weights that remain with fewer bits. The two do not simply add together automatically, though — pruning first and then quantizing the smaller, pruned network is the typical order, because pruning changes which weights exist before quantization decides how coarsely to represent them, and reversing the order (quantizing first, then trying to prune a low-precision model) makes the importance-ranking step that pruning depends on noisier, since a quantized weight's magnitude is itself already an approximation. Whichever order is used, the combined result needs its own accuracy re-measurement on the held-out eval set — you cannot assume the two techniques' individually-measured accuracy costs simply sum, because each one changes the starting point the other operates on.
What is the difference between pruning and quantization?
Pruning removes weights, neurons, or filters from a trained network entirely, reducing its parameter count; quantization, covered in M5-02, keeps every weight but represents each one with fewer bits, reducing the precision rather than the count. A pruned model has fewer numbers to store and, if structured, fewer computations to perform; a quantized model has the same number of numbers, each one smaller. The two are frequently combined — a model can be pruned first to remove genuinely redundant capacity, then quantized to compress what remains — but they are answering different questions about the same trained network, and a question describing "removing" something is pruning while a question describing "reducing precision" or "fewer bits" is quantization.
Is pruning always applied after training, or can it happen during training?
The framing in this lesson, and in the source material's own description, treats pruning as a post-training operation applied to an already-converged network, followed by a fine-tuning pass to recover accuracy — the same overall shape as PTQ followed by an optional accuracy-recovery step, rather than the QAT shape of building the intervention into training from the start. Some research directions do prune progressively during training itself, gradually increasing sparsity as training proceeds rather than pruning a finished model all at once, but [GROUND TRUTH] (Sources/nca-genm/domain-5-performance-optimization.md) does not name this as a distinct, separately-tested technique the way it names PTQ and QAT as two named quantization methods, so treat "prune, then fine-tune" as the exam-relevant default shape and any during-training variant as a real but not separately-keyed elaboration. ⚠️ UNVERIFIED: whether NVIDIA's own study guide expects recognition of progressive during-training pruning as a distinct exam-testable concept is not stated in the available source material.
Does unstructured pruning ever fail to save any memory at all?
Only if it is stored in the same dense format the unpruned model used, in which case every zeroed position still occupies its original allocated slot and no storage is saved, even though the numeric value at that position is now zero. Realizing unstructured pruning's storage savings requires switching to a sparse storage format that records only the nonzero entries and their positions, which section 5's worked example shows recovers a real, if smaller-than-naively-expected, storage win because of the per-entry overhead a sparse format carries. Structured pruning has no equivalent caveat, because removing a whole filter or channel shrinks the matrix's actual dimensions — there is no "unpruned-format" version of a structurally pruned layer that still allocates space for the removed unit.
Glossary recap: pruning terms this lesson introduced
| Term | One-line definition |
|---|---|
| Pruning | Removing weights, neurons, or filters from a trained network to reduce its size and compute |
| Structured pruning | Removing a whole, regularly-shaped unit — a channel, filter, or attention head — producing a smaller dense network |
| Unstructured pruning | Zeroing individual weights wherever ranked least important, producing a sparse matrix of the original dimensions |
| Sparsity | The fraction of a weight matrix's entries that have been zeroed |
| Sparse-matmul support | Hardware or software capability to skip zeroed entries during a matrix multiply, required to realize unstructured pruning's speed benefit |
| Combinatorial / optimization-based pruning | A pruning criterion that considers several weights' joint contribution rather than ranking each weight in isolation |
| Fine-tuning (post-pruning) | A short continued-training pass that lets the remaining weights compensate for what was removed |
Closing quiz: structured vs. unstructured pruning
Work through each item before checking the answer key. Every option is a real claim about some pruned model somewhere — the task is matching it to the described scenario, not spotting an obviously fabricated distractor.
- Which pruning method removes an entire convolutional filter rather than individual weights inside it?
- A. Unstructured pruning.
- B. Structured pruning.
- C. Quantization-aware pruning.
- D. Post-training pruning.
- Why is structured pruning described as "hardware-friendly"?
- A. It always achieves higher sparsity than unstructured pruning.
- B. The resulting network is a smaller dense matrix that any existing dense-matmul hardware runs at full speed.
- C. It requires no fine-tuning afterward.
- D. It only works on NVIDIA GPUs.
- A team reports 80% unstructured sparsity on a deployed model but measures no inference speedup. What is the most likely explanation?
- A. 80% sparsity is too low to matter.
- B. The deployment hardware or software stack lacks sparse-matmul support, so zeroed entries are still multiplied.
- C. Unstructured pruning never produces real sparsity.
- D. The model was quantized instead of pruned.
- What is fine-tuning after pruning meant to recover?
- A. The parameters that were removed.
- B. Accuracy lost because the remaining weights were optimized under the assumption that the removed weights were also contributing.
- C. The original model's full parameter count.
- D. Sparse-matmul hardware support.
- Why might a combinatorial or optimization-based pruning criterion outperform ranking weights individually?
- A. It always prunes more weights in total.
- B. It can catch weights that are only redundant jointly, which an individual ranking misses.
- C. It requires no training data.
- D. It is the same as structured pruning under a different name.
- What happens to a downstream layer when an upstream layer is structurally pruned?
- A. Nothing — structured pruning never affects neighboring layers.
- B. The downstream layer's input dimension must shrink to match the pruned layer's smaller output.
- C. The downstream layer is automatically quantized.
- D. The downstream layer's weights are unaffected because pruning only changes storage format.
Answers
- B. Structured pruning is defined by removing a whole regularly-shaped unit — a filter, channel, or head — not individual weights.
- B. This is the mechanism from section 2's L2: a smaller dense matrix runs on the same hardware path at the same per-element speed, with no special sparse-matrix support required.
- B. This is exactly the storage-versus-speed divergence section 5's worked example demonstrates: sparsity is real, but a speedup requires hardware or software capable of skipping zero entries.
- B. Fine-tuning lets the surviving weights adjust to a network that now genuinely lacks the removed weights' contribution, recovering accuracy rather than restoring anything that was removed.
- B. This is the exact justification
[GROUND TRUTH](Sources/nca-genm/domain-5-performance-optimization.md) gives for combinatorial methods: better sparsity-accuracy tradeoffs by considering joint contribution. - B. This is the ripple effect from section 4's worked example — the next layer's expected input size no longer matches unless it is resized too.
Key takeaways on neural network pruning
- Pruning removes weights, neurons, or filters from a trained network; it is a size-and-compute reduction, not a precision reduction — that distinction separates it cleanly from
M5-02's quantization. - Structured pruning removes whole channels or filters and is hardware-friendly on any existing dense-matmul path; unstructured pruning zeroes individual weights, reaching higher sparsity but needing sparse-matmul support to actually run faster.
- A high sparsity percentage is a real property of the pruned weight matrix, but whether it becomes a real speedup depends on a separate, external condition: whether the deployment hardware can exploit scattered zeros.
- Structured pruning's removal ripples into every downstream layer's input dimension; unstructured pruning's scattered zeros require no such resizing.
- Fine-tuning after pruning is the normal next step, not an optional extra — it lets the surviving weights adjust to compensate for what was removed.
- Combinatorial or optimization-based pruning criteria exist because individually-ranking weights can miss weights that are only redundant jointly, not separately.
This module now turns from removing capacity to finding the right settings for the capacity you keep. Next: M5-04 covers hyperparameter tuning — grid search, random search, and Bayesian optimization as three different strategies for searching a hyperparameter space, and why learning rate is the most sensitive hyperparameter to get right across every one of the three.