Flow Matching
Akış eşleştirme, bir ağı gürültüyü veriye taşıyan hızı tahmin edecek şekilde eğitir; Stable Diffusion 3, FLUX.1 ve Movie Gen'in arkasındaki amaç budur.
Akış eşleştirme, üretken modelleri öğrenilmiş bir hız alanını izleyerek rastgele gürültüyü veriye dönüştürecek şekilde eğiten bir yöntemdir. Bir sinir ağı, herhangi bir nokta ve 0 ile 1 arasındaki herhangi bir zaman için noktanın hangi yönde ve ne hızda hareket etmesi gerektiğini öğrenir. Örnek üretmek için Gauss gürültüsünden başlanır ve bu hız, zaman 1'e ulaşana kadar sıradan bir diferansiyel denklem (ODE) çözücüsüyle tümleştirilir. Meta AI ve Weizmann Bilim Enstitüsü'nden Yaron Lipman ve çalışma arkadaşları yöntemi ICLR 2023'te Üretken Modelleme için Akış Eşleştirme başlıklı çalışmayla tanıttı. Aynı dönemde yayımlanan iki çalışma, neredeyse aynı hedefe düzeltilmiş akış ve stokastik interpolant adlarını verdi. Akış eşleştirme, eğitim sırasında ODE'yi simüle etmeden sürekli normalleştirme akışlarını eğitir, difüzyon modellerini özel bir durum olarak kapsar ve Stable Diffusion 3, FLUX.1, Meta'nın Movie Gen'i ile yakın tarihli birçok konuşma ve robotik modelinin eğitim hedefidir.
Akış Eşleştirme Nasıl Çalışır?#
Eğitim sırasında hiçbir şey üretilmez. Her adımda bir veri örneği x1, standart Gauss dağılımından bir gürültü örneği x0 ve 0 ile 1 arasında bir zaman t seçilir; ardından bu iki nokta arasındaki doğru üzerinde bir nokta belirlenir: xt = (1 - t) * x0 + t * x1. Bu doğru üzerindeki bir nokta sabit x1 - x0 hızıyla hareket eder. Bu nedenle ağ v(xt, t), x1 - x0 değerini tahmin etmek üzere standart ortalama kare hatasıyla eğitilir. Her gürültü-veri çifti yalnızca tek bir yol tanımlar ancak herhangi bir noktadan birçok yol geçer; o noktadaki gürültüden veriye akışın hızı bunların ortalamasıdır. Makale, basit çift başına hedefler üzerinde regresyon yapmanın bu hesaplanamaz ortalama üzerinde regresyon yapmakla aynı gradyanları verdiğini kanıtlar. Böylece eğitim, ODE simülasyonu gerektirmeyen standart bir regresyon kayıp işlevine dayanır.
Üretim, dx/dt = v(x, t) değerini t = 0 noktasından t = 1 noktasına, genellikle Euler veya daha yüksek mertebeli çözücü adımlarıyla tümleştirir. Bu PyTorch kodu, 2B noktalardan oluşan iki küme üzerinde küçük bir hız ağı eğitir ve ardından 1, 2 ve 8 Euler adımıyla örnekler üretir:
import torch
from torch import nn
torch.manual_seed(0)
# Velocity network v(x, t) for 2D points; the data are two clusters at (2, 2) and (-2, -2)
net = nn.Sequential(nn.Linear(3, 128), nn.SiLU(), nn.Linear(128, 128), nn.SiLU(), nn.Linear(128, 2))
optimizer = torch.optim.Adam(net.parameters(), lr=1e-3)
centers = torch.tensor([[2.0, 2.0], [-2.0, -2.0]])
for step in range(2000):
x1 = centers[torch.randint(0, 2, (256,))] + 0.2 * torch.randn(256, 2) # data samples
x0 = torch.randn(256, 2) # noise samples
t = torch.rand(256, 1)
xt = (1 - t) * x0 + t * x1 # point on the straight path from noise to data
loss = ((net(torch.cat([xt, t], dim=1)) - (x1 - x0)) ** 2).mean() # regress the path's velocity
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Generate: start from noise and follow the learned velocity field with Euler steps
for steps in (1, 2, 8):
x = torch.randn(1000, 2)
with torch.no_grad():
for i in range(steps):
x = x + net(torch.cat([x, torch.full((1000, 1), i / steps)], dim=1)) / steps
near = (torch.cdist(x, centers).min(dim=1).values < 0.6).float().mean()
print(f"{steps}-step sampling: {near:.0%} of samples land near a cluster")Kod önce 1-step sampling: 0% of samples land near a cluster değerini, ardından 2 adım için %47'yi ve 8 adım için %94'ü yazdırır. t = 0 noktasında her gürültü noktasının beklenen hedefi aynıdır: verilerin ortalaması. Bu nedenle tek bir adım tüm örnekleri iki kümenin arasındaki boş alana gönderir. Her eğitim yolu düzdür ancak birbirine yakın başlayan yollar farklı kümelerde sonlanır; bu yolların ortalamasını alan öğrenilmiş akış yine de eğridir. Bu nedenle az adımlı üreticiler, akışı düzleştirmek için modelin kendi gürültü-örnek çiftleri üzerinde yeniden eğitim yapan yeniden akış veya tutarlılık modellerine damıtma gibi tekniklerden yararlanır.
Akış Eşleştirme ve İlgili Yöntemler#
- Difüzyon modelleri: Difüzyon eğitimi, veriyi bir gürültü çizelgesine göre bozar ve ağa eklenen gürültüyü tahmin etmeyi öğretir; ardından örnekler bu süreç tersine çevrilerek üretilir. Akış eşleştirme makalesi, hedef işlevinin difüzyon modellerinin kullandığı yollar dâhil tüm Gauss olasılık yollarını kabul ettiğini gösterdi ve bu modelleri eğitmenin daha kararlı bir yolunu sunduğunu ortaya koydu. Düz yol ise ayrı ve daha basit bir tercihtir. Her iki model ailesi de difüzyon dönüştürücüsü (DiT) gibi mimarileri, sınıflandırıcısız yönlendirmeyi ve ODE örnekleyicilerini paylaşır.
- Düzeltilmiş akış: Aynı doğrusal enterpolasyonu ve hız kaybını kullanır; dolayısıyla doğrusal yol için iki ad büyük ölçüde eş anlamlıdır. Düzeltilmiş akış makalesi, yörüngeleri daha da düzleştirmek için yeniden akış prosedürünü ekler.
- Normalleştirme akışları: Ayrık normalleştirme akışları, tersinir katmanları üst üste dizer ve tam olabilirlikle eğitilir. Sinirsel ODE türü olan sürekli normalleştirme akışları dönüşümü bir ODE ile tanımlar ancak maksimum olabilirlikle eğitilir; bu da her eğitim adımında ODE'nin çözülmesini gerektirir. Akış eşleştirme aynı tür ODE modelini bu çözümü yapmadan regresyonla eğitir.
- Optik akış: Adı benzer olsa da ilgisizdir. Optik akış, video kareleri arasındaki piksellerin görünür hareketidir; akış eşleştirme ise örnekleri olası veriler uzayında hareket ettirir.
Akış Eşleştirme Nerelerde Kullanılır#
- Görüntü üretimi: Stability AI, Stable Diffusion 3'ü bir düzeltilmiş akış dönüştürücüsü ile eğitti ve eğitim zaman adımlarını orta gürültü düzeylerini öne çıkaran logit-normal dağılımdan örnekledi. Black Forest Labs'in FLUX.1 modeli ise 12 milyar parametreli bir düzeltilmiş akış dönüştürücüsüdür. Bu metinden görüntü üreten modellerin oluşturduğu görüntüler, YOLO26 algılama modellerini eğitmek için kullanılan veri kümelerine nadir nesneler, hava koşulları ve bakış açıları ekleyen sentetik veriler olarak kullanılır.
- Video üretimi: Meta'nın Movie Gen'i, akış eşleştirmeyle eğitilmiş 30 milyar parametreli bir dönüştürücüdür; saniyede 16 kare hızında 16 saniyeye kadar 1080p video üretir.
- Konuşma: Meta'nın Voicebox'ı 50.000 saatten fazla konuşma üzerinde otoregresif olmayan bir akış eşleştirme modeli eğitti. Sıfır örnekli metinden konuşmaya dönüşümde VALL-E'nin %5,9'luk oranına karşı %1,9 sözcük hata oranına ulaştı ve 20 kata kadar daha hızlı çalıştı. F5-TTS daha sonra akış eşleştirmeyi difüzyon dönüştürücüsüyle birleştirdi.
- Robot kontrolü: Physical Intelligence'ın π0 modeli, 3 milyar parametreli bir görsel-dil modeline 300 milyon parametreli bir akış eşleştirme "eylem uzmanı" ekler. Model, 10 tümleştirme adımıyla gelecekteki 50 eylemlik parçalar üretir ve robotları 50 Hz'ye kadar kontrol eder.










