Xlera8

Bevezetés a gépi tanulás diffúziós modelljébe

Ezt a cikket eredetileg közzétették AssemblyAI és a szerző engedélyével újra közzétesszük a TOPBOTS-nál.

A diffúziós modellek olyan generatív modellek, amelyek az elmúlt néhány évben jelentős népszerűségre tettek szert, és ennek jó oka van. A 2020-as években kiadott egy maroknyi alapvető tanulmány kizárólag megmutatták a világnak, hogy mire képesek a diffúziós modellek, például a GAN-ok legyőzésére[6] a képszintézisről. Legutóbb a szakemberek diffúziós modelleket láthattak itt DALL-E2, az OpenAI múlt hónapban megjelent képgeneráló modellje.

A DALL-E 2 által generált különféle képek (forrás).

Tekintettel a Diffusion Models legutóbbi sikerhullámára, sok gépi tanulással foglalkozó szakember minden bizonnyal érdeklődik belső működése iránt. Ebben a cikkben megvizsgáljuk a A diffúziós modellek elméleti alapjai, majd bemutatjuk, hogyan lehet képeket generálni a Diffúziós modell a PyTorch-ban. Merüljünk el!

Ha ez a mélyreható oktatási tartalom hasznos az Ön számára, iratkozz fel AI levelezőlistánkra figyelmeztetni kell, ha új anyagot adunk ki. 

Diffúziós modellek – Bevezetés

A diffúziós modellek nemző modellek, ami azt jelenti, hogy a képzésükhöz hasonló adatok létrehozására szolgálnak. A diffúziós modellek alapvetően úgy működnek edzési adatok megsemmisítése a Gauss-zaj egymást követő hozzáadásával, majd megtanulni gyógyulni az adatok által irányváltó ezt a zajos folyamatot. Az edzés után a Diffúziós Modell segítségével egyszerűen generálhatunk adatokat véletlenszerűen mintavételezett zaj átvezetése a tanult zajtalanítási folyamaton.

A diffúziós modellek használhatók képek létrehozására zajból (adaptált: forrás)

Pontosabban, a diffúziós modell egy látens változó modell, amely rögzített Markov-lánc segítségével képezi le a látens teret. Ez a lánc fokozatosan zajt ad az adatokhoz, hogy megkapja a hozzávetőleges posterior q(x1:T|x0), ahol x1,…,xT az x-szel azonos dimenziójú látens változók0. Az alábbi ábrán egy ilyen Markov-láncot látunk képadatokhoz manifesztálva.

Végül a kép aszimptotikusan tiszta Gauss-zajtá alakul. Az cél A diffúziós modell képzésének megtanulása a fordított folyamat – azaz képzés pθ(xt-1|xt). Ezen a láncon visszafelé haladva új adatokat generálhatunk.

A diffúziós modellek előnyei

Mint fentebb említettük, a diffúziós modellek kutatása robbanásszerűen megnőtt az elmúlt években. A nem egyensúlyi termodinamika ihlette[1], A diffúziós modellek jelenleg gyártják A legmodernebb képminőség, amelyekre az alábbiakban láthat példákat:

Az élvonalbeli képminőségen túl a diffúziós modellek számos egyéb előnnyel is járnak, többek között nem igényel ellenséges kiképzést. Az ellenséges kiképzés nehézségei jól dokumentáltak; és azokban az esetekben, amikor léteznek nem versengő alternatívák összehasonlítható teljesítménnyel és edzési hatékonysággal, általában a legjobb ezeket kihasználni. Az edzés hatékonyságát illetően a diffúziós modellek további előnyei is vannak skálázhatóság és párhuzamosíthatóság.

Míg a diffúziós modellek szinte légből kapott eredményeket hoznak létre, sok körültekintő és érdekes matematikai választás és részlet ad ezeknek az eredményeknek alapot, és a legjobb gyakorlatok még mindig fejlődnek a szakirodalomban. Nézzük most részletesebben a diffúziós modelleket alátámasztó matematikai elméletet.

Diffúziós modellek – mély merülés

