revalo / tree-diffusion

Diffusion on syntax trees for program synthesis
https://tree-diffusion.github.io
MIT License
403 stars 22 forks source link

question regarding diffusion model #10

Closed orgw closed 2 weeks ago

orgw commented 3 weeks ago

Hi, great work this is exciting. I have some questions regarding the diffusion model.

1)i noticed that step_i is not used in noising or denoising, as done in standard diffusion models. So usually, step_i is used with a noise scheduler to determine amount of noise to add. Is there a reason for this? 2)denoising is done when denoised image reaches target image. I understand breaking, but breaking the denoising process... is this a common thing?

I'm confused if we can call this a diffusion model... or it seems more of an iterative transformer decoder?

revalo commented 3 weeks ago

Thank you! I'm glad you find this work exciting :)

1) The model is given both the current render and the target render. Therefore, the model doesn't really need to know step_i, since that should be derivable from the current and the target. This makes sampling a lot easier as the noise level is estimated by the model.

2) If we just ran the denoising process, we would get a distribution of programs that could satisfy the target. Since our evals our fornal, where we have to match the image almost exactly, we stop. In fact, we can even do tree search on this model.

The method presented here is a discrete diffusion model (kind of like DiGress), where the transformer decoder is just modeling the discrete jumps using an auto regressive approach. But we do add discrete Markovian noise, and we do have a model that learns to undo this noise.