ddpm_post
@fminxyz — Пост: DDPM — учимся добавлять шум наоборот
Серия 2 | Пост 1 из 5 | Дата: 4 марта 2026, 19:30 MSK
Текст поста (~1800 символов)
Чтобы нарисовать кошку, нужно сначала научиться её СТИРАТЬ 🐈⬛
Звучит странно. Но это буквально то, что делают диффузионные модели.
Шаг 1 — Forward process:
Берём картинку x₀ и постепенно добавляем гауссовский шум:
x_t = √(1−β) · x_{t−1} + √β · ε, ε ~ N(0, I)
После 1000 шагов — чистый белый шум. Информация “размазана”.
Шаг 2 — Reverse process:
Нейросеть учится делать обратное — по зашумлённому x_t предсказать шум ε, который был добавлен.
Loss = ||ε − ε_θ(x_t, t)||²
Это называется denoising score matching. Мы не учим p(x) напрямую — мы учим “куда убирать шум”.
Почему это работает?
Если каждый маленький шаг зашумления — гауссовский, то каждый шаг восстановления тоже приближённо гауссовский. Это позволяет параметризовать обратный процесс аналитически.
p_θ(x_{t-1}|x_t) = N(μ_θ(x_t, t), σ_t²I)
FID (Fréchet Inception Distance) — метрика качества:
чем ближе статистика сгенерированных картинок к реальным — тем лучше. Оригинальный DDPM: FID≈3.17 на CIFAR-10.
В анимации: 10 шагов зашумления → 10 шагов восстановления. Реальный DDPM делает это за 1000 шагов, но идея та же.
🔜 Завтра: score function ∇log p(x) — нейросеть не знает плотность, но знает куда идти
Метаданные
- Файлы: ddpm_animation.py → ddpm_animation.mp4
- Хэштеги: #нейросети #диффузия #DDPM #generativeAI #deeplearning
- CTA: “Опрос: сколько шагов нужно, чтобы уничтожить картинку? 10 / 100 / 1000”
- Связь с каналом: DDPM обратный процесс ≈ Langevin dynamics = SGD + шум → паттерн оптимизации