Model dyfuzyjny

Model generatywny tworzący obrazy przez stopniowe usuwanie szumu z losowego sygnału. Stanowi podstawę nowoczesnych generatorów grafiki z tekstu.

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.