Two SAE latents, one feature? A single energy-weighted transport plan now prices whole-dictionary disagreement and locates it latent by latent
Comparing two sparse autoencoders (SAEs, dictionaries that decompose model activations into sparse learned components) requires answering three things at once: how much two whole dictionaries differ, which latents account for that difference, and how much is sampling noise from finite documents. One energy-weighted optimal-transport plan connects them: its cost is the dictionary-level discrepancy, the cost decomposes exactly into latent contributions, and transported fractions describe how each latent's activation energy is allocated across counterparts, with joint asymptotic confidence intervals. Across four language models it locates differences between SAEs trained on identical data with different seeds and separates topic-dependent changes into a weight term and a cost-matrix term.