import%20marimo%0A%0A__generated_with%20%3D%20%220.25.0%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20METADATA%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%3A%20%22diffusion_model%22%2C%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Diffusion%20Model%22%2C%0A%20%20%20%20%20%20%20%20%22types%22%3A%20%5B%22architecture%22%5D%2C%0A%20%20%20%20%20%20%20%20%22families%22%3A%20%5B%22generative%22%2C%20%22diffusion%22%2C%20%22neural_networks%22%5D%2C%0A%20%20%20%20%20%20%20%20%22tasks%22%3A%20%5B%22generation%22%2C%20%22representation%22%5D%2C%0A%20%20%20%20%20%20%20%20%22data%22%3A%20%5B%22image%22%2C%20%22audio%22%2C%20%22video%22%5D%2C%0A%20%20%20%20%20%20%20%20%22learning%22%3A%20%5B%22self_supervised%22%5D%2C%0A%20%20%20%20%20%20%20%20%22capacity%22%3A%20%22parametric%22%2C%0A%20%20%20%20%20%20%20%20%22mechanisms%22%3A%20%5B%22iterative_denoising%22%2C%20%22noise_prediction%22%2C%20%22backpropagation%22%5D%2C%0A%20%20%20%20%20%20%20%20%22properties%22%3A%20%5B%22generative%22%2C%20%22representation_learning%22%2C%20%22stochastic_generation%22%5D%2C%0A%20%20%20%20%20%20%20%20%22constraints%22%3A%20%5B%22high_compute%22%2C%20%22high_memory%22%2C%20%22requires_large_data%22%2C%20%22slow_inference%22%5D%2C%0A%20%20%20%20%20%20%20%20%22difficulty%22%3A%20%22advanced%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22complete%22%2C%0A%20%20%20%20%20%20%20%20%22explainability%22%3A%20%22low%22%2C%0A%20%20%20%20%20%20%20%20%22training_cost%22%3A%20%22high%22%2C%0A%20%20%20%20%20%20%20%20%22inference_cost%22%3A%20%22high%22%2C%0A%20%20%20%20%20%20%20%20%22data_appetite%22%3A%20%22high%22%2C%0A%20%20%20%20%7D%0A%0A%20%20%20%20mo.md(f%22%23%20%7BMETADATA%5B'name'%5D%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20The%20generative%20idea%0A%0A%20%20%20%20A%20diffusion%20model%20learns%20to%20turn%20noise%20into%20structured%20data%20by%20repeatedly%20reversing%20a%20gradual%20corruption%20process.%0A%0A%20%20%20%20%23%23%20Learn%20to%20undo%20many%20small%20corruptions%0A%0A%20%20%20%20Take%20an%20image%20and%20add%20a%20little%20noise%20many%20times%20until%20almost%20nothing%20recognizable%20remains.%20Training%20shows%20the%20model%20noisy%20examples%20and%20asks%20it%20to%20estimate%20what%20noise%20or%20clean%20structure%20should%20be%20removed.%20Generation%20starts%20from%20random%20noise%20and%20applies%20those%20learned%20denoising%20steps%20in%20reverse.%0A%0A%20%20%20%20The%20reverse%20process%20is%20learned%20and%20stochastic%3B%20it%20is%20not%20simply%20sharpening%20a%20hidden%20original%20image.%0A%0A%20%20%20%20%23%23%20Input%20and%20output%0A%0A%20%20%20%20-%20**Training%20input%3A**%20clean%20examples%20transformed%20to%20random%20noise%20levels%2C%20often%20with%20conditioning%20text%20or%20labels.%0A%20%20%20%20-%20**Generation%20input%3A**%20random%20noise%20plus%20optional%20conditions.%0A%20%20%20%20-%20**Output%3A**%20an%20image%2C%20audio%20signal%2C%20video%2C%20latent%20representation%2C%20or%20other%20continuous%20data.%0A%20%20%20%20-%20**Learns%3A**%20a%20denoising%20direction%2C%20score%2C%20velocity%2C%20or%20related%20parameterization.%0A%0A%20%20%20%20%23%23%20How%20it%20works%0A%0A%20%20%20%20The%20forward%20process%20gradually%20perturbs%20data%20according%20to%20a%20noise%20schedule.%20A%20neural%20network%20receives%20a%20noisy%20sample%20and%20timestep%20and%20predicts%20a%20target%20related%20to%20the%20added%20noise.%0A%0A%20%20%20%20At%20generation%20time%2C%20a%20sampler%20moves%20from%20noise%20toward%20a%20plausible%20example%20over%20multiple%20steps.%20Classifier-free%20guidance%20can%20strengthen%20alignment%20with%20a%20condition%20by%20combining%20conditional%20and%20unconditional%20predictions%2C%20usually%20trading%20diversity%20or%20naturalness%20for%20stronger%20prompt%20adherence.%0A%0A%20%20%20%20Latent%20diffusion%20performs%20the%20process%20in%20a%20compressed%20autoencoder%20space%2C%20reducing%20cost%20compared%20with%20pixel-space%20diffusion.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Step%20by%20step%3A%20noise%2C%20learn%2C%20reverse%0A%0A%20%20%20%20%23%23%23%201.%20Define%20a%20noise%20schedule%0A%0A%20%20%20%20Choose%20small%20noise%20levels%20%24%5Cbeta_1%2C%5Cldots%2C%5Cbeta_T%24%20and%20define%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Calpha_t%3D1-%5Cbeta_t%2C%0A%20%20%20%20%5Cqquad%0A%20%20%20%20%5Cbar%5Calpha_t%3D%5Cprod_%7Bs%3D1%7D%5E%7Bt%7D%5Calpha_s.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24%5Cbar%5Calpha_t%24%20decreases%20with%20%24t%24%2C%20so%20later%20samples%20contain%20less%20original%20signal.%0A%0A%20%20%20%20%23%23%23%202.%20Create%20a%20noisy%20training%20example%20directly%0A%0A%20%20%20%20Draw%20standard%20Gaussian%20noise%20%24%5Cvarepsilon%5Csim%5Cmathcal%20N(0%2CI)%24%20and%20compute%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cboxed%7B%0A%20%20%20%20x_t%3D%5Csqrt%7B%5Cbar%5Calpha_t%7D%5C%2Cx_0%0A%20%20%20%20%2B%5Csqrt%7B1-%5Cbar%5Calpha_t%7D%5C%2C%5Cvarepsilon%0A%20%20%20%20%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%24x_0%24%20is%20a%20clean%20example.%20The%20first%20coefficient%20keeps%20part%20of%20it%3B%20the%20second%20adds%20noise.%0A%0A%20%20%20%20If%20%24%5Cbar%5Calpha_t%3D0.64%24%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20x_t%3D0.8x_0%2B0.6%5Cvarepsilon.%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%23%23%23%203.%20Learn%20the%20added%20noise%0A%0A%20%20%20%20A%20network%20receives%20%24(x_t%2Ct)%24%20and%20predicts%20%24%5Cvarepsilon%24%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cvarepsilon_%5Ctheta(x_t%2Ct).%0A%20%20%20%20%24%24%0A%0A%20%20%20%20A%20common%20training%20objective%20is%3A%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cboxed%7B%0A%20%20%20%20L(%5Ctheta)%3D%0A%20%20%20%20%5Cmathbb%20E_%7Bx_0%2Ct%2C%5Cvarepsilon%7D%0A%20%20%20%20%5Cleft%5B%0A%20%20%20%20%5ClVert%5Cvarepsilon-%0B%20%20%20%20arepsilon_%5Ctheta(x_t%2Ct)%5CrVert_2%5E2%0A%20%20%20%20%5Cright%5D%0A%20%20%20%20%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20Training%20can%20generate%20many%20noisy%20versions%20of%20each%20clean%20example%20by%20drawing%20new%20%24t%24%20and%20%24%5Cvarepsilon%24.%0A%0A%20%20%20%20%23%23%23%204.%20Generate%20in%20reverse%0A%0A%20%20%20%20Start%20with%20%24x_T%5Csim%5Cmathcal%20N(0%2CI)%24.%20At%20each%20step%2C%20use%20the%20predicted%20noise%20to%20estimate%20a%20slightly%20cleaner%20%24x_%7Bt-1%7D%24.%20Repeat%20until%20reaching%20%24x_0%24.%0A%0A%20%20%20%20The%20exact%20reverse%20update%20depends%20on%20the%20sampler%20and%20parameterization.%20The%20key%20idea%20stays%20the%20same%3A%20training%20learns%20a%20local%20denoising%20direction%3B%20sampling%20applies%20many%20such%20directions%20in%20sequence.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20A%20practical%20example%0A%0A%20%20%20%20For%20product%20concept%20images%2C%20a%20text-conditioned%20latent%20diffusion%20model%20generates%20diverse%20candidates.%20The%20operational%20system%20also%20needs%20prompt%20handling%2C%20safety%20filters%2C%20provenance%20policy%2C%20human%20review%2C%20and%20perhaps%20reference-image%20conditioning.%20The%20model%20is%20one%20component%20of%20the%20product.%0A%0A%20%20%20%20%23%23%20When%20to%20use%20it%0A%0A%20%20%20%20-%20High-fidelity%20continuous-data%20generation%20is%20required.%0A%20%20%20%20-%20Iterative%20sampling%20latency%20is%20acceptable.%0A%20%20%20%20-%20Conditioning%20and%20editing%20controls%20matter.%0A%20%20%20%20-%20Adequate%20pretrained%20models%20or%20substantial%20data%20and%20compute%20are%20available.%0A%20%20%20%20-%20Diversity%20is%20valuable%20and%20can%20be%20evaluated.%0A%0A%20%20%20%20%23%23%20When%20to%20avoid%20it%0A%0A%20%20%20%20-%20Millisecond%20generation%20latency%20is%20mandatory.%0A%20%20%20%20-%20Exact%20factual%20or%20geometric%20correctness%20must%20be%20guaranteed.%0A%20%20%20%20-%20Training%20data%20rights%2C%20provenance%2C%20or%20safety%20cannot%20be%20managed.%0A%20%20%20%20-%20A%20deterministic%20graphics%20or%20retrieval%20pipeline%20solves%20the%20need%20better.%0A%20%20%20%20-%20Compute%20and%20memory%20budgets%20cannot%20support%20the%20model%20and%20sampler.%0A%0A%20%20%20%20%23%23%20Important%20controls%0A%0A%20%20%20%20%7C%20Control%20%7C%20Role%20%7C%0A%20%20%20%20%7C---------%7C------%7C%0A%20%20%20%20%7C%20Noise%20schedule%20%7C%20Corruption%20and%20denoising%20difficulty%20across%20time%20%7C%0A%20%20%20%20%7C%20Number%20of%20sampling%20steps%20%7C%20Quality-latency%20trade-off%20%7C%0A%20%20%20%20%7C%20Sampler%20%7C%20Numerical%20path%20through%20the%20reverse%20process%20%7C%0A%20%20%20%20%7C%20Guidance%20scale%20%7C%20Condition%20strength%20versus%20diversity%20and%20artifacts%20%7C%0A%20%20%20%20%7C%20Resolution%20%2F%20latent%20size%20%7C%20Detail%20and%20computational%20cost%20%7C%0A%20%20%20%20%7C%20Conditioning%20architecture%20%7C%20Text%2C%20class%2C%20image%2C%20control%20signals%2C%20or%20combinations%20%7C%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Notebook%20%E2%80%94%20forward%20noising%20under%20a%20microscope%0A%0A%20%20%20%20**Question%3A**%20what%20information%20remains%20as%20noise%20level%20increases%3F%0A%0A%20%20%20%20This%20notebook%20visualizes%20the%20corruption%20process%20and%20an%20oracle%20reconstruction.%20A%20real%20diffusion%20model%20learns%20the%20denoising%20direction%20from%20data.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20size%20%3D%2064%0A%20%20%20%20x%20%3D%20np.linspace(-1%2C%201%2C%20size)%0A%20%20%20%20xx%2C%20yy%20%3D%20np.meshgrid(x%2C%20x)%0A%20%20%20%20clean%20%3D%20np.exp(-((xx%20%2B%200.3)%20**%202%20%2B%20yy**2)%20%2F%200.08)%0A%20%20%20%20clean%20%2B%3D%200.8%20*%20np.exp(-((xx%20-%200.35)%20**%202%20%2B%20(yy%20-%200.2)%20**%202)%20%2F%200.035)%0A%20%20%20%20clean%20%3D%20clean%20%2F%20clean.max()%0A%20%20%20%20rng%20%3D%20np.random.default_rng(11)%0A%20%20%20%20fixed_noise%20%3D%20rng.normal(size%3Dclean.shape)%0A%20%20%20%20return%20clean%2C%20fixed_noise%2C%20np%2C%20plt%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20The%20clean%20image%20and%20one%20fixed%20noise%20pattern%20are%20now%20defined.%20Reusing%20the%20same%20noise%0A%20%20%20%20lets%20the%20next%20row%20isolate%20the%20effect%20of%20the%20noise%20level%20instead%20of%20mixing%20that%0A%20%20%20%20effect%20with%20random%20changes%20between%20images.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(clean%2C%20fixed_noise%2C%20np%2C%20plt)%3A%0A%20%20%20%20noise_levels%20%3D%20%5B0%2C%200.15%2C%200.4%2C%200.7%2C%200.95%5D%0A%20%20%20%20_fig%2C%20_axes%20%3D%20plt.subplots(1%2C%20len(noise_levels)%2C%20figsize%3D(15%2C%203))%0A%20%20%20%20for%20_ax%2C%20_level%20in%20zip(_axes%2C%20noise_levels)%3A%0A%20%20%20%20%20%20%20%20_noisy%20%3D%20np.sqrt(1%20-%20_level)%20*%20clean%20%2B%20np.sqrt(_level)%20*%20fixed_noise%0A%20%20%20%20%20%20%20%20_ax.imshow(_noisy%2C%20cmap%3D%22magma%22)%0A%20%20%20%20%20%20%20%20_ax.set_title(f%22noise%3D%7B_level%3A.2f%7D%22)%0A%20%20%20%20%20%20%20%20_ax.axis(%22off%22)%0A%20%20%20%20plt.suptitle(%22Forward%20process%3A%20signal%20is%20gradually%20corrupted%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20At%20high%20noise%2C%20little%20visible%20structure%20remains.%20To%20clarify%20the%20learning%20target%2C%0A%20%20%20%20the%20next%20cell%20performs%20an%20impossible-at-generation-time%20oracle%20reconstruction%3A%20it%0A%20%20%20%20removes%20the%20exact%20noise%20that%20was%20added.%20A%20real%20diffusion%20network%20must%20estimate%20it.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(clean%2C%20fixed_noise%2C%20np%2C%20plt)%3A%0A%20%20%20%20%23%20Oracle%20reconstruction%3A%20possible%20only%20because%20we%20kept%20the%20exact%20added%20noise.%0A%20%20%20%20_level%20%3D%200.7%0A%20%20%20%20_noisy%20%3D%20np.sqrt(1%20-%20_level)%20*%20clean%20%2B%20np.sqrt(_level)%20*%20fixed_noise%0A%20%20%20%20oracle%20%3D%20(_noisy%20-%20np.sqrt(_level)%20*%20fixed_noise)%20%2F%20np.sqrt(1%20-%20_level)%0A%20%20%20%20_fig%2C%20_axes%20%3D%20plt.subplots(1%2C%203%2C%20figsize%3D(9%2C%203))%0A%20%20%20%20for%20_ax%2C%20image%2C%20title%20in%20zip(%0A%20%20%20%20%20%20%20%20_axes%2C%20%5Bclean%2C%20_noisy%2C%20oracle%5D%2C%20%5B%22clean%22%2C%20%22noisy%22%2C%20%22oracle%20reconstruction%22%5D%0A%20%20%20%20)%3A%0A%20%20%20%20%20%20%20%20_ax.imshow(image%2C%20cmap%3D%22magma%22)%0A%20%20%20%20%20%20%20%20_ax.set_title(title)%0A%20%20%20%20%20%20%20%20_ax.axis(%22off%22)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Evaluation%20and%20diagnosis%0A%0A%20%20%20%20Evaluate%20more%20than%20visual%20appeal%3A%20prompt%20or%20condition%20alignment%2C%20diversity%20and%20duplicate%20rate%2C%20local%20artifacts%20and%20global%20consistency%2C%20performance%20on%20difficult%20subgroups%2C%20latency%2C%20memory%2C%20and%20energy%2C%20safety%2C%20attribution%2C%20and%20provenance%2C%20usefulness%20in%20the%20downstream%20workflow.%0A%0A%20%20%20%20Automated%20distribution%20metrics%20can%20compare%20batches%20but%20rarely%20replace%20human%20or%20task-specific%20evaluation.%0A%0A%20%20%20%20%23%23%20Cost%20profile%0A%0A%20%20%20%20Training%20is%20expensive%20because%20many%20noisy%20variants%20and%20a%20large%20denoiser%20are%20involved.%20Generation%20traditionally%20requires%20many%20network%20evaluations%2C%20though%20improved%20samplers%20and%20distilled%20models%20reduce%20the%20step%20count.%0A%0A%20%20%20%20%23%23%20Related%20models%0A%0A%20%20%20%20-%20Variational%20autoencoders%20learn%20a%20latent%20distribution%20and%20fast%20decoder.%0A%20%20%20%20-%20GANs%20use%20an%20adversarial%20discriminator%20and%20usually%20generate%20in%20one%20forward%20pass.%0A%20%20%20%20-%20Autoregressive%20models%20generate%20elements%20sequentially.%0A%20%20%20%20-%20**Transformer**%20may%20serve%20as%20a%20text%20encoder%2C%20denoiser%20backbone%2C%20or%20autoregressive%20alternative.%0A%0A%20%20%20%20%23%23%20The%20essential%20trade-off%0A%0A%20%20%20%20Diffusion%20trades%20iterative%20computation%20for%20flexible%2C%20high-quality%20generation.%20Judge%20the%20whole%20generation%20system%2C%20not%20only%20its%20best%20samples.%0A%0A%20%20%20%20%23%23%20Concept%20references%0A%0A%20%20%20%20-%20%5BLoss%20and%20Optimization%5D(%2Fconcepts%2Floss_optimization)%20%E2%80%94%20how%20the%20denoising%20objective%20is%20minimized.%0A%20%20%20%20-%20%5BBackpropagation%5D(%2Fconcepts%2Fbackpropagation)%20%E2%80%94%20how%20the%20denoiser%20receives%20parameter%20gradients.%0A%20%20%20%20-%20%5BMetrics%5D(%2Fconcepts%2Fmetrics)%20%E2%80%94%20why%20generation%20quality%20needs%20several%20complementary%20measures.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
4ebd48b76fad40486db70fa08522a772