- Difüzyon modelleri, görüntü üretiminin ötesinde ses, video, 3D, protein tasarımı ve robot yol planlama gibi çok modlu dağılımlardan örnekleme gerektiren problemlerde kullanılıyor; bu eğitim ise optimizasyon perspektifiyle eğitimi ve örneklemeyi birbirine bağlıyor
- Eğitim süreci, veriye gürültü karıştırılmış (x_\sigma=x_0+\sigma\epsilon) oluşturur ve sinir ağı (\epsilon_\theta(x,\sigma))'nın gürültü yönünü tahmin etmesi için ortalama kare hatayı en aza indirir
- Eğitilmiş denoiser, veri kümesi (\mathcal{K})'ye yönelik yaklaşık izdüşüm olarak yorumlanabilir; ideal denoiser ise (\sigma)-yumuşatılmış kare uzaklık fonksiyonunun gradyanıyla bağlantılıdır
- DDIM örneklemesi, (f(x)=\frac{1}{2}\mathrm{dist}_{\mathcal{K}}(x)^2) üzerinde yaklaşık gradyan inişi olarak görülebilir ve (\sigma_t) takvimi, yineleme sayısını ve denoiser değerlendirme maliyetini belirler
- Gradyan kestirim güncellemesi ile gürültü eklemeyi birleştirince DDIM, DDPM ve yazarların geliştirilmiş örnekleyicisi
gamvemuparametreleri ile birlikte ele alınabilir; bu da toy model ve latent diffusion örneklerine uzanır
Optimizasyon Perspektifinden Difüzyon Modelleri
- Difüzyon modelleri, çok modlu dağılımlardan örnek üretmede güçlüdür; Stable Diffusion gibi metinden görüntü üretim araçlarının yanı sıra ses, video, 3D üretimi, protein tasarımı ve robot yol planlamasında da kullanılır
- Eğitimin kuramsal temeli, ICML 2024 makalesinin ve ilgili makalenin optimizasyon yorumudur
- Uygulama ağırlıklı olarak
smalldiffusionreferans alınarak hazırlanmıştır; metindeki kod, asıl kütüphaneye göre eğitim amaçlı olarak sadeleştirilmiştir
Eğitim: Gürültü Yönünü Tahmin Etme
- Difüzyon modeli, eğitim örneklerinden veri kümesi (\mathcal{K})'yi öğrenmeyi ve bu kümeden örnek üretmeyi amaçlar
- Görüntüler için (\mathcal{K} \subset \mathbb{R}^{c\times h \times w}), gerçekçi görüntülere karşılık gelen piksel değerleri kümesidir
- Aynı çerçeve; ses, video, robot yörüngeleri ve metin gibi ayrık alanlara da uygulanır
- Eğitim prosedürü üç adımda görülebilir
- (x_0 \sim \mathcal{K}), (\sigma) ve (\epsilon \sim N(0,I)) örneklenir
- (x_\sigma=x_0+\sigma\epsilon) ile gürültü karıştırılmış veri oluşturulur
- (\epsilon_\theta(x_\sigma,\sigma))'nın (\epsilon)'yi tahmin etmesi için kare kaybı en aza indirilir
- Kodda
training_loop, herx0batch'i içingenerate_train_sampleilesigmaveepsüretir vemodel(x0 + sigma * eps, sigma)çıktısı ileepsarasındaki MSE'yi optimize eder - (\sigma), sürekli bir aralıktan uniform örneklemek yerine (N) adet değere ayrılmış bir (\sigma) takviminden seçilir
Schedulesınıfı, olasısigmaslistesini sarar ve eğitim sırasında batch bazında değer örnekler- Metindeki örnek
ScheduleLogLinear(N, sigma_min=0.02, sigma_max=10)kullanır ScheduleDDPM, piksel uzayı difüzyon modelleri için;ScheduleLDMise Stable Diffusion gibi latent diffusion modelleri için kullanılan takvimdir
Swissroll toy örneği
- Toy veri kümesi, ilk difüzyon makalelerinden biri olan Sohl-Dickstein et al. 2015'te kullanılan spiral nokta kümesidir ve (\mathcal{K}\subset\mathbb{R}^2) şeklindedir
- Basit veri kümesinde denoiser bir MLP olarak uygulanır
- Girdi, (x\in\mathbb{R}^2) ile (\sigma)'nın 2 boyutlu embedding'inin birleştirilmiş halidir
- Çıktı, gürültü (\epsilon\in\mathbb{R}^2) için tahmin değeridir
- Birçok difüzyon modeli (\sigma) için sinusoidal positional embedding kullanır; ancak bu örnekte basit bir 2 boyutlu embedding de iyi çalışır
- Örnek eğitim ayarı
ScheduleLogLinear(N=200, sigma_min=0.005, sigma_max=10)veepochs=15000kullanır - Eğitilmiş denoiser, (x-\sigma\epsilon_\theta(x,\sigma)) çizilerek vektör alanı olarak görselleştirilebilir
- (\sigma) büyük olduğunda denoiser, veri ortalamasını tahmin etme eğilimindedir
- (\sigma) düşük ve girdi (x) veriye yakın olduğunda gerçek veri noktalarını tahmin eder
Denoising'i İzdüşüm Olarak Yorumlamak
- Veri kümesi (\mathcal{K}) için uzaklık fonksiyonu, (\mathrm{dist}_{\mathcal{K}}(x)=\min{|x-x_0|:x_0\in\mathcal{K}}) olarak tanımlanır
- (x)'in izdüşümü (\mathrm{proj}_{\mathcal{K}}(x)), bu uzaklığı sağlayan (\mathcal{K}) içindeki noktalar kümesidir
- (\mathcal{K}) kapalı bir küme, (x\notin\mathcal{K}) ve izdüşüm tekil ise kare uzaklık fonksiyonunun gradyanı (x-\mathrm{proj}_{\mathcal{K}}(x)) olur
- Uzaklık fonksiyonu (\mathrm{dist}_{\mathcal{K}}) her yerde türevlenebilir olmadığından,
minyerine softmin kullanılarak (\sigma) ile yumuşatılmış kare uzaklık fonksiyonu tanıtılır - Yumuşatılmış uzaklık fonksiyonunun gradyanı, (x)'in belirlediği ağırlıklara göre (\mathcal{K})'deki noktaların ağırlıklı ortalamasına doğru yönelir
İdeal denoiser ve bağıl hata modeli
- İdeal denoiser (\epsilon^*), belirli bir (\sigma) için eğitim kaybını tam olarak en aza indiren denoiser'dır
- Veri, sonlu bir (\mathcal{K}) kümesi üzerindeki ayrık uniform dağılım ise ideal denoiser kapalı form bir ifadeyle yazılabilir
- Her veri noktasının ağırlığı, (x_\sigma) ile o nokta arasındaki uzaklığa göre belirlenir
- Küçük veri kümelerinde bu doğrudan
IdealDenoiserile hesaplanabilir
- Toy veride ideal denoiser, (\sigma) büyükken veri ortalamasına; (\sigma) küçükken en yakın veri noktasına yönelir
- Temel teorem, tüm (\sigma>0), (x\in\mathbb{R}^n) için (\frac{1}{2}\nabla_x \mathrm{dist}^2_{\mathcal{K}}(x,\sigma)=\sigma\epsilon^*(x,\sigma)) ilişkisini verir
- Bağıl hata modeli, (x-\sigma\epsilon_\theta(x,\sigma))'nın (\mathrm{proj}_{\mathcal{K}}(x))'yi iyi yaklaşıklandırdığı koşulu kullanır
- (\sqrt{n}\sigma), (\mathrm{dist}_{\mathcal{K}}(x))'yi sabit katsayı çerçevesinde iyi tahmin ettiğinde uygulanır
- Hatanın (\eta\mathrm{dist}_{\mathcal{K}}(x))'i aşmadığı varsayılır
- Düşük gürültüde, manifold hipotezi altında eklenen gürültünün çoğu veri manifoldu'na dik olduğundan denoising izdüşümü yaklaşıklar
- Yüksek gürültüde, (\sigma) (\mathcal{K})'nin çapından büyükse veri ağırlıklı ortalamasını tahmin eden denoiser da küçük bağıl hataya sahiptir
- CIFAR-10, ideal denoiser hesaplamasının mümkün olduğu büyüklüktedir; deneylerde örnekleme yörüngesi üzerindeki tam izdüşüm ile ideal denoiser çıktısı arasındaki bağıl hata küçük görünür
Örnekleme: yinelemeli denoising ve DDIM
- Eğitilmiş bir denoiser varsa, gürültü karışmış (x_t) ve gürültü seviyesi (\sigma_t) için (\hat{x}0^t=x_t-\sigma_t\epsilon\theta(x_t,\sigma_t)) ile (x_0) tahmin edilir
- Başlangıç noktası için (\sigma_T), (\mathcal{K})'nin çapına göre büyük seçilir ve (x_T), (N(0,\sigma_T))'den bağımsız örneklenerek (\mathcal{K})'den uzağa yerleştirilir
- Yüksek gürültüde, denoiser'ın tek bir çağrısı bağıl hata küçük olsa bile mutlak hata büyük olabilir; ideal denoiser tahmini de veri ortalamasına yakın olur
- Bu yüzden örnekleme, (\sigma_t) takvimi boyunca denoiser'ı tekrar tekrar çağırarak (x_T,\ldots,x_0) dizisini üretir
- (x_{t-1}=x_t-(\sigma_t-\sigma_{t-1})\epsilon_\theta(x_t,\sigma_t)) güncellemesi, bir koordinat dönüşümünden sonra deterministik DDIM örnekleme algoritması ile aynıdır
- DDIM ile eşdeğerliğin ispatı makalenin Appendix A bölümündedir
Uzaklık minimizasyonu olarak DDIM
- DDIM, (f(x)=\frac{1}{2}\mathrm{dist}_{\mathcal{K}}(x)^2) üzerinde yaklaşık gradyan inişi olarak yorumlanır
- Adım büyüklüğü (1-\sigma_{t-1}/\sigma_t)'dir
- (\nabla f(x_t)), (\epsilon_\theta(x_t,\sigma_t)) ile kestirilir
- (\sigma_t) takvimi, örnekleme sırasında gradyan adımlarının sayısını ve büyüklüğünü belirler
- Adım sayısı çok azsa (\mathrm{dist}_{\mathcal{K}}(x_t)) azalmayabilir ve yakınsama gerçekleşmeyebilir
- Çok sayıda küçük adım kullanmak, denoiser değerlendirme sayısını artırarak hesaplama maliyetini yükseltir
- Admissible schedule, her yinelemede (\sqrt{n}\sigma_t)'nin (\mathrm{dist}_{\mathcal{K}}(x_t)) ile sabit katsayı sınırları içinde eşleşmesini sağlayan takvimdir
- Geometrik olarak azalan log-linear (\sigma_t) dizisi admissible schedule'dır
- Teoreme göre, DDIM ile üretilen (x_t)'lerde (\nabla\mathrm{dist}{\mathcal{K}}(x)) mevcutsa ve (\mathrm{dist}{\mathcal{K}}(x_T)=\sqrt{n}\sigma_T) ise, (x_t) kare uzaklık fonksiyonu üzerinde gradyan inişiyle üretilir ve (\mathrm{dist}_{\mathcal{K}}(x_t)/\sqrt{n}\approx\sigma_t) korunur
- Toy örnekte, özgün log-linear takvimden alt örnekleme yapılarak 20 adımlı bir DDIM örnekleyici uygulanır; örneklerin çoğu orijinal veriye yakındır ama hâlâ iyileştirme alanı vardır
Gradyan kestirimi tabanlı geliştirilmiş örnekleyici
- (\nabla\mathrm{dist}{\mathcal{K}}(x))'nin (x) ile (\mathrm{proj}{\mathcal{K}}(x)) arasında değişmez olması kullanılarak, mevcut tahmin ile önceki tahmini karıştıran bir güncelleme uygulanır
- (\bar{\epsilon}t=\gamma\epsilon\theta(x_t,\sigma_t)+(1-\gamma)\epsilon_\theta(x_{t+1},\sigma_{t+1})) güncellemesi, bir önceki adımın hatasını mevcut tahminle düzelten bir yöntemdir
- Toy model örneklerinde bu yaklaşım DDIM'den daha hızlı yakınsar ve örnekler orijinal veriye daha çok yaklaşır
- DDIM ile karşılaştırıldığında bu örnekleyiciye momentum eklenmiş bir yorum getirilebilir; yörünge overshoot yapabilir ama daha hızlı yakınsayabilir
- Üretim sürecinde gürültü eklemek, deneysel olarak örnekleme kalitesini iyileştirir
- Orijinal (\sigma_t) takvimini korumak için, daha küçük bir (\sigma_{t'})'ye kadar denoise edildikten sonra (w_t\sim N(0,I)) gürültüsü yeniden eklenir
- (\mu=\frac{1}{2}) olduğunda DDPM sampler tam olarak geri elde edilir
- Tam güncelleme (x_{t-1}=x_t-(\sigma_t-\sigma_{t'})\bar{\epsilon}_t+\eta w_t), üç örnekleyiciyi geneller
- DDIM:
gam=1, mu=0 - DDPM:
gam=1, mu=0.5 - Gradyan kestirim örnekleyicisi:
gam=2, mu=0
- DDIM:
Daha büyük modeller ve kaynaklar
- Yukarıdaki eğitim kodu, yalnızca toy veri için değil, görüntü difüzyon modellerini sıfırdan eğitmek için de kullanılabilir
- FashionMNIST örneği, FashionMNIST veri kümesi üzerinde eğitilerek Papers with Code leaderboard'unda FID bazında 2. sırayı alan bir örnek olarak sunuluyor
- Örnekleme kodu, herhangi bir değişiklik yapılmadan önceden eğitilmiş latent diffusion modelleriyle de kullanılabilir
- Örnekte
ScheduleLDM(1000)veModelLatentDiffusion('stabilityai/stable-diffusion-2-1-base')kullanılır - Metin koşulu
An astronaut riding a horseolarak ayarlanır, 50 adet (\sigma) adımıyla örnekleme yapılır ve ardından latent decode edilir
- Örnekte
- (\gamma) momentum teriminin etkisi, yüksek çözünürlüklü metinden görüntü üretiminde karşılaştırmalı görselleştirmelerle gösterilir
- Ayrıca bakılabilecek kaynaklar
- What are diffusion models: Markov process'i tersine çeviren ayrık zaman perspektifinden difüzyon modellerine giriş
- Generative modeling by estimating gradients of the data distribution: stokastik diferansiyel denklemleri tersine çeviren sürekli zaman perspektifinden difüzyon modellerine giriş
- The annotated diffusion model: PyTorch difüzyon modeli uygulamasının ayrıntılı açıklaması
1 yorum
Hacker News yorumları
Sorularınız varsa yanıtlayabilirim.
Özellikle yörünge tartışmasını beğendim; çünkü zamanlayıcılar gibi konularda birçok kişinin zorlandığı noktaları anlamak için iyi bir motivasyon sağlıyor. Song’un ya da Lilian’ın yazıları kadar eksiksiz olmasa da çok daha erişilebilir, bu yüzden başkalarına önermeyi düşünüyorum.
Bu arada bir arkadaşımın daha önce yazdığı minimal bir difüzyon uygulaması var; DDPM açısından biraz daha “eksiksiz” sayılır ve faydalı olmuştu: https://github.com/VSehwag/minimal-diffusion/
Stable Diffusion’da örnekleme prosedürüyle biraz deneme yapmış biri olarak, DDIM’e kıyasla yakınsama süresi ve adım sayısı karşılaştırmasını da görmek isterdim. Momentum, yakınsama ve hata arasında bir ilişki olup olmadığını merak ediyorum. Örneğin 16 adımlı momentum örnekleyicisinin DDIM’in 20 adımı ± hata terimiyle neredeyse eşdeğer olup olmadığı gibi bir karşılaştırma iyi olurdu.
get_sigma_embeds(batches, sigma)ilk girdiyi kullanmıyor gibi görünüyor. Acaba amaçsigmayı(batches, 1)biçimine broadcast etmek miydi?Matematiksel ayrıntılara çok daha derin giriyor ve yanında 500 satırdan kısa, çok anlaşılır bir minimal uygulama sunuyor.
Sora’yı ve diğer video üretim modellerini çalıştıran difüzyon transformer sürümlerine de genişletilse iyi olurdu. Bu yazıyla https://jaykmody.com/blog/gpt-from-scratch/ birleştirilerek “sıfırdan difüzyon transformer” türünde bir giriş yazısı hazırlanabilir gibi görünüyor.
Buna karşılık gerçekten derine inmek istiyorsanız Kingma, Gao, Ricky Tian Qi Chen ve Max Welling’in öğrencilerinin çalışmalarını (Tomczak postdoc, Hoogeboom vb.) ve ayrıca gizli emek sahibi Aapo Hyvärinen’in çalışmalarını okumanızı öneririm. Kingma & Gao’nun nispeten daha hafif taraftaki çalışmalarından, SD3 makalesiyle de ilgili bir örnek burada: https://arxiv.org/abs/2303.00848
Üzücü tarafı, önceki çalışmaları bilme ve anlama bağımlılığının büyük olması nedeniyle erişilebilirliğin düşmesi; ama buna anlamlı bir eleştiri demek de zor. Sonuçta bu araştırma, halka yönelik eğitim materyali değil.
n_embdboyutunda vektörlere projekte edebilirsiniz; difüzyon sürecinin kendisi aynı kalabilir.[1] https://yang-song.net/blog/2021/score/
[2] https://lilianweng.github.io/posts/2021-07-11-diffusion-mode...
Bizim bakış açımızda difüzyon modellerinin eğitilmesinin kolay olmasının nedeni, tam mesafe fonksiyonunun gradyanını tahmin etmek yerine yumuşatılmış mesafe fonksiyonunun gradyanını tahmin etmeye dayalı bir eğitim hedefi kullanmaları. Difüzyon modeli örneklemesi, birkaç kez yaklaşık gradyan adımı atmaya benzer.
Difüzyon modellerini daha derin anlamak için bu blog yazılarının hepsini okuyup farklı yorumları öğrenmenizi öneririm.
Ancak bu yazının yaklaşımı, gürültü giderici hata analizi gibi daha ilginç deneylere olanak sağlıyor gibi görünüyor.
[1] https://arxiv.org/pdf/2305.03486.pdf
Örneğin görüntü üreteçlerinin piyano tuşları üretmekte zorlanmasının nedeni nedir? Siyah tuşların ikili ve üçlü gruplar halinde dönüşümlü geldiği yapıyı üretmek için orta mesafe kısıtlarını daha iyi ifade etmek gerekiyormuş gibi görünüyor.