Skip to content

v-code01/gaussnogen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gaussnogen

Continuous-time discrete diffusion needs each forward kernel to be the exponential of a rate matrix, a generator. The uniform and absorbing kernels are, which is why they are the only two the score-entropy and generator-matching papers ever lift to continuous time. D3PM's discretized-Gaussian kernel, the ordinal one built to approach continuous diffusion on images, is not: in the regime it is actually used it provably has no generator, so it cannot be given a continuous-time formulation at all.

The embedding problem

A forward transition matrix P has a continuous-time (CTMC, score-entropy) formulation only if P = exp(Q) for a rate matrix Q: off-diagonals at least zero, rows summing to zero. Whether such a Q exists is the classical embedding problem for Markov matrices. For a given P it is decidable in float64 by two independent certificates.

  • Principal-logarithm defect. When P has distinct positive eigenvalues its real logarithm is unique, so P is embeddable if and only if that unique real log is a generator. The defect is the smallest off-diagonal of the principal log; a negative defect is a definitive proof of non-embeddability. A reconstruction check exp(log P) = P to 1e-15 verifies the log is genuine.
  • Infinite divisibility. If P = exp(Q) then every root P^{1/n} = exp(Q/n) is a stochastic matrix. So a single negative entry in any P^{1/n} rules out a generator. This needs no uniqueness assumption and is airtight.

What is and is not embeddable

The uniform kernel exp(sigma(11^T/K - I)) and the absorbing kernel exp(sigma(e_m 1^T - I)) are embeddable by construction: their principal log is exactly the generator, defect 0 to machine precision, and their roots stay nonnegative. These are precisely the two kernels the continuous-time literature treats.

The discretized-Gaussian kernel is not. Its off-diagonal weight for a hop i - j is exp(-4 (i-j)^2 / ((K-1)^2 beta)), and in the deployed regime its principal log has strictly negative off-diagonals while its roots P^{1/n} are negative for every n:

kernel K setting defect (min off-diag log) min P^{1/n}, n=2..1000
uniform 16 sigma=0.5 +0.0 nonnegative
absorbing 16 sigma=0.5 +0.0 0 (never negative)
gaussian 256 beta=1e-4 -0.16 -2.5e-3 ... -1.6e-4
gaussian 256 beta=1e-3 -2.10 negative
gaussian 256 beta=1e-2 -14.2 negative

The reconstruction error is 1e-15 throughout, so the negative logs are real, not numerical noise.

One dimensionless group, and no sharp threshold

The Gaussian kernel depends on K and beta only through g = beta (K-1)^2, and the defect collapses onto that single number: at fixed g it is the same across K from 16 to 256 (machine-exact at small g, to a relative 1e-4 at larger g where big matrices lose precision to eigenvalue underflow). The defect is smooth and monotone in g: below about g = 0.4 it sits under 1e-15, so whether the kernel is exactly embeddable or non-embeddable by an exponentially small amount is not decidable in float64, and no phase-boundary constant should be read off there. Above that it grows steadily negative.

What is unambiguous is the deployed regime. A real image D3PM uses K = 256 with per-step beta_t >= 1e-4, so g >= 6.5, where the defect is -0.16 at the smallest step and reaches -14 mid-schedule, many orders of magnitude above float64 noise. Every step of the deployed Gaussian schedule is decisively non-embeddable.

Layout

  • transitions.py: the uniform, absorbing, and discretized-Gaussian kernels, and the Gaussian in its dimensionless g = beta (K-1)^2 form.
  • embed.py: the principal-log defect, the reconstruction check, the distinct-spectrum uniqueness test, and the infinite-divisibility roots.
  • law.py: the collapse of the defect onto g, the deployed K=256 defects, and the monotone curve that shows there is no sharp threshold.
  • test_gaussnogen.py: the valid kernels, the embeddable baselines, the deployed non-embeddability, the infinite-divisibility certificate, the uniqueness justification, the dimensionless collapse, and the sub-resolution small-g behavior.

Reproduce

python transitions.py
python embed.py
python law.py
python test_gaussnogen.py

The work is pure float64 linear algebra; Metal has no float64, so it runs on CPU. The connection to hardware is only that the certificate needs double precision to separate a genuine negative defect from rounding, which the reconstruction error verifies it does.

Note

That the embedding problem is hard in general is classical, and the continuous-time discrete-diffusion papers use only the uniform and absorbing kernels. What is here is the exact statement, with two independent machine certificates, that the third deployed D3PM kernel, the discretized-Gaussian one, is non-embeddable in the entire regime it is used: the uniform and absorbing kernels have defect zero and nonnegative roots, the Gaussian kernel has a strictly negative principal-log off-diagonal and negative roots for every n, the defect collapses onto the single group g = beta (K-1)^2, and the deployed K=256 schedule sits at g >= 6.5 with a defect far above float64 noise. This is not a bug in D3PM, which uses the kernel in discrete time; it is a provable no-go for ever giving that kernel a continuous-time or score-entropy formulation. The extension is the reverse process: whether a data-dependent reverse rate can approximate the discrete-time Gaussian step despite the forward kernel having no generator, and how the approximation error scales with g.

About

D3PM's discretized-Gaussian transition kernel is not CTMC-embeddable: unlike the uniform and absorbing kernels it has no generator Q with exp(Q)=P. Its principal log has negative off-diagonals and its roots P^(1/n) are negative for every n; the defect collapses onto g=beta(K-1)^2 and the deployed K=256 schedule is decisively non-embeddable.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages