Supervision on a sibling field does not engage adaptive Cluster commitment without a Cluster reconstruction objective.
Adding a Cluster field as an input does not automatically train its adaptive commitment mechanism. This control keeps the repeated identities and stable labels, but removes reconstruction from the Cluster field.
Seed 0 on gpu: 2 of 2 behavioral checks met. See the measurements below.
Insights
A prediction target beside a Cluster field does not activate that field’s adaptive grouping. The identities repeat and carry stable labels, but the Cluster field is only an input.
The expected result is unchanged committed count and zero adherence, as checked by this experiment. This does not mean every parameter or the label decoder is frozen: the checks concern these specific adaptive-state diagnostics. No label-prediction score is established here.
When adaptive grouping is intended, add a reconstructing mask to the Cluster field before changing capacity or training longer. Then check predictive usefulness and assignment quality separately; merely activating commitment does not establish either.
Setup
Code
"""P019: show that a plain-input Cluster keeps its adaptive state dormant.The supervised label objective does not invoke the Cluster reconstructionloss. Repeated identities alone should leave commitment and adherence frozen."""from collections.abc import Iteratorfrom functools import partialimport lightning.pytorch as litimport torchfrom reporting import reportimport relflow as rffrom relflow.tensorfields.extensions.cluster import EmbedderPROOF_ID ="P019"
Examples
All these identities recur in the generated training table. The label is hidden with mask=True, but the Cluster input has no reconstructing mask.
Repeated identity with a stable label
merchant_id: c2-id7label: L2
This record appears 20 times. Repetition alone does not invoke the Cluster reconstruction loss.
Another identity with the same behavior
merchant_id: c2-id3label: L2
The generator places this identity in the same group. Predicting the sibling label still does not engage adaptive Cluster commitment.
An identity from another group
merchant_id: c4-id8label: L4
The data contains a real contrast between groups; it is not a one-label process. Even so, the expected diagnostic is unchanged commitment and zero adherence. No label-prediction score or recovered assignment for these individual records is asserted.
Synthetic data and controls
Code
def records(seed: int) -> Iterator[dict]:"""Repeat each of 50 identities twenty times with one stable regime label.""" rows = [ {"merchant_id": f"c{cluster}-id{identity}", "label": f"L{cluster}"}for cluster inrange(5)for identity inrange(10)for _ inrange(20) ] order = torch.randperm(len(rows), generator=torch.Generator().manual_seed(seed)).tolist()for index in order:yield rows[index]class Trajectory(lit.Callback):"""Inspect Cluster internals; these diagnostics do not establish partition accuracy."""def__init__(self, address: rf.Address) ->None:self.address = addressself.rows: list[dict] = []def on_train_epoch_end(self, trainer: lit.Trainer, pl_module: lit.LightningModule) ->None: embedder = pl_module.nodes[self.address].embedderifnotisinstance(embedder, Embedder):raiseTypeError(f"{self.address} requires a Cluster embedder, got {type(embedder).__name__}") usage = embedder.usage_ema.detach() probabilities = usage / usage.sum().clamp_min(1e-12) bounded = probabilities.clamp_min(1e-12) entropy =-(bounded * bounded.log()).sum()self.rows.append( {"epoch": trainer.current_epoch,"n_committed": int(embedder.committed.sum().item()),"perplexity": float(torch.exp(entropy).item()),"adherence": float(embedder.adherence_ema.item()), } )
Model tree
Figure 1: Merchant ID has no reconstruction objective. Only the label is a hidden prediction target.
How it works
Cluster’s reconstruction loss updates its adaptive usage and commitment state. Training only the sibling label objective does not invoke that loss. The absence of a Cluster reconstruction objective therefore leaves the measured commitment mechanism inactive even though the identity recurs.
This model uses 1,000 observations: five label groups, ten identities per group, and 20 observations per identity. It trains for five deterministic epochs, reusing the same table for validation. A callback inspects the committed count and adherence at each epoch.
To engage the mechanism, the paired reconstructing-label experiment adds rf.Mask(rate=0.5, reconstruct=True) to the Cluster field.
Repeat this negative control alongside the positive variants across three core seeds. The broader family still needs independent held-out observations, partition recovery, and unique-identity and no-regime controls. Its count thresholds also need at least ten calibration seeds.
Reproduce
Run by stable ID from the repository root:
uv run python proofs/run.py P019
Or run the self-contained script directly:
PYTHONPATH=proofs uv run python proofs/cluster/plain_input_is_dormant.py
Add --accelerator gpu for CUDA or --seed 42 for another seeded experiment. --steps 2 checks execution with a short training budget; it is recorded as a smoke run.