Mint fentebb említettük, a diffúziós modell a következőkből áll előre folyamat (Vagy diffúziós folyamat), amelyben egy adat (általában egy kép) fokozatosan zajos, és a fordított folyamat (Vagy fordított diffúziós folyamat), amelyben a zaj a céleloszlásból származó mintává alakul vissza.

A mintavételi lánc átmenetei az előremenő folyamatban feltételes Gauss-rendszerre állíthatók, ha a zajszint elég alacsony. Ennek a ténynek a Markov-feltevéssel való kombinálása az előrehaladási folyamat egyszerű paraméterezéséhez vezet:

Matematikai jegyzet

Az adatok megsértéséről beszéltünk hozzáadásával Gauss-zaj, de elsőre talán nem világos, hogy hol végezzük ezt a kiegészítést. A fenti egyenlet szerint a lánc minden lépésében egyszerűen egy Gauss-eloszlásból veszünk mintát, amelynek átlaga a lánc előző értéke (azaz kép).

Ez a két állítás egyenértékű. Azaz

Hogy megértsük, miért, enyhén visszaélünk a jelöléssel az állítás során

Ahol a végső implikáció a valószínűségi változók összege és eloszlásaik konvolúciója közötti matematikai ekvivalenciából fakad – ld. ezt a Wikipédia oldalt további információért.

Más szóval megmutattuk, hogy az előzőhöz kötött időlépés eloszlásának állítása egy Gauss-eloszlás átlagán keresztül egyenértékű azzal, hogy egy adott időlépés eloszlása ​​megegyezik az előzőé, Gauss-zaj hozzáadásával. Kihagytuk a variancia ütemterv által bevezetett skalárokat, és az egyszerűség kedvéért ezt egy dimenzióra mutattuk be, de hasonló bizonyíték érvényes a többváltozós Gaussokra is.

Ahol β1,…,βT egy eltérés ütemezése (akár tanult, akár rögzített), amely, ha jól viselkedik, biztosítja ezt xT csaknem izotróp Gauss-féle kellően nagy T számára.

A Markov-feltevés alapján a látens változók együttes eloszlása ​​a Gauss-féle feltételes láncátmenetek szorzata (módosítva forrás).

Mint korábban említettük, a diffúziós modellek „varázslata” a fordított folyamat. A képzés során a modell megtanulja megfordítani ezt a diffúziós folyamatot, hogy új adatokat generáljon. Kezdve a tiszta Gauss-zajjal, p(xT):=N(xT,0,I) a modell megtanulja a közös eloszlást pθ(x0:T) mint

ahol megtanulják a Gauss-átmenetek időfüggő paramétereit. Különösképpen vegye figyelembe, hogy a Markov-formula azt állítja, hogy egy adott fordított diffúziós átmenet-eloszlás csak az előző időlépéstől függ (vagy a következő időlépéstől, attól függően, hogyan nézzük):

Képzések

A diffúziós modellt a a fordított Markov-átmenetek megtalálása, amelyek maximalizálják a képzési adatok valószínűségét. A gyakorlatban a képzés egyenértékű a negatív log-valószínűség variációs felső határának minimalizálásából.

Jelölés részlete

Vegye figyelembe, hogy Lstb. technikailag an felső kötött (az ELBO negatívja), amelyet megpróbálunk minimalizálni, de L-nek nevezzükstb. a szakirodalommal való összhang érdekében.

Igyekszünk átírni az L-tstb. tekintve Kullback-Leibler (KL) Eltérések. A KL divergencia egy aszimmetrikus statisztikai távolságmérő, amely megmutatja, hogy mekkora egy valószínűségi eloszlás P eltér egy referenciaeloszlástól Q. Érdeklődünk L. megfogalmazásábanstb. a KL divergenciák szempontjából, mert Markov-láncunkban az átmeneti eloszlások Gauss-ok, és a Gauss-féle KL eltérésnek zárt alakja van.

Mi az a KL eltérés?

A folytonos eloszlások KL divergenciájának matematikai alakja az

A dupla sávok azt jelzik, hogy a függvény nem szimmetrikus az argumentumaihoz képest.

Alább látható a változó eloszlás KL divergenciája P (kék) referencia eloszlásból Q (piros). A zöld görbe a fenti KL divergencia definíciójában szereplő integrálon belüli függvényt jelöli, a görbe alatti teljes terület pedig a KL divergenciájának értékét. P ból ből Q adott pillanatban egy érték, amely számszerűen is megjelenik.

Színészválogatás Lvlb a KL eltérések tekintetében

Mint korábban említettük, lehetséges [1] átírni Lstb. szinte teljesen a KL eltérések tekintetében:

ahol

Levezetés részletei

A variációs korlát egyenlő

Ha az eloszlásokat a Markov-feltevésünk alapján a definícióikra cseréljük, azt kapjuk

Naplószabályokkal alakítjuk át a kifejezést naplók összegévé, majd kihúzzuk az első tagot

Bayes tételét és Markov-feltevésünket felhasználva ez a kifejezés azzá válik

Ezután a középső tagot naplószabályok segítségével felosztjuk

A második kifejezést elkülönítve látjuk

Ezt visszaillesztve az L-re vonatkozó egyenletünkbestb., nekünk van

Naplószabályok segítségével átrendezzük

d8

Ezután megjegyezzük a következő ekvivalenciát a KL divergenciájára bármely két eloszlás esetén:

Végül ezt az ekvivalenciát az előző kifejezésre alkalmazva eljutunk a

Az előre irányuló folyamat utólagos kondicionálása x-en0 L-bent-1 követhető formát eredményez, amely oda vezet minden KL eltérés Gauss-féle összehasonlítás. Ez azt jelenti, hogy az eltérések pontosan kiszámíthatók zárt formájú kifejezésekkel, nem pedig Monte Carlo becslésekkel[3].

Modellválasztások

A célfüggvényünk matematikai alapjainak megteremtésével most több döntést kell hoznunk a diffúziós modellünk megvalósításával kapcsolatban. A továbbítási folyamathoz egyetlen választási lehetőség a variancia ütemezés meghatározása, amelynek értékei általában nőnek a forward folyamat során.

A fordított folyamathoz sokkal inkább a Gauss-eloszlásparaméterezési/modellarchitektúra(oka)t választjuk. Jegyezze meg a nagyfokú rugalmasság hogy a Diffusion Models megengedheti magának – az csak Az architektúránkkal szemben támasztott követelmény, hogy a bemeneti és kimeneti dimenziók azonosak legyenek.

Az alábbiakban részletesebben megvizsgáljuk e választások részleteit.

Forward Process és LT

Ahogy fentebb megjegyeztük, a forward folyamatot illetően meg kell határoznunk az eltérés ütemezését. Különösen mi határoztuk meg őket időfüggő állandók, figyelmen kívül hagyva azt a tényt, hogy megtanulhatók. Például[3], lineáris ütemezés β-tól1= 10-4 β-raT=0.2 használható, vagy esetleg geometriai sorozat.

A választott értékektől függetlenül az a tény, hogy az eltérés ütemezése rögzített, L-t eredményezT konstanssá válik a tanulható paramétereink készlete tekintetében, ami lehetővé teszi számunkra, hogy figyelmen kívül hagyjuk, ami a képzést illeti.

Fordított folyamat és L1:T-1

Most a fordított folyamat meghatározásához szükséges választási lehetőségeket tárgyaljuk. Emlékezzünk vissza a fentiekből, hogy a fordított Markov-átmeneteket Gauss-féleként határoztuk meg:

Most meg kell határoznunk μ funkcionális alakjaitθ vagy Σθ. Míg Σ paraméterezésére vannak bonyolultabb módok isθ[5], egyszerűen beállítjuk

Vagyis feltételezzük, hogy a többváltozós Gauss-féle független Gauss-ok szorzata azonos szórással, olyan varianciaértékkel, amely idővel változhat. Mi állítsa be ezeket a szórásokat úgy, hogy egyenértékűek legyenek az előremenő folyamatok eltérési ütemtervével.

Adott Σ új megfogalmazásaθ, nekünk van

