{
 "artifacts": [
  {
   "name": "bench_report.json",
   "url": "https://synthcore.org/code/580/bench_report.json"
  },
  {
   "name": "bench_run.py",
   "url": "https://synthcore.org/code/580/bench_run.py"
  },
  {
   "name": "bench_stage2.py",
   "url": "https://synthcore.org/code/580/bench_stage2.py"
  },
  {
   "name": "experiment.py",
   "url": "https://synthcore.org/code/580/experiment.py"
  },
  {
   "name": "latent_mixture_transport_local.py",
   "url": "https://synthcore.org/code/580/latent_mixture_transport_local.py"
  },
  {
   "name": "report.md",
   "url": "https://synthcore.org/code/580/report.md"
  },
  {
   "name": "report_bench_2026-09-02T223540.md",
   "url": "https://synthcore.org/code/580/report_bench_2026-09-02T223540.md"
  },
  {
   "name": "results.json",
   "url": "https://synthcore.org/code/580/results.json"
  }
 ],
 "category": "regularization",
 "description": "Use a Gaussian-mixture latent prior whose component weights, means, and covariances admit no nontrivial affine automorphism. Add a differentiable penalty that separates component signatures, reducing permutation, reflection, and other affine ambiguities in unsupervised latent representations.",
 "download_zip": "https://synthcore.org/download/580",
 "formulas_latex": [
  "$$p(z)=\\sum_{k=1}^{K}w_k\\,\\mathcal N(z;\\mu_k,\\Sigma_k),\\qquad G_{\\mathrm{mix}}(p)=\\{T(z)=Az+b:T_{\\#}p=p\\}.$$",
  "$$A\\mu_k+b=\\mu_{\\pi(k)},\\qquad A\\Sigma_kA^{\\top}=\\Sigma_{\\pi(k)},\\qquad w_k=w_{\\pi(k)}.$$",
  "$$f(Z)\\sim g(Z^{\\prime})\\ \\Longrightarrow\\ \\alpha(Z^{\\prime})\\sim Z,$$",
  "$$\\mathcal L_{\\mathrm{sym}}=\\sum_{\\pi\\neq\\mathrm{id}}\\sum_{k=1}^{K}\\operatorname{softplus}\\!\\left(\\varepsilon-\\left[\\|\\mu_k-\\mu_{\\pi(k)}\\|_2+\\lambda_{\\Sigma}\\|\\Sigma_k-\\Sigma_{\\pi(k)}\\|_F+\\lambda_w|w_k-w_{\\pi(k)}|\\right]\\right).$$"
 ],
 "id": 1484,
 "implementation": "Integrate this into the latent-prior part of a VAE. Parameterize weights as $w=\\operatorname{softmax}(a)$, means as free vectors $\\mu_k$, and covariances as $\\Sigma_k=L_kL_k^{\\top}+\\delta I$. Keep the standard reconstruction plus KL objective, and add $\\eta\\mathcal L_{\\mathrm{sym}}$. At every optimizer step, compute all component signatures $(w_k,\\mu_k,\\Sigma_k)$. For $K\\leq 8$, enumerate every nonidentity permutation; for larger $K$, sample permutations or evaluate swaps between the nearest means. For each permutation, compute the displayed signature distance and apply the softplus margin penalty. The exact affine-pushforward criterion and component-matching equations come from the paper; the margin penalty is the engineering relaxation. Periodically estimate residual symmetry by fitting $A,b$ for each candidate permutation using least squares on the means, then measuring $\\|A\\Sigma_kA^\\top-\\Sigma_{\\pi(k)}\\|_F$ and $|w_k-w_{\\pi(k)}|$. Run a first experiment on dSprites or MNIST with a 2D or 4D, 4-component VAE. Compare an unconstrained GMM prior against the symmetry-regularized prior at matched reconstruction loss. Use five random seeds and measure factor-probe accuracy, mutual information between latent coordinates and factors, reconstruction error, and seed-to-seed latent alignment after optimal affine matching. Success means lower residual symmetry and substantially lower representation variance across seeds without worse reconstruction.",
 "math_summary": "The paper assumes distributional equality $f(Z)\\sim g(Z^{\\prime})$ and defines latent identifiability as $\\alpha(Z^{\\prime})\\sim Z$, where $\\alpha$ is a global affine map. For a GMM $p(z)=\\sum_{k=1}^{K}w_k\\mathcal N(z;\\mu_k,\\Sigma_k)$, the affine symmetry group is $G_{\\mathrm{mix}}(p)=\\{T(z)=Az+b:T_{\\#}p=p\\}$. An affine transformation preserves the mixture if it permutes components through some permutation $\\pi$ while satisfying $A\\mu_k+b=\\mu_{\\pi(k)}$, $A\\Sigma_kA^{\\top}=\\Sigma_{\\pi(k)}$, and $w_k=w_{\\pi(k)}$. The paper's symmetry-breaking condition is that this group be trivial, or at least contain no unwanted transformation. The adapted loss penalizes component pairs whose means, covariances, and weights are too similar. Here $A$ is an invertible affine linear part, $b$ is a translation, $w_k$ are positive mixture weights summing to one, $\\mu_k$ are component means, $\\Sigma_k$ are positive-definite covariances, and $\\pi$ is a component permutation.",
 "math_tags": [
  "probability",
  "algebra",
  "geometry",
  "linear-algebra"
 ],
 "ml_areas": [
  "vae",
  "embedding",
  "regularization"
 ],
 "paper": {
  "arxiv_id": "2607.23182",
  "arxiv_url": "https://arxiv.org/abs/2607.23182",
  "summary_what_math_gives_to_ml": "The paper gives a constructive framework for removing latent non-identifiability by breaking affine symmetries of Gaussian-mixture priors and distinguishing branches of piecewise-affine decoders. Its transferable asset is the decomposition of ambiguity into mixture symmetries, decoder-boundary symmetries, and latent/decoder parameter conspiracies. This suggests regularizers and parameterizations for VAEs and unsupervised representation learners that produce reproducible latent coordinates and non-interchangeable decoder mechanisms across random seeds.",
  "title": "Beyond ICA: Identifiability by Symmetry Breaking",
  "year": "2026"
 },
 "ratings": {
  "difficulty": 4,
  "novelty": 7,
  "usefulness": 7
 },
 "solves": [
  "stability",
  "generalization",
  "accuracy"
 ],
 "title": "Affine-symmetry-free GMM latent prior",
 "url": "https://synthcore.org/idea/1484/affine-symmetry-free-gmm-latent-prior",
 "verification": {
  "benchmark": {
   "track": "latent_mixture_transport",
   "model": "mlp_tiny",
   "n_seeds": 8,
   "metric_direction": "lower is better",
   "comparison": {
    "baseline_mean": 1.4116074741,
    "idea_mean": 1.4103810191,
    "delta_mean": -0.001226455,
    "per_seed_diffs": [
     0.0033186674,
     -0.0072553158,
     0.0012950897,
     0.0034940243,
     -0.0024430752,
     0.0006661415,
     -0.0076622963,
     -0.0012248755
    ],
    "idea_wins": 4,
    "n_pairs": 8,
    "p_value": 0.4534,
    "mde": 0.0036327497,
    "mde_rel_pct": 0.2573484305,
    "verdict": "no measurable effect",
    "system_worked": false
   },
   "baseline": {
    "best_cfg": {
     "epochs": 12,
     "lr": 0.006,
     "weight_decay": 0.0001
    },
    "sweep": [
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.001,
       "weight_decay": 0
      },
      "mean": 1.8367891312
     },
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.001,
       "weight_decay": 0.0001
      },
      "mean": 1.8365409374
     },
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.003,
       "weight_decay": 0
      },
      "mean": 1.3906366229
     },
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.003,
       "weight_decay": 0.0001
      },
      "mean": 1.39057675
     },
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.006,
       "weight_decay": 0
      },
      "mean": 1.3512018621
     },
     {
      "cfg": {
       "epochs": 12,
       "lr": 0.006,
       "weight_decay": 0.0001
      },
      "mean": 1.3509286046
     }
    ],
    "full": {
     "mean": 1.4116074741,
     "std": 0.1520304655,
     "per_seed": [
      1.1823579073,
      1.3585995436,
      1.2878992558,
      1.5748577118,
      1.2869343758,
      1.4514666796,
      1.4836752415,
      1.6670690775
     ],
     "n": 8
    }
   },
   "idea": {
    "mean": 1.4103810191,
    "std": 0.1516732604,
    "per_seed": [
     1.1856765747,
     1.3513442278,
     1.2891943455,
     1.5783517361,
     1.2844913006,
     1.4521328211,
     1.4760129452,
     1.665844202
    ],
    "n": 0
   },
   "mechanism_signature": {
    "baseline_mean_pair_min": 0.591710411,
    "confirmed": true,
    "idea_mean_pair_min": 1.395195812,
    "predicted_direction": "idea_mean_pair_min \u003e baseline_mean_pair_min",
    "prediction": "signature separation penalty increases minimum component-mean separation and lowers residual component similarity"
   },
   "custom_track": null
  },
  "mechanism_confirmed": true,
  "peer_reviewed": false,
  "practical_verdict": "no_effect",
  "stage1_mechanism_check": {
   "worked": true,
   "confidence": 8,
   "verdict": "Built a differentiable affine-signature separation penalty, an affine-residual estimator, and a small mixture-prior latent autoencoder experiment in experiment.py. The toy stationary-distance prediction matched observations to about 3e-7 across eta values, and increasing epsilon increased separation as predicted. Regularization increased the measured affine residual from 0.512 to 7.317, but worsened reconstruction MSE and mixture NLL, so the mechanism worked while the overall tiny-task utility was not demonstrated.",
   "metrics": {
    "baseline": "Toy eta distances: 0.39472148, 0.96468657, 1.71548712, 2.63753772, 3.51303458 for eta=0.03, 0.1, 0.3, 1.0, 3.0; predicted values matched within 3e-7. Mini reconstruction MSE=0.003588, mixture NLL=0.5015, affine residual=0.5118.",
    "idea": "Toy epsilon distances: 2.3607, 2.4981, 2.6375, 2.8504, 3.1403 for epsilon=0.1, 0.3, 0.5, 0.8, 1.2. Mini reconstruction MSE=0.004398, mixture NLL=2.3799, affine residual=7.317."
   },
   "how_to_run": "python3 experiment.py",
   "files": [
    "experiment.py",
    "results.json"
   ],
   "limitations": "The experiment used a tiny synthetic 2D autoencoder rather than dSprites or MNIST, one random seed, and no factor-probe, mutual-information, or multi-seed latent-alignment evaluation. It did not establish a VAE ELBO win. Coincident components require an infinitesimal initialization perturbation because they form an exact zero-gradient stationary point."
  },
  "status": "mech_ok_no_baseline",
  "status_label": "Mechanism confirmed, baseline not beaten",
  "updated_at": "2026-09-02T22:35:40",
  "verdict_source": "deterministic test code (paired-seed permutation statistics)",
  "verification_axes": {
   "benchmark_mechanism": {
    "confirmed": true,
    "tested": true
   },
   "practical_benchmark": {
    "beats_baseline": false,
    "tested": true,
    "verdict": "no_effect"
   },
   "toy_mechanism_gate": {
    "confirmed": true,
    "tested": true
   }
  }
 }
}
