Model dyfuzyjny (diffusion model) to typ modelu generatywnego, który uczy się tworzyć dane — najczęściej obrazy — przez stopniowe usuwanie szumu z losowego sygnału. Wyobraź sobie, że bierzesz zdjęcie i dosypujesz do niego coraz więcej „śniegu”, aż zostanie czysty szum. Model uczy się odwracać ten proces: startuje od losowego szumu i krok po kroku go odszumia, aż wyłania się sensowny obraz. To dziś fundament generatorów grafiki z tekstu (text-to-image).
Jak to działa
Trening składa się z dwóch faz. W procesie forward do prawdziwych danych dodaje się szum gaussowski w wielu krokach, aż obraz zamienia się w czysty szum — to część czysto matematyczna, nic się tu nie uczy. Sieć neuronowa (zwykle architektura U-Net albo, w nowszych modelach, transformer) uczy się procesu reverse: dla zaszumionej próbki przewiduje, jaki szum został dodany, żeby móc go odjąć.
Przy generowaniu zaczynasz od losowego szumu i powtarzasz odszumianie kilkadziesiąt razy. Żeby model nie rysował czegokolwiek, dokładasz warunek — np. tekstowy prompt zakodowany przez CLIP. Dzięki temu „kotek w kosmosie” faktycznie prowadzi denoising w stronę kotka, a nie przypadkowej plamy. Nowoczesne modele liczą to w przestrzeni latentnej (latent diffusion), co jest dużo tańsze niż operowanie na pełnych pikselach.
Przykład z praktyki
Najbardziej znany otwarty model to Stable Diffusion. Lokalnie odpalisz go przez bibliotekę diffusers od Hugging Face:
pip install diffusers transformers torch- w kodzie:
pipe = StableDiffusionPipeline.from_pretrained("...") - generowanie:
pipe("a cat in space, digital art").images[0]
Z komercyjnych narzędzi na dyfuzji działają m.in. DALL-E, Midjourney i Imagen. Co ważne, dyfuzja nie ogranicza się do obrazów — używa się jej też do audio, wideo, a nawet generowania struktur białek.
Częste błędy i mity
Mit: „model trzyma w sobie bazę zdjęć i sklejał kawałki”. Nie — uczy się rozkładu danych, a generuje od zera z szumu. Na co uważać: liczba kroków odszumiania (sampling steps) to kompromis — za mało da rozmazany efekt, za dużo tylko marnuje czas GPU. Parametr guidance scale sterujący „posłuszeństwem” wobec promptu też lubi przesadę: zbyt wysoki daje przepalone, sztuczne obrazy. I nie myl dyfuzji z GAN-ami — oba generują obrazy, ale GAN robi to jednym przejściem i bywa kapryśny w treningu, a dyfuzja idzie iteracyjnie i jest stabilniejsza.
Pojęcia powiązane
GAN, model generatywny, U-Net, latent space, CLIP, text-to-image, sampling, sieci neuronowe.