amely lehetővé teszi számunkra az átalakulást

nak nek

ahol a különbség első tagja x lineáris kombinációjat és x0 ez a β variancia ütemezéstől függt. Ennek a függvénynek a pontos formája nem releváns céljaink szempontjából, de megtalálható a [3].

A fenti arány jelentősége az μ legegyszerűbb paraméterezéseθ egyszerűen megjósolja a diffúziós hátsó átlagot. Fontos, hogy a szerzők [3] valójában azt találta, hogy a képzés μθ hogy megjósolja a zaj komponens bármely adott időpontban jobb eredményeket ad. Konkrétan hadd

ahol

Ez a következő alternatív veszteségfüggvényhez vezet, amelyet a szerzők [3] stabilabb edzéshez és jobb eredményekhez vezet:

A szerzők [3] megjegyzi a diffúziós modellek e megfogalmazásának összefüggéseit a Langevin-dinamikán alapuló, pontegyeztető generatív modellekkel. Valójában úgy tűnik, hogy a diffúziós modellek és a pontszám alapú modellek ugyanannak az éremnek a két oldala lehet, ami hasonló a hullámalapú kvantummechanika és a mátrix alapú kvantummechanika független és egyidejű fejlődéséhez, amelyek ugyanazon jelenségek két egyenértékű megfogalmazását tárják fel.[2].

Hálózati architektúra

Míg az egyszerűsített veszteségfüggvényünk egy ϵ modellt próbál betanítaniθ, még mindig nem határoztuk meg ennek a modellnek az architektúráját. Vegye figyelembe, hogy a csak A modell követelménye, hogy a bemeneti és kimeneti dimenziója azonos legyen.

Tekintettel erre a korlátozásra, talán nem meglepő, hogy a képdiffúziós modelleket általában U-Net-szerű architektúrákkal valósítják meg.

Reverse Process Decoder és L0

A fordított folyamat mentén haladó út számos transzformációból áll folyamatos feltételes Gauss-eloszlás mellett. A fordított folyamat végén emlékezzünk arra, hogy megpróbálunk előállítani egy kép, amely egész számú pixelértékekből áll. Ezért meg kell találnunk a megszerzésének módját diszkrét (log) valószínűségek minden lehetséges pixelértékhez az összes pixelben.

Ezt úgy lehet megtenni, hogy a fordított diffúziós lánc utolsó átmenetét an-ra állítjuk független diszkrét dekóder. Adott x kép valószínűségének meghatározásához0 adott x1, először függetlenséget írunk elő az adatdimenziók között:

ahol D az adatok és a felső index dimenziója i egy koordináta kinyerését jelzi. A cél most az, hogy meghatározzuk, mennyire valószínű az egyes egész értékek egy adott pixel esetében adott az enyhén zajos kép megfelelő pixelének lehetséges értékei közötti eloszlás t=1 időpontban:

ahol a pixeleloszlások t=1 esetén az alábbi többváltozós Gauss-ból származnak, amelynek átlós kovariancia mátrixa lehetővé teszi, hogy az eloszlást egyváltozós Gauss-féle szorzatra bontsuk, az adatok minden dimenziójához egyet:

Feltételezzük, hogy a képek 0,1,…,255-ös egész számokból állnak (a szabványos RGB képekhez hasonlóan), amelyeket lineárisan [−1,1]-re skáláztunk. Ezután a valódi vonalat kis „vödrökre” bontjuk, ahol egy adott skálázott pixelértékhez x, az adott tartományhoz tartozó gyűjtőhely: [x−1/255, x+1/255]. Egy pixelérték valószínűsége x, adott x-ben a megfelelő pixel egyváltozós Gauss-eloszlása1, az a az egyváltozós Gauss-eloszlás alatti terület a vödör közepén x.

Az alábbiakban láthatja az egyes gyűjtők területét a 0-ás középérték Gauss-féle valószínűségével, amely ebben az összefüggésben egy 255/2 (félfényesség) átlagos pixelértékkel rendelkező eloszlásnak felel meg. A piros görbe egy adott pixel eloszlását ábrázolja a t = 1 kép, és a területek megadják a megfelelő pixelérték valószínűségét a t = 0 kép.

