Neural Tangent Kernel (NTK)
تقيس نواة المماس العصبية (NTK) مدى استجابة تنبؤات الشبكة للتغيرات في المعلمات، رابطًا بين تدريب الشبكات العصبية وطرائق النواة.
نواة المماس العصبية (NTK) هي دالة تشابه تقيس مدى استجابة مخرجات الشبكة العصبية لمدخلين للتغيرات الطفيفة نفسها في معلمات النموذج. تكون تنبؤات المدخلات مترابطة بقوة عندما تتوازى تدرجاتها بالنسبة إلى المعلمات. يربط هذا تدريب الشبكات العصبية بطرائق النواة، التي تتعلم من خلال أوجه التشابه الزوجية بين الأمثلة.
أدخل آرثر جاكوت وفرانك غابرييل وكليمان هونغلر المصطلح عام 2018 في نواة المماس العصبية: التقارب والتعميم في الشبكات العصبية، وأرسوا إطارًا رياضيًا لتحليل كيفية تطور التنبؤات أثناء التدريب.
آلية عمل نواة المماس العصبية#
بالنسبة إلى شبكة عصبية ذات مخرج قياسي، احسب مشتقة المخرج بالنسبة إلى كل معلمة قابلة للتدريب. تشكّل هذه المشتقات متجه تدرج يصف حساسية التنبؤ تجاه أوزان النموذج. نواة المماس العصبية بين مدخلين هي الجداء النقطي لمتجهي التدرج الخاصين بهما.
على امتداد مجموعة بيانات، تشكّل هذه القيم الزوجية مصفوفة نواة، تُسمى أيضًا مصفوفة غرام. يقيس قطرها حساسية كل تنبؤ للتغيرات في المعلمات؛ أما العناصر خارج القطر فتصف الترابط بين الأمثلة المختلفة. في حالة المخرجات المتعددة، ينتج عن كل زوج من المدخلات كتلة تضم التفاعلات بين إحداثيات المخرجات، كما هو مستخدم في حساب نواة المماس العصبية التجريبية.
أثناء الانحدار المتدرج، تحدد النواة كيفية تأثير خفض خطأ تنبؤ أحد الأمثلة في تنبؤات الأمثلة الأخرى. التدرجات ذات الصلة هي مشتقات مخرجات الشبكة؛ وتوفر الانتشار العكسي آلية الاشتقاق. ثم تحدد دالة الخسارة اتجاه التحديثات المصححة للخطأ وقوتها.
العرض اللانهائي والتقارب والتعميم#
عرض الشبكة هو عدد الوحدات المخفية فيها، أو عدد القنوات في الطبقة الالتفافية. في ظل معلمات NTK وافتراضات مناسبة للتهيئة والتدريب، تؤدي زيادة عروض الطبقات المخفية نحو اللانهاية إلى نواة حدية حتمية تظل ثابتة أثناء التدريب. أما نواة المماس العصبية التجريبية لشبكة محدودة، فتُقيّم عند معلماتها الفعلية ويمكن أن تتغير مع تقدم التدريب.
في نظام النواة الثابتة، يتبع التدريب التقريب من الرتبة الأولى للشبكة حول التهيئة. وهذه شبكة خطية: تعتمد تنبؤاتها خطيًا على التغيرات في المعلمات، مع احتفاظها باعتماد غير خطي على المدخلات. ويصف المصطلح المرتبط التدريب الكسول نظامًا لا تتغير فيه ميزات المماس إلا قليلًا. أما تعلم الميزات فيتضمن تطور تلك الميزات بدرجة كبيرة أثناء التحسين.
في حالة خسارة مربع الخطأ وتدفق التدرج ذي النواة الثابتة—وهو الحد المستمر زمنيًا لخطوات التدرج الصغيرة—تتناقص الأخطاء بأسرع ما يكون على طول المتجهات الذاتية للنواة ذات القيم الذاتية الأكبر. تحدد المتجهات الذاتية الأنماط عبر الأمثلة، بينما تحدد القيم الذاتية سرعات تعلم تلك الأنماط. يفسر ذلك كيف يعمل الإيقاف المبكر بوصفه تنظيمًا: إذ يحد من ملاءمة المكونات بطيئة التعلم، بما فيها المكونات المرتبطة بالضوضاء وفرط التخصيص. وتعتمد التنبؤات للمدخلات غير المرئية على أوجه تشابهها وفق النواة مع بيانات التدريب.
التطبيقات والمفاهيم ذات الصلة#
تدعم طرائق NTK انحدار النواة وتحليل تصنيف الصور. وتعمم نواة المماس الالتفافية (CNTK) هذا البناء على الشبكات العصبية الالتفافية. استخدم سانجيف أرورا وزملاؤه حساب CNTK الدقيق للتصنيف على CIFAR-10، مقدمين نظيرًا قائمًا على النواة لتدريب الشبكات الالتفافية المحدودة.
تصف نواة العملية الغاوسية للشبكة العصبية (NNGP) التغاير بين مخرجات الشبكات المهيأة عشوائيًا في حد العرض اللانهائي. أما NTK فتصف ديناميكيات التدريب المدفوعة بالتدرجات. وبالمثل، يدرّب الاستقصاء الخطي مصنفًا خطيًا على تمثيلات مجمدة؛ وتستخدم خطية NTK المشتقات بالنسبة إلى المعلمات المحددة القابلة للتدريب ميزاتٍ لها.
لذلك، يؤدي اختيار المعلمات إلى تغيير نواة المماس التي تحكم التدريب. في الضبط الدقيق لنموذج Ultralytics YOLO26، يثبت الوسيط freeze طبقات محددة، ولذلك لا تسهم معلمات تلك الطبقات في اتجاهات التحديث ضمن نواة التدريب الفعلية.
حساب نواة المماس العصبية التجريبية#
يحسب مثال PyTorch هذا النواة لصورتين لرقمين مكتوبين بخط اليد من مجموعة بيانات الأرقام المضمّنة في scikit-learn. ثبّت التبعيات باستخدام pip install torch scikit-learn.
import torch
from sklearn.datasets import load_digits
from torch import nn
torch.manual_seed(0)
digits = load_digits()
inputs = torch.tensor(digits.data[:2], dtype=torch.float32) / 16
model = nn.Sequential(nn.Linear(64, 8), nn.Tanh(), nn.Linear(8, 1))
parameters = tuple(model.parameters())
outputs = model(inputs)
# يحتوي كل صف في مصفوفة يعقوبي على مشتقات المعلمات لمخرج واحد.
rows = []
for output in outputs[:, 0]:
gradients = torch.autograd.grad(output, parameters, retain_graph=True)
rows.append(torch.cat([gradient.flatten() for gradient in gradients]))
jacobian = torch.stack(rows)
kernel = jacobian @ jacobian.T
print(kernel)تحتوي المصفوفة المطبوعة ذات الأبعاد 2 x 2 على حساسيتَي الذات لكل من المثالين، وعلى الترابط المتبادل بينهما. ويجعل بناؤها بوصفها jacobian @ jacobian.T نواة المماس العصبية التجريبية ذات المخرج القياسي متناظرة وموجبة شبه محددة، مع رتبة لا تتجاوز عدد الأمثلة ولا عدد المعلمات القابلة للتدريب.










