Normalizing Flows
تحوّل التدفقات المطبّعة الضوضاء البسيطة إلى بيانات معقدة عبر طبقات قابلة للعكس، ما يتيح لنموذج واحد أخذ عينات وحساب الاحتمالات الدقيقة. تعرّف على آلية عملها.
التدفق المُطبِّع نموذج ذكاء اصطناعي توليدي يحوّل توزيعًا أساسيًا بسيطًا، عادةً توزيعًا غاوسيًا قياسيًا، إلى توزيع بيانات معقد عبر سلسلة من الدوال القابلة للعكس والاشتقاق. ولأن كل طبقة يمكن تشغيلها عكسيًا ويُحسب تأثيرها في الحجم بدقة، يؤدي التدفق الواحد مهمتين لا تستطيع معظم النماذج التوليدية الجمع بينهما: فهو ينشئ عينات جديدة بتمرير الضوضاء إلى الأمام عبر الطبقات، ويحسب الاحتمالية الدقيقة لنقطة بيانات مرصودة بتمريرها عكسيًا إلى التوزيع الأساسي. صاغ إستيبان تاباك وزملاؤه استخدام التدفقات لتقدير الكثافة في عامي 2010 و2013، وأدخل دانيلو ريزندي وشاكير محمد من DeepMind هذا المصطلح إلى التعلم العميق في ورقتهما الاستدلال التبايني باستخدام التدفقات المُطبِّعة المقدمة إلى ICML عام 2015. وتشير كلمة «مُطبِّعة» إلى تحويل توزيع البيانات إلى توزيع طبيعي، أو غاوسي، ولا علاقة لها بـتطبيع الدُفعات.
صيغة تغيير المتغيرات#
إذا كانت دالة قابلة للعكس f تحوّل نقطة بيانات x إلى نقطة كامنة z = f(x)، فإن لوغاريتم الاحتمالية للبيانات هو log p(x) = log p_z(f(x)) + log |det J|، حيث J مصفوفة يعقوبي للدالة f، ويقيس محددها مقدار تمديد f للحجم حول x أو ضغطه. بالنسبة إلى دالة عامة ذات D متغيرات، يتطلب حساب ذلك المحدد عددًا من العمليات في حدود D³، وهو أبطأ بكثير من أن يناسب الصور ذات مئات الآلاف من الأبعاد. لذلك تُصمَّم طبقات التدفق بمصفوفات يعقوبي مثلثية، يكون محددها حاصل ضرب عناصر القطر فقط. يؤدي تكديس العديد من هذه الطبقات إلى تركيب تحويلاتها وجمع لوغاريتمات محدداتها، ويُدرَّب النموذج بتعظيم لوغاريتم احتمالية بيانات التدريب مباشرةً.
تُعد طبقة الاقتران الأفيني من RealNVP التصميم الكلاسيكي. يمر نصف المدخلات دون تغيير ويغذي شبكة عصبية صغيرة تضبط مقياس النصف الآخر وإزاحته، كما في طبقة PyTorch التالية:
import torch
from torch import nn
torch.manual_seed(0)
# Affine coupling layer (RealNVP): x1 passes through unchanged and sets the scale and shift for x2
net = nn.Sequential(nn.Linear(2, 32), nn.Tanh(), nn.Linear(32, 4))
def coupling(x):
"""Map data x to z and return log|det J|, which is just the sum of the log-scales."""
x1, x2 = x.chunk(2, dim=-1)
log_s, t = net(x1).chunk(2, dim=-1)
return torch.cat([x1, x2 * log_s.exp() + t], dim=-1), log_s.sum(dim=-1)
x = torch.randn(4)
z, log_det = coupling(x)
jacobian = torch.autograd.functional.jacobian(lambda v: coupling(v)[0], x)
print(f"log|det J|: {log_det:.4f} from the formula, {torch.logdet(jacobian):.4f} from the full 4x4 Jacobian")
# Inverse: z1 equals x1, so the same scale and shift can be recomputed and undone
z1, z2 = z.chunk(2)
log_s, t = net(z1).chunk(2)
x_rec = torch.cat([z1, (z2 - t) * (-log_s).exp()])
print(f"Largest reconstruction error: {(x_rec - x).abs().max():.1e}")تعطي الصيغة المبسطة ومصفوفة يعقوبي الكاملة كلتاهما لوغاريتم محدد مقداره 0.1489، ويستعيد المعكوس المدخلات بدقة تصل إلى 1.2e-07، أي ضمن هامش التقريب float32. ولا تحتاج الشبكة داخل الطبقة إلى العكس مطلقًا، لذا يمكن أن تكون معقدة بأي قدر.
بنى التدفق#
- تدفقات الاقتران: تتناوب NICE (2014) وRealNVP (2016) اللتان ابتكرهما لوران دان وزملاؤه في تحويل النصف الذي يجري تغييره، وأضافت Glow من OpenAI (2018) التفافات 1 x 1 قابلة للعكس ومتعلمة، وولّدت وجوهًا واقعية بدقة 256 x 256. كل من أخذ العينات وتقييم الكثافة سريع.
- التدفقات ذاتية الانحدار: تحوّل كل بُعد اعتمادًا على الأبعاد التي تسبقه. تحسب تدفقات الانحدار الذاتي المقنّعة الكثافات في تمريرة واحدة، لكنها تأخذ عينة بُعد واحد في كل مرة، بينما تعكس تدفقات الانحدار الذاتي العكسية هذا الترتيب. وتكدّس TarFlow من Apple (2024) كتل Transformer ذاتية الانحدار فوق رقع الصور، وكانت أول تدفق مستقل تضاهي عيناته نماذج الانتشار من حيث الجودة.
- التدفقات المستمرة: تعرّف التحويل بأنه حل لمعادلة تفاضلية عادية، ما يلغي القيود المفروضة على تصميم الطبقات؛ وتتتبّع FFJORD (2018) التغيّر في كثافة اللوغاريتم باستخدام مقدِّر أثر عشوائي.
التطبيقات#
- كشف الشذوذ: تلائم DifferNet وCFLOW-AD وFastFlow التدفقات مع ميزات شبكة عصبية التفافية مُدرّبة مسبقًا على صور منتجات خالية من العيوب، وتُصنّف الصور منخفضة الاحتمالية على أنها معيبة. وأبلغت FastFlow عن AUC بنسبة 99.4% لكشف الشذوذ في معيار الفحص الصناعي MVTec AD عام 2021.
- توليد الكلام: أنشأت WaveGlow من NVIDIA (2018) صوت الكلام من مخططات ميل الطيفية في تمريرة متوازية واحدة.
- أخذ العينات العلمية: أخذت مولدات بولتزمان التي طوّرها فرانك نوي وزملاؤه (2019) عينات من حالات الاتزان للجزيئات والبروتينات، واستخدمت الاحتمالية الدقيقة لإعادة ترجيح العينات بما يوافق التوزيع الفيزيائي الحقيقي.
تُنمذج هذه الكواشف الميزات بدلًا من البكسلات لسبب برهن عليه إريك ناليسنيك وزملاؤه عام 2019: إذ يُسنِد نموذج Glow المدرّب على صور CIFAR-10 احتمالية أعلى إلى صور أرقام المنازل في SVHN التي لم يسبق له رؤيتها، وهو إخفاق عُزي لاحقًا إلى أن التدفقات تنمذج ارتباطات البكسلات المحلية أكثر مما تنمذج محتوى الصورة. في كشف العيوب، يمكن أن تكون مدخلات التدفق تضمينات مستخرجة من أي شبكة أساسية مُدرّبة مسبقًا: إذ تُرجع طريقة embed في Ultralytics YOLO26 متجه ميزات واحدًا لكل صورة بعد تجميع متوسط، ويكون مصدره افتراضيًا الطبقة السابقة مباشرةً لرأس الكشف.
التدفقات المُطبِّعة والمصطلحات ذات الصلة#
- مطابقة التدفق والتدفق المُصحَّح: يُدرَّب تدفق مستمر عبر انحدار حقل سرعته، من دون حساب محدد المصفوفة أثناء التدريب، وهما اليوم أساس مولدات الصور الكبيرة.
- المشفّرات التلقائية التباينية ونماذج الانتشار: تُدرَّب على حد أدنى للاحتمالية.
- شبكات GAN: تتعلم خداع المُميِّز، ولا توفر أي احتمالية.
- شبكات التدفق التوليدي (GFlowNets): تشترك في كلمة «التدفق»، لكنها تبني كائنات متقطعة خطوةً بخطوة، باحتمالية تتناسب مع المكافأة.










