Split Learning
يقسّم التعلّم المجزّأ شبكةً عصبية عند طبقة فاصلة، بحيث يحتفظ العملاء بالبيانات الخام والطبقات الأولى، بينما يدرّب الخادم بقية الشبكة اعتمادًا على تنشيطاتهم.
التعلّم المُجزّأ أسلوب من التدريب الموزّع التعاوني يقسّم شبكة عصبية عند طبقة فصل مختارة بين مالك البيانات، أي العميل، والخادم. يشغّل العميل الطبقات السابقة لطبقة الفصل على بياناته الخاصة، ولا يرسل سوى التنشيطات الناتجة، التي تُسمى أحيانًا البيانات المجزّأة؛ ويشغّل الخادم الطبقات المتبقية، ويحسب الخسارة، ثم يرسل التدرج عند طبقة الفصل ليتمكن العميل من تحديث طبقاته. لا تغادر بيانات التدريب الخام العميل، ولا يمتلك أي من الطرفين النموذج كاملًا. قدّمه أوتكريست غوبتا وراميش راسكار من MIT Media Lab في أكتوبر 2018 في ورقة التعلّم الموزّع للشبكات العصبية العميقة عبر وكلاء متعددين، واقترح بحث الفريق اللاحق الصادر في ديسمبر 2018، «التعلّم المُجزّأ من أجل الصحة»، إعدادات تتيح للمستشفيات التي تمتلك أنواعًا مختلفة من بيانات المرضى، مثل صور تحليل الصور الطبية، تدريب النماذج معًا من دون مشاركة السجلات الخام.
آلية عمل التعلم المُجزّأ#
تعبر كل خطوة تدريبية حدّ الفصل مرتين: تنتقل التنشيطات من العميل إلى الخادم في التمريرة الأمامية، ويعود تدرج الخسارة بالنسبة إلى هذه التنشيطات أثناء الانتشار العكسي. ولأن قاعدة السلسلة لا تحتاج إلا إلى هذا التدرج الواحد لمواصلة الحساب، تكون تحديثات العميل مطابقةً لتحديثات تدريب النموذج غير المجزّأ. يوضح المثال التالي عملية التبادل بمحاكاة في عملية واحدة باستخدام PyTorch:
import torch
from torch import nn
torch.manual_seed(0)
client = nn.Sequential(nn.Linear(784, 256), nn.ReLU()) # الطبقات السابقة لطبقة الفصل، بجانب البيانات الخاصة
server = nn.Sequential(nn.Linear(256, 10)) # الطبقات اللاحقة لطبقة الفصل
images, labels = torch.randn(32, 784), torch.randint(0, 10, (32,))
# العميل: تمريرة أمامية حتى طبقة الفصل، ثم إرسال التنشيطات فقط
activations = client(images)
received = activations.detach().requires_grad_()
# الخادم: إكمال التمريرة الأمامية والانتشار العكسي حتى طبقة الفصل، ثم إعادة ذلك التدرج
nn.functional.cross_entropy(server(received), labels).backward()
# العميل: مواصلة الانتشار العكسي انطلاقًا من التدرج المُعاد
activations.backward(received.grad)
split_grad = client[0].weight.grad.clone()
# تعطي الخطوة نفسها في النموذج غير المجزّأ العميل تدرجات مطابقة
client.zero_grad()
nn.functional.cross_entropy(server(client(images)), labels).backward()
print("Same client gradients as unsplit training:", torch.equal(split_grad, client[0].weight.grad))يطبع البرنامج Same client gradients as unsplit training: True. بعد ذلك، يحدّث كل طرف المُحسِّن الخاص به. ومع تعدد العملاء، يدرّب البروتوكول الأصلي العملاء بالتناوب، بحيث يستخدم كل منهم أحدث أوزان جانب العميل التي تركها العميل السابق.
يتغير هذا الترتيب بحسب ما يجب أن يظل خاصًا. يرسل الإعداد الأساسي أعلاه التسميات إلى الخادم، بينما يُبقي إعداد U الطبقات الأخيرة والتسميات لدى العميل أيضًا، ويخدم الإعداد الرأسي المؤسسات التي تمتلك سمات مختلفة للسجلات نفسها:
التعلّم المُجزّأ مقابل التعلّم الاتحادي#
يحافظ التعلّم الاتحادي أيضًا على البيانات في أجهزة مالكيها، لكن كل عميل يدرّب نسخة كاملة من النموذج ويرسل تحديثات الأوزان لمتوسطها. أما التعلّم المُجزّأ فيرسل التنشيطات والتدرجات بدلًا من ذلك، لذا يحتاج العملاء إلى قدرة حوسبة أقل بكثير ولا يمتلكون النموذج كاملًا أبدًا، بينما يزداد حجم الاتصالات مع كمية البيانات لا مع حجم النموذج، ويتدرب العملاء واحدًا تلو الآخر بدلًا من العمل بالتوازي. يجمع تعلّم SplitFed، الذي اقترحه تشاندرا ثابا وزملاؤه عام 2020، بين الأسلوبين عبر تشغيل طبقات جانب العميل بالتوازي ومتوسطها بالطريقة الاتحادية.
يُستخدم التعلّم المُجزّأ الرأسي أيضًا في التمويل، حيث يدرّب بنك وشريك يمتلكان سمات مختلفة عن العملاء أنفسهم نموذجًا واحدًا، كما في البرنامج التعليمي للتسويق المصرفي من SecretFlow، من دون تبادل البيانات الخاصة. ويقسّم التوازي عبر خطوط المعالجة الشبكة بحسب العمق بالطريقة نفسها، لكن بين وحدات GPU في عنقود واحد موثوق لملاءمة نموذج كبير في الذاكرة.
مخاطر الخصوصية#
لا تزال التنشيطات والتدرجات تحمل معلومات عن البيانات. ويمكن عكس تنشيطات الطبقات المبكرة لإعادة بناء صور يمكن التعرّف عليها، وعندما يحتفظ الخادم بالتسميات، قد تكشف التدرجات التي يعيدها للعميل تلك التسميات. وأظهر داريو باسكويني وجوزيبي أتينيسي وماسيمو برناشي في مؤتمر ACM CCS عام 2021 أن خادمًا خبيثًا يستطيع اختطاف التدريب عبر التدرجات التي يعيدها، وتوجيه طبقات العميل إلى صيغة تتيح للخادم إعادة بناء المدخلات الخاصة. تضيف وسائل الدفاع ضوضاء باستخدام الخصوصية التفاضلية، أو تعاقب مقدار ما تكشفه التنشيطات عن المدخلات، أو ترصد التدرجات غير المعتادة؛ ولكل منها تكلفة على الدقة. وتقرن عمليات النشر التعلّم المُجزّأ بضوابط أمن البيانات، مثل المصادقة والنقل المشفّر، لأن البروتوكول نفسه لا ينظم إلا ما يعبر حدّ الفصل.
اختيار طبقة الفصل#
تحدد طبقة الفصل التوازن بين حوسبة العميل وحركة البيانات والتعرّض: تتطلب طبقة فصل مبكرة أقل قدر من حوسبة العميل، لكنها ترسل تنشيطات كبيرة لا تزال تشبه المدخلات، بينما ترسل طبقة فصل متأخرة خرائط سمات أكثر تجريدًا، لكنها تتطلب أجهزة أقوى لدى العميل، وهو أمر مهم لأجهزة الذكاء الاصطناعي الطرفي. وتُعقّد الوصلات المتخطية الاختيار، لأن كل موتر يعبر حدّ الفصل يجب إرساله. يعني تقسيم Ultralytics YOLO26 بعد العمود الفقري إرسال ثلاث خرائط سمات، لأن تهيئة النموذج تمرر مخرجات الطبقات 4 و6 و10 إلى العنق: ففي YOLO26n عند imgsz=640 تحتوي هذه الخرائط على 1,126,400 قيمة، أي ما يقارب عدد القيم البالغ 1,228,800 في صورة الإدخال.










