Descent at TRAINED weights — the CNN conv2 rungs, through tied pool windows #
REDUCED CERTIFICATE MODEL — this file's net is a 12×12-input, 2-channel MNIST CNN with an
8-wide dense head, NOT the canonical 28×28, 32-channel cnnVerified; chosen so every table is
exact rational arithmetic in the kernel. The canonical net's pool condition is measured on all
10000 test images by scripts/probes/mnist_pool_twin_probe.py.
cnn_conv2_exact_sgd_descends — one exact-gradient SGD step on the conv2 kernel decreases the
cross-entropy loss — instantiated at TRAINED, /128-rationalized weights (biases /16384) and REAL
MNIST test image #0 (label 7, classified correctly), every hypothesis discharged by exact
arithmetic: trained_cnn_conv2_sgd_descends_concrete, at learning rate 2⁻42. The conv2-bias
rung cnn_conv2_bias_exact_sgd_descends on the same net and image is
trained_cnn_conv2_bias_sgd_descends_concrete, at 2⁻36: its radius sits inside the kernel
rung's, so the relu₂ and pool margins carry over by monotonicity. The conv1 rungs need a net with
a conv1 bias (Trained.CnnDescentConv1).
What the instance shows is the pool hypothesis. The image's blank corners make conv1's output
zero there (conv1 is bias-free, so a zero patch gives the padding's value), the cells of a
corner window then read identical all-zero patches, and their conv2 outputs are EQUAL — the
conv2 bias, positive in one channel. 5 live windows tie that way and
7 are dead. The old MaxPool2MarginQ fails at every such window for every margin;
MaxPool2MarginQUpTo takes the twins ConvPatchEq 3 3 x1V (ConvPatchEq.of_zero per tied cell,
zp_*), and every other cell clears the margin (cert_*, through windowMarginUpTo_of_cert).
No pool-tie regularizer was used in training; the ties are the data's.
Net: 24×24-center-cropped MNIST, 2×2 block sums to 12×12 (exact pixel sums /1020), conv 1→2
3×3 SAME without bias → relu → conv 2→2 3×3 SAME → relu → maxpool 2×2 → dense 72→8 → relu →
dense 8→8 → relu → dense 8→10. The rungs move the conv2 kernel or bias; x1V = relu(conv1 image)
is their frozen input (x1_eq). The generator prints the net's test accuracy.
The step is the exact gradient, so the conclusion bounds the true loss, but the decrease
lr·‖∇L‖₂²/2 is not shown positive: that needs a lower bound on the gradient, which the
softmax makes transcendental (Trained.LinearDescent gets one from a misclassified example).
Generated by scripts/certs/trained_cnn_descent.py; weights and input are DATA.
Test image #0, center-cropped and 2×2-summed to 12×12, exact pixel sums /1020.
Equations
- One or more equations did not get rendered due to their size.
Instances For
conv1 kernel (1→2, 3×3), entries k/128; conv1 has no bias.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
conv2 kernel (2→2, 3×3), entries k/128.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Proofs.TrainedCnnDescent.b2 = ![-9 / 16384, 63 / 2048]
Instances For
dense3 (72→8, input×output).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The label of test image #0.
Equations
Instances For
conv1 pre-activations at the image, exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
relu(conv1) at the image: the conv2 rung's input, exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
conv2 pre-activations at the image, exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
relu(conv2) at the image (the max-pool input), exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The pooled feature vector (flattened maxpool output), exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The pool margin up to twins holds at the trained weights, ties and all.
dense3 pre-activations at the image, exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
dense4 pre-activations at the image, exact.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The margin radius a·(lr·G) of the instance, exact.
One exact-gradient SGD step on the conv2 kernel of a trained MNIST CNN, at a real test image
with tied pool windows, decreases the cross-entropy loss by at least lr·‖∇L‖₂²/2, at
lr = 2⁻42. Every hypothesis of cnn_conv2_exact_sgd_descends is discharged above.
The conv2-bias rung's radius lr·G_b, exact; it sits inside the kernel rung's.
One exact-gradient SGD step on the conv2 BIAS of the same trained MNIST CNN, at the same
test image, decreases the cross-entropy loss by at least lr·‖∇L‖₂²/2, at lr = 2⁻36.
Every hypothesis of cnn_conv2_bias_exact_sgd_descends is discharged above; the relu₂ and
pool margins are the kernel rung's (c2_margin, pool_margin) at a smaller radius.