Műszaki megjegyzés

Az első és az utolsó csoport az -inf és +inf értékig terjed a teljes valószínűség megőrzése érdekében.

Adott a t = 0 pixel értéke minden pixelhez, a p értékeθ(x0|x1) egyszerűen az ő termékük. Ezt a folyamatot tömören a következő egyenlet foglalja össze:

ahol

és a

Adott ez az egyenlet pθ(x0|x1), kiszámíthatjuk L végső tagjátstb. amely nem KL divergenciaként van megfogalmazva:

Végső célkitűzés

Amint az utolsó részben említettük, a szerzők [3] azt találta, hogy a kép zajkomponensének előrejelzése adott időlépésben a legjobb eredményt hozta. Végül a következő célt használják:

Ezért a diffúziós modellünk betanító és mintavételi algoritmusai tömören megragadhatók az alábbi ábrán:

Diffúziós modellelmélet összefoglalása

Ebben a részben részletesen belemerültünk a diffúziós modellek elméletébe. Könnyen belemerülhetünk a matematikai részletekbe, ezért az alábbiakban megjegyezzük a legfontosabb pontokat ebben a részben, hogy madártávlatból tájékozódjunk:

  1. Diffúziós modellünk paraméterezve a Markov lánc, ami azt jelenti, hogy látens változóink x1,…,xT csak az előző (vagy a következő) időlépéstől függ.
  2. átmeneti eloszlások a Markov-láncban vannak Gauss, ahol a továbbítási folyamat variancia ütemezést igényel, és a fordított folyamat paraméterei megtanulásra kerülnek.
  3. A diffúziós folyamat biztosítja, hogy xT is aszimptotikus eloszlású izotróp Gauss-féle kellően nagy T-hez.
  4. Esetünkben a szórási ütemtervet rögzítették, de tanulható is. Rögzített ütemezések esetén a geometriai progresszió követése jobb eredményeket biztosíthat, mint a lineáris progresszió. Mindkét esetben a szórások általában növekszenek az idő előrehaladtával a sorozatban (azaz βij az i
  5. A diffúziós modellek rendkívül rugalmas és engedje meg bármilyen olyan architektúra, amelynek bemeneti és kimeneti dimenziója azonos. Sok implementációt használ U-Net-szerű architektúrák.
  6. képzési cél a képzési adatok valószínűségének maximalizálása. Ez a modell paramétereinek hangolásában nyilvánul meg minimalizálja az adatok negatív logaritmi valószínűségének variációs felső határát.
  7. A célfüggvényben szereplő szinte minden kifejezés beírható KL eltérések Markov-feltevésünk eredményeként. Ezek az értékek kiszámíthatóvá válik Tekintettel arra, hogy Gauss-rendszert használunk, ezért kihagyjuk a Monte Carlo-közelítés végrehajtásának szükségességét.
  8. Végső soron a egyszerűsített képzési cél Egy adott látens változó zajkomponensét megjósló függvény betanítása a legjobb és legstabilabb eredményt adja.
  9. diszkrét dekóder A fordított diffúziós folyamat utolsó lépéseként a pixelértékek logó valószínűségének meghatározására szolgál.

A diffúziós modellek eme magas szintű áttekintésével elménkben, nézzük meg, hogyan használhatunk diffúziós modelleket a PyTorchban.

Diffúziós modellek a PyTorchban

Noha a diffúziós modelleket még nem demokratizálták olyan mértékben, mint a gépi tanulás más régebbi architektúráit/megközelítéseit, továbbra is rendelkezésre állnak megvalósítások. A diffúziós modell használatának legegyszerűbb módja a PyTorchban a denoising-diffusion-pytorch csomag, amely az ebben a cikkben tárgyalthoz hasonló képdiffúziós modellt valósít meg. A csomag telepítéséhez egyszerűen írja be a következő parancsot a terminálba:

pip install denoising_diffusion_pytorch

Minimális példa

A modell betanításához és a képek generálásához először importáljuk a szükséges csomagokat:

import torch
from denoising_diffusion_pytorch import Unet, GaussianDiffusion

Ezután meghatározzuk a hálózati architektúránkat, jelen esetben egy U-Net-et. Az dim paraméter határozza meg a tereptárgyleképezések számát az első lefelé mintavétel előtt, és a dim_mults paraméter szorzószámokat biztosít ehhez az értékhez és az egymást követő lefelé mintavételezéshez:

model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
)

