Yeni bir kuramsal bakış açısıyla sıfırdan difüzyon modelleri
- Difüzyon modelleri, son dönemde üretici modellemede etkileyici sonuçlar gösterdi; özellikle çok modlu dağılımlardan örnekleme konusunda öne çıkıyor.
- Difüzyon modelleri yalnızca metinden görüntü üreten Stable Diffusion gibi araçlarda yaygın olarak benimsenmekle kalmadı, ses/video/3D üretimi, protein tasarımı, robot yol planlama gibi çeşitli uygulama alanlarında da üstün performans gösterdi.
- Bu eğitim, difüzyon modellerini optimizasyon perspektifinden tanıtıyor; hem kuramı hem de kodu ele alarak difüzyon modellerinin sıfırdan nasıl uygulanacağını açıklıyor.
Difüzyon modelini eğitmek
- Difüzyon modeli, eğitim örneklerinden öğrenilen kümeden örnekler üretmeyi amaçlar.
- Difüzyon modeli eğitimi şu süreci içerir:
- K'den
x0 örneklenir, σmin ile σmax arasında gürültü seviyesi σ örneklenir ve N(0,I)'den gürültü ϵ örneklenir.
- Gürültülü veri
xσ=x0+σϵ üretilir.
- Kare kaybı en aza indirilirken
xσ'den ϵ (gürültünün yönü) tahmin edilir.
- Gerçek eğitim,
training_loop fonksiyonu üzerinden yürütülür; bu fonksiyon toplu haldeki x0 üzerinde yineleme yapar ve generate_train_sample kullanarak gürültü seviyesi sigma ile gürültü vektörü eps örnekler.
Gürültü çizelgesi
- Pratikte
σ, [σmin,σmax] aralığında eşit olasılıkla örneklenmez; bunun yerine bu aralık, σ çizelgesi olarak adlandırılan N adet ayrık değere dönüştürülür.
Schedule sınıfı, olası sigmas listesini kapsüller ve eğitim sırasında bu listeden örnekleme yapar.
- Log-doğrusal bir çizelge kullanılır ve diğer çizelgelerle karşılaştırmalı olarak, varsayılan parametrelerle bu çizelgeyi gösteren bir grafik sunulur.
Oyuncak örnek
- Bu eğitimde, spirallerden örneklenmiş noktalardan oluşan bir oyuncak veri kümesi kullanılır.
- Bu basit veri kümesi için, çok katmanlı algılayıcı (MLP) kullanılarak bir denoiser uygulanır.
- MLP,
x∈R2 ile gürültü seviyesi σ'nın birleştirilmesini girdi olarak alır ve ϵ∈R2 gürültüsünü tahmin eder.
- Tüm gerekli bileşenler hazır olduğunda difüzyon modeli eğitilebilir.
Denoising'i yaklaşık izdüşüm olarak yorumlamak
- Difüzyon eğitim prosedürü,
ϵθ(x,σ) denoiser'ını öğrenir; makalede öğrenilen denoiser, veri manifoldu K üzerine yaklaşık bir izdüşüm olarak yorumlanır.
- Bu, difüzyon örnekleme algoritmasının yakınsamasını analiz etmek için göreli hata yaklaşım modelinin tanıtılmasını motive eder.
Uzaklık ve izdüşüm fonksiyonları
K⊆Rn kümesi için uzaklık fonksiyonu distK(x) olarak tanımlanır ve x∈Rn noktasının izdüşümü, bu uzaklığı sağlayan noktaların kümesi olarak tanımlanır.
- Eğer
projK(x) tekilse, distK(x)'in gradyanı bu tekil izdüşüme yönelir.
İdeal denoiser
- Belirli bir gürültü seviyesi
σ için ideal ya da optimal denoiser ϵ∗, eğitim kaybı fonksiyonunun tam minimizer'ıdır.
- Veri,
K üzerinde sonlu bir küme üzerindeki ayrık eşit dağılım olduğunda, ideal denoiser tam kapalı biçimli bir ifadeye sahiptir.
Göreli hata modeli
- Difüzyon örnekleme algoritmasının yakınsamasını analiz etmek için göreli hata modeli tanıtılır.
- Bu model, denoiser tarafından tahmin edilen izdüşüm
x−σϵθ(x,σ)'nin, σ değeri distK(x)/n'i iyi tahmin ettiğinde, girdi x için projK(x)'i iyi yaklaştırdığını varsayar.
Difüzyon modelinden örnekleme
- Öğrenilmiş denoiser
ϵθ(x,σ)'den örnekleme yaparak K'ye ait bir x0 noktası elde etmek için, gürültü xt ve gürültü seviyesi σt içeren denoiser ϵθ(xt,σt), x0'ı tahmin eder.
Difüzyon örneklemeyi uzaklık minimizasyonu olarak yorumlamak
- Difüzyon örnekleme yinelemesi,
f(x)=12distK(x)2 fonksiyonu üzerinde gradyan inişi olarak yorumlanabilir.
σt çizelgesinin nasıl seçileceği, örnekleme sırasında atılacak gradyan adımlarının sayısını ve büyüklüğünü belirler.
Gradyan tahminiyle geliştirilmiş örnekleyici
- Gradyan tahmini yoluyla yeni ve verimli bir örnekleyici türetilir.
- Bu örnekleyici, mevcut DDIM örnekleyicisine kıyasla daha hızlı yakınsama gösterir.
Büyük ölçekli örnek
- Yukarıda verilen eğitim kodu, yalnızca oyuncak veri kümesi için değil, görüntü difüzyon modelini de sıfırdan eğitmek için kullanılabilir.
- Örnekleme kodu, önceden eğitilmiş son teknoloji latent difüzyon modelinden örnekleme yapmak için de değişiklik gerektirmeden çalışır.
Diğer kaynaklar
- Difüzyon modelleri hakkında şu blog yazıları da önerilir:
- Difüzyon modelleri nedir, difüzyon modellerini Markov sürecini tersine çeviren ayrık zaman perspektifinden tanıtır.
- Veri dağılımının gradyanını tahmin ederek üretici modelleme, difüzyon modellerini stokastik diferansiyel denklemleri tersine çeviren sürekli zaman perspektifinden tanıtır.
- Açıklamalı difüzyon modeli, difüzyon modellerinin PyTorch uygulamasını ayrıntılı biçimde açıklar.
GN⁺ görüşü
- Bu eğitim, difüzyon modellerini optimizasyon perspektifinden tanıtırken kuramsal arka plan ile gerçek kod uygulamasını birbirine bağlayan anlatımı sayesinde başlangıç seviyesindeki yazılım mühendisleri için de erişilebilirlik sağlar.
- Difüzyon modelleri çeşitli veri türlerine uygulanabilir; bu da çok modlu dağılımlardan örneklemenin önemli olduğu farklı uygulama alanlarında kullanılabilirliğine işaret eder.
- Eğitim, difüzyon modellerinin eğitim ve örnekleme süreçlerini adım adım açıklayarak modelin çalışma mantığı ve uygulanışı hakkında derinlemesine anlayış kazanılmasına yardımcı olur.
- Difüzyon modellerinin eğitim ve örnekleme süreçleri görece karmaşıktır; bunları anlamak ve uygulamak için makine öğrenmesi ile derin öğrenme konusunda temel bilgi gerekir.
- Bu teknolojiyi kullanıma alırken hesaplama maliyeti, eğitim verisinin kalitesi ve modelin karmaşıklığı gibi etkenler göz önünde bulundurulmalıdır; buna karşılık daha rafine ve çeşitli örnekler üretme potansiyeli sunar.
1 yorum
Hacker News görüşleri
Yazarın notu: Difüzyon modellerini anlamaya çalışırken kodu ve matematiği çok daha fazla sadeleştirebileceğini fark etmiş; bu da bir blog yazısı ve bir difüzyon kütüphanesi yazmasına yol açmış. Soruları memnuniyetle yanıtlamaya hazır.
Bir başka harika yazı olan 'Diffusion Models From Scratch', matematiksel ayrıntıları daha detaylı ele alıyor ve anlaşılması kolay, 500 satırın altında bir uygulamayla birlikte geliyor.
Bu yazıda kod bulunması güzel. Difüzyon makaleleri çok sayıda formülle tanınır, ancak kod bizim gibi insanlar için daha açık ve anlaşılır. Tüm kuramsal makaleler referans uygulama koduyla birlikte gelmeli.
Difüzyon transformer'ları üzerine bir genişletme görmek isterim. Sora ve diğer video üretim modellerini çalıştırmak için kullanılıyor. Bu yazıyla 'GPT From Scratch'i birleştirip 'Diffusion Transformer From Scratch' tarzı bir giriş hazırlanabilir.
Güzel bir yazı, ancak difüzyon modelinin olasılık logunun türevini (score function) modellediği ve difüzyon örneklemesinin Langevin dynamics'e benzediği önemli özelliğini kaçırıyor. Bu, neden GAN'lara göre eğitilmesinin daha kolay olduğunu açıklar.
Çok ilginç. Iterative alpha-(de)Blending makalesini hatırlatıyor. Bu makale de kavramsal olarak daha basit bir difüzyon modeli kuruyor ve bunu kabaca yinelemeli bir izdüşüm süreci olarak formüle ediyor. Bu yaklaşım, denoising hata analizi gibi daha ilginç deneyleri mümkün kılıyor.
Difüzyon fikrinin bir parçası, çok büyük miktarda eğitim verisi elde etmek mi? Yani rastgele difüze edilmiş görüntülerle difüze edilmemiş görüntüleri karşılaştırmak mı?
Kuram açısından iyi bir açıklama. Veri kümesinden bağımsız görünüyor. Görüntü üretiminin somut ayrıntılarını merak ediyorum. Örneğin, görüntü üreticisinin piyano tuşlarını üretmekte zorlanmasının sebebi ne? Daha iyi orta ölçekli kısıt temsillerine ihtiyaç var gibi görünüyor.
Tüm makine öğrenimi modellerinin convolution olduğunu unutmayın.
Bu yazının yorumlarını kullanarak gizli mesajlar gönderen gizli bir topluluk var, o yüzden Google'da aratmayın.