Flow Matching
يدرّب تطابق التدفق شبكةً على التنبؤ بالسرعة التي تنقل الضوضاء إلى البيانات، وهو هدف Stable Diffusion 3 وFLUX.1 وMovie Gen.
مطابقة التدفق طريقة لتدريب النماذج التوليدية التي تحوّل الضوضاء العشوائية إلى بيانات باتباع مجال سرعة متعلّم. وتتعلم الشبكة العصبية، لأي نقطة وأي وقت بين 0 و1، اتجاه الحركة التي ينبغي أن تسلكها النقطة وسرعتها؛ ويعني توليد عينة البدء بضوضاء غاوسية وتكامل تلك السرعة باستخدام محلّل معادلة تفاضلية عادية (ODE) حتى الزمن 1. وقدّم Yaron Lipman وزملاؤه في Meta AI ومعهد وايزمان للعلوم هذه الطريقة في مطابقة التدفق للنمذجة التوليدية خلال ICLR 2023، وتوصلت ورقتان متزامنتان إلى هدف يكاد يكون مماثلًا تحت اسمي التدفق المصحح والاستيفاءات العشوائية. وتدرّب مطابقة التدفق تدفقات التطبيع المستمرة دون محاكاة ODE أثناء التدريب، وتشمل نماذج الانتشار حالة خاصة، وهي هدف التدريب وراء Stable Diffusion 3 وFLUX.1 وMovie Gen من Meta والعديد من نماذج الكلام والروبوتات الحديثة.
آلية عمل مطابقة التدفق#
لا ينتج التدريب أي شيء مطلقًا. تسحب كل خطوة عينة بيانات x1، وعينة ضوضاء x0 من توزيع غاوسي معياري، وزمنًا t بين 0 و1، وتضع نقطة على الخط المستقيم بينهما: xt = (1 - t) * x0 + t * x1. تتحرك النقطة على ذلك الخط بسرعة ثابتة x1 - x0؛ لذا تُدرَّب الشبكة v(xt, t) باستخدام متوسط مربع خطأ عادي للتنبؤ بـx1 - x0. ويحدد كل زوج من الضوضاء والبيانات مسارًا واحدًا فقط، لكن مسارات عديدة تمر بأي نقطة معينة، وتكون سرعة التدفق الكامل من الضوضاء إلى البيانات عند تلك النقطة هي متوسط سرعاتها. وتثبت الورقة أن الانحدار نحو الأهداف البسيطة لكل زوج يعطي التدرجات نفسها التي يعطيها الانحدار نحو ذلك المتوسط المستعصي، لذا يكون التدريب دالة خسارة انحدارًا عاديًا بلا محاكاة لـODE.
يُجري التوليد تكامل dx/dt = v(x, t) من t = 0 إلى t = 1، عادةً بخطوات محلّل أويلر أو محلّل من رتبة أعلى. ويُدرّب كود PyTorch هذا شبكة سرعة صغيرة على مجموعتين من نقاط ثنائية الأبعاد، ثم يأخذ عينات بخطوة أويلر واحدة وخطوتين وثماني خطوات:
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")يطبع المثال 1-step sampling: 0% of samples land near a cluster، ثم 47% عند خطوتين و94% عند 8 خطوات. وعند t = 0 تكون الوجهة المتوقعة لكل نقطة ضوضاء واحدة، أي متوسط البيانات؛ لذا ترسل خطوة واحدة كل العينات إلى المساحة الخالية بين المجموعتين. ومسار التدريب مستقيم، لكن المسارات التي تبدأ متقاربة تنتهي في مجموعتين مختلفتين، كما أن التدفق المتعلّم الذي يأخذ متوسطها يظل منحنياً. ولذلك تضيف المولّدات ذات الخطوات القليلة تقنيات مثل إعادة التدفق، التي تعيد التدريب على أزواج الضوضاء والعينات الخاصة بالنموذج لتسوية التدفق، أو التقطير إلى نماذج الاتساق.
مطابقة التدفق والأساليب ذات الصلة#
- نماذج الانتشار: يفسد تدريب الانتشار البيانات وفق جدول للضوضاء، ويعلّم الشبكة التنبؤ بالضوضاء المضافة، ثم يأخذ عينات بعكس تلك العملية. وأظهرت ورقة مطابقة التدفق أن هدفها يقبل أي مسار احتمالي غاوسي، بما في ذلك المسارات التي تستخدمها نماذج الانتشار، ووجدت أنها طريقة أكثر استقرارًا لتدريبها. أما المسار المستقيم فهو خيار أبسط منفصل. وتشترك العائلتان في بنى مثل محوّل الانتشار (DiT) والتوجيه الخالي من المصنّف وأخذ العينات باستخدام ODE.
- التدفق المصحح: يستخدم الاستيفاء الخطي نفسه وخسارة السرعة نفسيهما؛ لذا فالاسمان مترادفان إلى حد كبير في حالة المسار الخطي. وتضيف ورقة التدفق المصحح إجراء إعادة التدفق لمزيد من تسوية المسارات.
- تدفقات التطبيع: تكدّس تدفقات التطبيع المتقطعة طبقات قابلة للعكس، وتُدرّب باستخدام الاحتمالية الدقيقة. أما تدفقات التطبيع المستمرة، وهي شكل من أشكال معادلات ODE العصبية، فتحدد التحويل باستخدام ODE، لكنها كانت تُدرّب بالاحتمالية العظمى، ما يتطلب حل ODE في كل خطوة تدريب. وتدرّب مطابقة التدفق النوع نفسه من نماذج ODE بالانحدار، دون ذلك الحل.
- التدفق البصري: لا صلة له بمطابقة التدفق رغم تشابه الاسم. فـالتدفق البصري هو الحركة الظاهرية للبكسلات بين إطارات الفيديو، بينما تحرّك مطابقة التدفق العينات عبر فضاء البيانات الممكنة.
استخدامات مطابقة التدفق#
- توليد الصور: درّبت Stability AI نموذج Stable Diffusion 3 باستخدام محوّل التدفق المصحح، وأخذت عينات الخطوات الزمنية للتدريب من توزيع لوجيت-طبيعي يفضّل مستويات الضوضاء المتوسطة؛ أما FLUX.1 من Black Forest Labs فهو محوّل تدفق مصحح يضم 12 مليار معلمة. وتُستخدم الصور الناتجة عن نماذج تحويل النص إلى صورة هذه بوصفها بيانات اصطناعية تضيف أجسامًا نادرة وأحوالًا جوية ووجهات نظر إلى مجموعات البيانات المستخدمة لتدريب نماذج اكتشاف YOLO26.
- توليد الفيديو: Movie Gen من Meta محوّل يضم 30 مليار معلمة، دُرّب بمطابقة التدفق، ويولّد فيديو بدقة 1080p يصل طوله إلى 16 ثانية بمعدل 16 إطارًا في الثانية.
- الكلام: درّب Voicebox من Meta نموذجًا غير ذاتيّ الانحدار لمطابقة التدفق على أكثر من 50,000 ساعة من الكلام، وحقق في مهمة تحويل النص إلى كلام دون أمثلة مسبقة معدل خطأ الكلمات قدره 1.9%، مقابل 5.9% لدى VALL-E، مع تشغيل أسرع بما يصل إلى 20 مرة. وجمع F5-TTS لاحقًا بين مطابقة التدفق ومحوّل الانتشار.
- التحكم بالروبوتات: يضيف π0 من Physical Intelligence «خبير أفعال» لمطابقة التدفق يضم 300 مليون معلمة إلى نموذج رؤية ولغة يضم 3 مليارات معلمة، وينتج دفعات من 50 فعلًا مستقبليًا باستخدام 10 خطوات تكامل، ويتحكم بالروبوتات بمعدل يصل إلى 50 هرتز.