Most, hogy a hálózati architektúránk definiált, meg kell határoznunk magát a diffúziós modellt. Átadjuk az imént definiált U-Net modellt számos paraméterrel együtt – a generálandó képek mérete, a diffúziós folyamat időlépéseinek száma, valamint az L1 és L2 normák közötti választás.

diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
)

Most, hogy a diffúziós modellt meghatározták, itt az ideje a képzésnek. Véletlenszerű adatokat generálunk a betanításhoz, majd a szokásos módon betanítjuk a diffúziós modellt:

training_images = torch.randn(8, 3, 128, 128)
loss = diffusion(training_images)
loss.backward()

A modell betanítása után végre képeket generálhatunk a segítségével sample() módszer a diffusion tárgy. Itt 4 képet generálunk, amelyek csak zajok, mivel edzési adataink véletlenszerűek voltak:

sampled_images = diffusion.sample(batch_size = 4)

Képzés az egyéni adatokról

denoising-diffusion-pytorch csomag lehetővé teszi a diffúziós modell betanítását egy adott adatkészletre. Egyszerűen cserélje ki a 'path/to/your/images' karakterlánc az adatkészlet-könyvtár elérési útjával a Trainer() alatt lévő objektumot, és módosítsa image_size a megfelelő értékre. Ezután egyszerűen futtassa a kódot a modell betanításához, majd mintavételezéssel, mint korábban. Vegye figyelembe, hogy a PyTorch-ot úgy kell lefordítani, hogy a CUDA engedélyezve legyen a használatához Trainer osztály:

from denoising_diffusion_pytorch import Unet, GaussianDiffusion, Trainer
model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
).cuda()
diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
).cuda()
trainer = Trainer(
 diffusion,
 'path/to/your/images',
 train_batch_size = 32,
 train_lr = 2e-5,
 train_num_steps = 700000, # total training steps
 gradient_accumulate_every = 2, # gradient accumulation steps
 ema_decay = 0.995, # exponential moving average decay
 amp = True # turn on mixed precision
)
trainer.train()

Alább látható a progresszív zajtalanítás a többváltozós Gauss-zajtól a fordított diffúzióhoz hasonló MNIST számjegyig:

Utószó

A diffúziós modellek koncepcionálisan egyszerű és elegáns megközelítést jelentenek az adatgenerálás problémájára. A legkorszerűbb eredményeik a nem versengő képzéssel kombinálva nagy magasságokba lendítették őket, és kialakuló státuszukat tekintve további javulás várható a következő években. A diffúziós modelleket különösen lényegesnek találták az olyan élvonalbeli modellek teljesítményéhez, mint például DALL-E2.

Referenciák

[1] Mély, felügyelet nélküli tanulás a nem egyensúlyi termodinamikával

[2] Generatív modellezés az adateloszlás gradienseinek becslésével

[3] Zajtalanító diffúziós valószínűségi modellek

[4] Továbbfejlesztett technikák a pontszám alapú generatív modellek képzéséhez

[5] Továbbfejlesztett zajcsökkentő diffúziós valószínűségi modellek

[6] A diffúziós modellek felülmúlják a GAN-okat a képszintézisben

[7] GLIDE: A fotorealisztikus képgenerálás és szerkesztés felé szövegvezérelt diffúziós modellekkel

[8] Hierarchikus szöveg-feltételes képgenerálás CLIP látensekkel

Tetszett ez a cikk? Iratkozzon fel további AI-kutatási frissítésekért.

Értesíteni fogunk, ha több ehhez hasonló összefoglaló cikket adunk ki.

Beszélj velünk

Szia! Miben segíthetek?