Looking at a single time step of the sat-rnn, one might see 112 neurons deeply saturated (|h| ≈ 1.0) and only 16 near the decision threshold. This suggests a static picture: most neurons are "settled" and carry persistent features, while a few "active" neurons process new information.
This picture is completely wrong.
When we track the actual dynamics across all 1024 positions, every single neuron — all 128 — is volatile. They all flip their sign repeatedly, with a mean dwell time of just 3.3 steps. The static snapshot was misleading because saturation is transient: a neuron may be deeply saturated at time t but flip at t+1.
At each time step, many neurons flip their sign from the previous step. The number varies from ~20 to ~80 flips per step, with a mean around 50.
The number of flips is NOT constant — it varies with the input. Some bytes trigger coordinated state changes (many flips), while others change fewer neurons. This is consistent with the input byte sensitivity analysis: rare bytes like 'b', 'T', '*' cause 40+ flips, while common bytes like space and 'a' cause ~32.
A "dwell" is the number of consecutive steps a neuron maintains the same sign before flipping. If the model had persistent features, we'd expect long dwells. Instead, the distribution is sharply peaked at 1 step.
25,672 dwells last exactly 1 step (the neuron flips at the very next position). 95% of all dwells are ≤ 10 steps. The longest dwell in the entire trace is 46 steps. This is a rapidly mixing Boolean automaton.
Some neurons flip more than others. The most volatile neuron (h20) flips 667 times in 1023 positions — roughly every 1.5 steps. Even the least volatile neurons flip hundreds of times.
| Neuron | Flips | Mean |h| | % Saturated | Dwell Mode |
|---|---|---|---|---|
| h20 | 667 | 0.783 | 7.3% | 1 |
| h88 | 653 | 0.411 | 0.0% | 1 |
| h36 | 633 | 0.770 | 6.5% | 1 |
| h8 | 627 | 0.721 | 3.5% | 1 |
| h3 | 621 | 0.833 | 22.5% | 1 |
| h97 | 613 | 0.844 | 24.4% | 1 |
| h117 | 603 | 0.870 | 31.9% | 1 |
| h19 | 599 | 0.779 | 8.0% | 1 |
| h95 | 597 | 0.800 | 10.1% | 1 |
| h6 | 581 | 0.603 | 0.0% | 1 |
Some neurons flip together — when one changes sign, the other does too. The Jaccard similarity measures how often two neurons flip at the same position. High Jaccard values indicate neurons that are functionally coupled.
| Pair | Co-flips | Jaccard | Individual Flips |
|---|---|---|---|
| h3, h36 | 494 | 0.650 | 621, 633 |
| h97, h117 | 455 | 0.598 | 613, 603 |
| h44, h69 | 406 | 0.592 | 536, 556 |
| h95, h97 | 426 | 0.543 | 597, 613 |
| h20, h88 | 427 | 0.478 | 667, 653 |
| h19, h20 | 418 | 0.493 | 599, 667 |
| h6, h20 | 413 | 0.495 | 581, 667 |
| h8, h88 | 413 | 0.476 | 627, 653 |
We sampled the saturation state at positions throughout the data. At each position, we count how many neurons are "saturated" (|h| > 0.999) and how many flip from the previous step.
The number of saturated neurons is typically 2-10 per step (out of 128). The number of sign flips varies between 20 and 80 per step. There is no trend: the model doesn't "settle down" over time. Position 1000 is just as dynamic as position 10.
Papers: q234-results.pdf • boolean-automaton.pdf
Programs: q4_saturation.c
Related experiments: Boolean Automaton • Neuron Knockout • Offset Analysis • Per-Prediction Justifications