Diffusion model
En generativ model, der lærer at reversere en gradvis støjproces for at generere data fra tilfældig støj.
Kort fortalt
En type AI, der skaber billeder (eller anden data) ved at starte med ren støj og gradvist fjerne den.
- Kategori
- model
- Niveau
- øvet
- Udtale
- dɪˈfjuːʒən ˈmɒdəl
Betydninger
2- 1
Den overordnede klasse af generative modeller, der fungerer ved at lære at omdanne en simpel fordeling (typisk normalfordelt støj) til en kompleks datafordeling gennem en iterativ denoising-proces.
- Diffusion modeller har opnået state-of-the-art resultater inden for billedegenerering. — Forskningsartikel, 2023
- Stable Diffusion er en populær open-source diffusion model.
- 2
En specifik implementering kaldet Denoising Diffusion Probabilistic Model (DDPM), der definerer en Markov-kæde af noising- og denoising-trin.
- DDPM er en af de første diffusion modeller, der viste imponerende genereringsevner. — Ho et al., 2020
Hvornår bruges det
Diffusion modeller bruges primært til billedegenerering, lydgenerering og 3D-generering. De er grundlaget for populære værktøjer som DALL-E og Stable Diffusion. Træningen foregår ved at tilføje støj til data og lære modellen at forudsige støjen.
Formel
L = E_{t, x_0, ε} [ ||ε - ε_θ(x_t, t)||^2 ] where x_t = √(α_t) x_0 + √(1-α_t) εKodeeksempel
import torch
import torch.nn as nn
class SimpleDiffusion(nn.Module):
def __init__(self, T=1000):
super().__init__()
self.T = T
self.beta = torch.linspace(1e-4, 0.02, T)
self.alpha = 1 - self.beta
self.alpha_bar = torch.cumprod(self.alpha, dim=0)
def forward_diffusion(self, x0, t):
noise = torch.randn_like(x0)
sqrt_alpha_bar = torch.sqrt(self.alpha_bar[t])
sqrt_one_minus_alpha_bar = torch.sqrt(1 - self.alpha_bar[t])
return sqrt_alpha_bar * x0 + sqrt_one_minus_alpha_bar * noise, noise
def loss(self, model, x0, t):
xt, noise = self.forward_diffusion(x0, t)
predicted_noise = model(xt, t)
return nn.functional.mse_loss(predicted_noise, noise)En forenklet PyTorch-implementering af diffusionsprocessen og træningstabet.
Oprindelse
Termen 'diffusion' refererer til processen med at tilføje støj, inspireret af fysisk diffusion, hvor partikler spredes over tid.