كفاءة النماذج وتوسيعها1989متوسط11 دقيقة قراءة

الضرر الدماغي الأمثل

Optimal Brain Damage

LeCun, Y. · Denker, J. S. · Solla, S. A. — NeurIPS

المشكلة

في أواخر الثمانينيات كانت الشبكات العصبية تتضخم باستمرار، وكل معامل إضافي كان يزيد خطر حفظ بيانات على حساب الأداء على بيانات جديدة، ويُبطئ عملية التصنيف. الحل البديهي — حذف الأوزان الأصغر قيمةً — كان يُزيل أحياناً معاملات صغيرة لكنها جوهرية لعمل الشبكة. لم تكن هناك طريقة منهجية تستند إلى أسس رياضية لتحديد أيّ الأوزان يمكن الاستغناء عنها دون الدخول في دورات مكلفة من التجربة والخطأ وإعادة التدريب.

الإسهام

بدلاً من أن نسأل «ما حجم هذا الوزن؟»، يطرح OBD سؤالاً أدق: «كم سترتفع الخسارة لو حذفنا هذا الوزن؟» للإجابة، يستعين بالمشتقات الثانية لدالة الخسارة — أي قُطر مصفوفة هسيان — ليبني مقياس أهمية (بروز) لكل وزن. الصيغة s_k = h_kk · w_k² / 2 تدمج معلومتين: انحناء سطح الخسارة عند ذلك الوزن (h_kk) وقيمة الوزن نفسه (w_k). الأوزان ذات المنخفض تُحذف، ثم تُعاد تدريب الشبكة، وتتكرر الدورة. في تجربة على شبكة لتمييز الأرقام المكتوبة يدوياً، نجح OBD في إزالة أكثر من 50% من المعاملات دون أي تراجع في الدقة — بل تحسّن أداء في بعض الحالات.

الأثر

يُعدّ OBD أول أسلوب تقليم يستند إلى أسس رياضية صلبة، وهو الجدّ الفكري لكل تقنيات ضغط الشبكات العصبية التي جاءت بعده. فكرته المحورية — قياس أهمية كل معامل عبر انحناء سطح الخسارة — ألهمت مباشرةً «الجرّاح الدماغي الأمثل»، وتتردد أصداؤها بوضوح في الضغط العميق وفرضية تذكرة اليانصيب وGPTQ وSparseGPT. اليوم، مع نماذج تضمّ تريليونات المعاملات، أصبح التقليم أكثر إلحاحاً من أي وقت مضى — وكل أسلوب حديث في هذا المجال يحمل بصمة هذه الورقة من عام 1989.

تخيّل أنك صنعت لوحة دارات معقّدة فيها آلاف الأسلاك. بعض هذه الأسلاك يحمل إشارات حيوية، وبعضها لا يكاد ينقل شيئاً يُذكر. هدفك تبسيط اللوحة: أسلاك أقل تعني تكلفة أقل وحرارة أقل واحتمالات أقل لتداخل .

الطريقة الساذجة: اقطع الأسلاك الأرفع — أي احذف الأصغر حجماً. لكن سلكاً رفيعاً يحمل إشارة توقيت حرجة أهمّ بكثير من سلك سميك يحمل مساراً أرضياً مُكرَّراً لا فائدة منه.

المنهج الذي تقترحه هذه الورقة مختلف: قبل أن تقطع أي سلك، قِس مقدار التدهور الذي سيصيب مخرجات الدارة لو أزلته. هذا القياس يعتمد على انحناء سطح الخطأ — أي: ما مدى حساسية المخرجات للتغيّرات في كل سلك؟ الأسلاك التي لا يتأثر المخرج بإزالتها تُقطع أولاً.

المعضلة: شبكة كبيرة تحفظ، وشبكة صغيرة تعجز

بحلول أواخر الثمانينيات كانت تحقق نتائج قوية في مهام واقعية مثل تمييز الأرقام المكتوبة يدوياً. لكن الباحثين وجدوا أنفسهم أمام معضلة حقيقية: شبكة فيها كثيرة تحفظ بيانات التدريب عن ظهر قلب وتفشل أمام بيانات جديدة — وهذا ما نسميه . وبالمقابل، شبكة بمعاملات قليلة لا تملك القدرة على التقاط الأنماط الحقيقية في البيانات — وهذا هو .

الحل المثالي هو إيجاد شبكة بالحجم المناسب تماماً — تحوي ما يكفي من المعاملات لنمذجة البيانات ولا شيء أكثر. لكن كيف نجد هذا الحجم؟ تدريب عشرات الشبكات بأحجام مختلفة ومقارنتها أمر مكلف جداً. الفكرة التي اقترحها لوكان ودنكر وسولّا أبسط وأذكى: ابدأ بشبكة أكبر مما تحتاج، ثم أزل جراحياً المعاملات التي لا تُسهم إسهاماً يُذكر.

افتح في المختبر
حرّك المؤشر لترى المفاضلة: معاملات كثيرة جداً تُسبب إفراطاً في التخصيص، وقليلة جداً تُسبب قصوراً فيه. OBD يبحث عن النقطة المثلى بتقليم المعاملات الزائدة.
تستيقظ التجربة عند وصولك…

لماذا «وزن صغير» لا تعني «وزن غير مهم»

أبسط إستراتيجية لـ هي ترتيب جميع حسب قيمها المطلقة ثم حذف الأصغر. المنطق يبدو واضحاً: وزن قريب من الصفر لا يكاد يؤثر في المخرجات، فلماذا نُبقي عليه؟

المشكلة أن هذا المنطق ناقص وخطير. تخيّل وزناً صغير القيمة لكنه يقع على منحدر حاد من سطح : حذفه يُسبب قفزة كبيرة في الخسارة — تماماً كبرغي صغير لو نزعته من جسر قد ينهار الجسر كله. وبالمقابل، وزن كبير القيمة لكنه يقع في منطقة مسطحة من سطح الخسارة يمكنك إزالته دون أن يتأثر شيء — كدعامة ثقيلة لكنها زائدة عن الحاجة.

هنا تكمن البصيرة الجوهرية في OBD: المهم ليس حجم الوزن، بل مدى حساسية الخسارة لحذفه. وهذه الحساسية يكشفها الثاني — أي انحناء سطح الخسارة عند ذلك الوزن.

افتح في المختبر
قارن بين التقليم بالقيمة المطلقة (يساراً) والتقليم بالبروز (يميناً). وزن صغير على انحناء حاد أهمّ من وزن كبير على سطح مسطح.
تستيقظ التجربة عند وصولك…

البروز: قياس الأهمية الحقيقية للمعامل

الفكرة بسيطة: بروز أي معامل هو مقدار الزيادة المتوقعة في دالة الخسارة لو ضبطنا ذلك المعامل على صفر. لكن لا نريد فعلاً حذف كل وزن ثم إعادة التدريب لنرى ماذا يحدث — ذلك مستحيل عملياً. بدلاً من ذلك، يستخدم OBD تقريب تايلور من الرتبة الثانية لـدالة الخسارة حول الأوزان المُدرَّبة ليُقدِّر هذا الأثر رياضياً.

تقريب تايلور للتغيّر في الخسارة δE\delta E عند إزاحة متّجه المعاملات بمقدار δu\delta u يأخذ الشكل:

δE=igiδui+12ihiiδui2+12ijhijδuiδuj+O(δu3)\delta E = \sum_i g_i \delta u_i + \frac{1}{2}\sum_i h_{ii} \delta u_i^2 + \frac{1}{2}\sum_{i \neq j} h_{ij} \delta u_i \delta u_j + O(\|\delta u\|^3)

حيث gi=Euig_i = \frac{\partial E}{\partial u_i} هو وhij=2Euiujh_{ij} = \frac{\partial^2 E}{\partial u_i \partial u_j} هي عناصر .

sk=12hkkuk2s_k = \frac{1}{2} h_{kk} \, u_k^2
معادلة البروز في OBD — جوهر الأسلوبيقيس البروز مقدار الضرر المتوقع إذا أُزيل وزن معيّن من الشبكة. فالوزن يُعدّ مهماً عندما يؤدي حذفه أو تغييره إلى زيادة ملحوظة في الخسارة، ويُعدّ غير مهم عندما لا يتأثر أداء النموذج إلا بشكل طفيف. ويستخدم OBD هذا التقدير لترتيب الأوزان بحسب أهميتها ثم حذف الأقل أهمية أولاً، مما يقلّص حجم النموذج مع الحفاظ على دقته قدر الإمكان.

فكّر في كل وزن ككرة موضوعة على سطح منحنٍ. معادلة البروز تسأل سؤالين: كم تبعد الكرة عن قاع الوادي؟ — وهذا يعكس قيمة الوزن uku_k. وما مدى حدّة جدران الوادي؟ — وهذا يعكس الانحناء hkkh_{kk}. كرة بعيدة عن القاع في وادٍ شديد الانحدار ستُحدث هبوطاً كبيراً لو أزلتها — بروز عالٍ، لا تمسّها. أما كرة بالكاد فوق القاع، أو موضوعة على سهل مسطّح، فلا يكاد يتغيّر شيء لو اختفت — بروز منخفض، يمكنك حذفها بأمان.

افتح في المختبر
حرّك مؤشرَيّ قيمة الوزن والانحناء وراقب كيف يتغيّر البروز. المنطقة الحمراء تمثّل الزيادة المتوقعة في الخسارة لو حُذف هذا الوزن.
تستيقظ التجربة عند وصولك…

حساب المشتقات الثانية بكفاءة

مصفوفة هسيان لشبكة بها NN معامل تحتوي N2N^2 عنصراً — في شبكة بها 2600 معامل مثلاً يعني ذلك أكثر من 6.5 مليون رقم. حساب المصفوفة كاملةً غير عملي. لكن OBD لا يحتاج إلا إلى العناصر القُطرية hkkh_{kk} فقط، وهذه يمكن حسابها بإجراء يشبه المعتاد إلى حدٍّ كبير.

الملاحظة المفتاحية هنا أن المشتقات الثانية تنتشر عكسياً عبر الشبكة بالآلية ذاتها التي تنتشر بها المشتقات الأولى. نبدأ من — حيث لـدالة الخسارة بالنسبة لمدخل التنشيط معروف — ثم نحسب المشتق الثاني في كل تراجعياً بقاعدة السلسلة نفسها المُستخدمة في حساب المُتَّجه المَيلي، لكن مُطبَّقة بمستوى إضافي واحد من الاشتقاق.

التكلفة الحسابية لقُطر هسيان تقارب تكلفة حساب المُتَّجه المَيلي — تمريرة عكسية إضافية واحدة فقط. هذا ما جعل OBD قابلاً للتطبيق حتى على العتاد المتاح في عام 1989.

2Ewij2=zj22Eai2\frac{\partial^2 E}{\partial w_{ij}^2} = z_j^2 \cdot \frac{\partial^2 E}{\partial a_i^2}
هسيان القُطرية لوصلة واحدةتوفّر هذه المعادلة طريقة لتقدير مدى حساسية دالة الخسارة تجاه وصلة معينة في الشبكة. فالوصلات التي يؤدي تغييرها إلى تأثير كبير في الخسارة تُعدّ أكثر أهمية، بينما يمكن غالباً إزالة الوصلات ذات التأثير المحدود دون تدهور ملحوظ في الأداء. ويعتمد OBD على هذه التقديرات لتحديد المعلمات الزائدة وحذفها بكفاءة مع الحفاظ على جودة النموذج.
2Eai2=f(ai)2kwki22Eak2+f(ai)kwkiEak\frac{\partial^2 E}{\partial a_i^2} = f'(a_i)^2 \sum_k w_{ki}^2 \frac{\partial^2 E}{\partial a_k^2} + f''(a_i) \sum_k w_{ki} \frac{\partial E}{\partial a_k}
التكرار العكسي للمشتق الثانيالمشتق الثاني عند وحدة مخفية يتكوّن من جزأين: الأول هو مربع مشتق دالة التنشيط مضروباً في المشتقات الثانية القادمة من الطبقة التالية، والثاني حدّ تصحيحي يتضمن المشتق الثاني لدالة التنشيط ذاتها. في تقريب ليفنبرغ-ماركواردت يُسقَط الحد الثاني، وهذا يضمن أن تبقى تقديرات الانحناء موجبة دائماً.

وصفة OBD: درِّب، قِس، قلِّم، كرِّر

افتح في المختبر
انقر على كل خطوة لترى ماذا يحدث خلال دورة تقليم OBD.
تستيقظ التجربة عند وصولك…

يعمل OBD بدورة تتناوب بين التدريب والتقليم:

الخطوة 1 — درِّب الشبكة حتى التقارب باستخدام الانتشار العكسي المعتاد.

الخطوة 2 — احسب المشتقات الثانية القُطرية hkkh_{kk} لكل معامل عبر التمريرة العكسية.

الخطوة 3 — احسب بروز كل معامل: sk=hkkuk2/2s_k = h_{kk} u_k^2 / 2.

الخطوة 4 — رتّب المعاملات حسب بروزها واحذف الأقل بروزاً — أي اضبطها على صفر وجمِّدها نهائياً.

الخطوة 5 — أعِد تدريب الشبكة المُقلَّمة ثم عُد إلى الخطوة 2.

حين نقول «حذف» معامل فالمقصود ضبط قيمته على صفر وتجميده بحيث لا يعود أبداً. كل دورة تُزيل دفعة من المعاملات منخفضة البروز، وتستمر العملية حتى يبدأ التقليم في إلحاق ضرر ملموس بالأداء.

التجارب: تقليم شبكة حقيقية لتمييز الأرقام

اختبر لوكان وزملاؤه OBD على شبكة لتمييز الأرقام المكتوبة يدوياً — بنية مقيَّدة ذات اتصالات متفرقة تحوي نحو 105,000 وصلة يتحكم فيها 2,578 معاملاً حراً، مُدرَّبة على قرابة 9,300 مثال من أرقام الرموز البريدية.

النتائج كانت لافتة. نجح OBD في إزالة أكثر من 60% من المعاملات (من 2,578 إلى نحو 1,000) دون تدهور يُذكر في دقة الاختبار — بل في بعض الحالات كانت الشبكة المُقلَّمة تُعمّم أفضل من الأصلية، لأن حذف المعاملات الزائدة يعمل كنوع من . وحين استُخدم OBD كأداة تحليل تفاعلية، كشف أن طبقة كاملة من الشبكة كانت شبه زائدة، فأعاد المؤلفون تصميم البنية وقلّصوا عدد المعاملات إلى النصف.

النقطة الأهم: عند نسبة الضغط نفسها، سبّب التقليم بالقيمة المطلقة زيادات أكبر بكثير في . أما الحذف العشوائي فكان كارثياً لدرجة أن نتائجه لم يمكن رسمها على المقياس نفسه.

افتح في المختبر
قارن بين OBD والتقليم بالقيمة المطلقة مع إزالة المعاملات. يحافظ OBD على خطأ أقل عند كل مستوى ضغط.
تستيقظ التجربة عند وصولك…

الافتراضات والقيود

قوة OBD تأتي من تبسيطاته الثلاثة، لكن كل تبسيط يحمل ثمناً:

الافتراض القُطري يتجاهل التفاعلات بين الأوزان. في الواقع، حين تحذف وزناً واحداً تتغيّر القيم المثلى لبقية الأوزان. هذا بالضبط ما عالجته ورقة الجرّاح الدماغي الأمثل (هاسيبي وستورك، 1992) باستخدام معكوس مصفوفة هسيان الكاملة، بحيث تُعدَّل الأوزان المتبقية لتعويض أثر الوزن المحذوف.

افتراض التقارب يفترض أن التدريب وصل فعلاً إلى نقطة استقرار. عملياً، قد لا يكون المُتَّجه المَيلي صفراً تماماً، خصوصاً مع أو البيانات المُشوَّشة.

الافتراض التربيعي ينهار حين تُحذف أوزان كبيرة القيمة — سطح الخسارة ليس قطعاً مكافئاً بعيداً عن النهاية الصغرى. تجارب الورقة نفسها أظهرت أن التنبؤ ينحرف عن الواقع بعد إزالة نحو 30% من المعاملات في تمريرة واحدة.

ومع ذلك، أثبت OBD نقطة جوهرية: حتى أسلوب تقريبي يستخدم معلومات الرتبة الثانية يتفوّق بفارق كبير على حدسيات القيمة المطلقة.

افتح في المختبر
لاحظ كيف ينحرف التنبؤ التربيعي (المتقطع) عن الخسارة الفعلية (المتصل) كلما حُذفت معاملات أكثر في تمريرة واحدة.
تستيقظ التجربة عند وصولك…

الإرث: من 2,600 معامل إلى تريليونات

السؤال الذي طرحه OBD — أيّ المعاملات يمكن حذفها بأمان؟ — أصبح اليوم أكثر إلحاحاً مما كان عليه في 1989. الحديثة تضمّ مليارات أو تريليونات المعاملات، والقدرة على ضغطها ضرورة عملية لنشرها على الأجهزة الطرفية وتقليل تكاليف وخفض استهلاك الطاقة.

الخط الفكري من OBD إلى الأساليب الحديثة واضح ومباشر. الضغط العميق (هان وآخرون، 2015) دمج التقليم مع وترميز هوفمان فضغط الشبكات بنسبة 35 إلى 49 ضعفاً. فرضية تذكرة اليانصيب (فرانكل وكارلين، 2019) كشفت أن الشبكات الكثيفة تحوي بداخلها شبكات فرعية متفرقة قادرة على مجاراة دقة الشبكة الكاملة حين تُدرَّب بمعزل — وهذا صدى مباشر لاكتشاف OBD بأن معظم المعاملات زائدة عن الحاجة. GPTQ (فرانتار وآخرون، 2022) استخدم معلومات الرتبة الثانية — بالروح ذاتها التي اقترحها OBD — لتكميم النماذج اللغوية الكبيرة بأدنى خسارة في الجودة. وSparseGPT وسّع الفكرة لتقليم هذه النماذج إلى بنسبة 50–60% في تمريرة واحدة دون إعادة تدريب.

  1. 1989

    الضرر الدماغي الأمثل (هذه الورقة)

    قدّم لوكان ودنكر وسولّا التقليم القائم على البروز مستخدمين المعلومات القُطرية من مصفوفة هسيان. أول أسلوب تقليم منهجي مبنيّ على أسس نظرية.

  2. 1992

    الجرّاح الدماغي الأمثل

    أزال هاسيبي وستورك افتراض القُطرية واستخدما معكوس هسيان الكاملة. الأوزان المتبقية تُحدَّث لتعويض المحذوفة، فلا حاجة لإعادة التدريب التكرارية.

  3. 2015

    الضغط العميق (هان وآخرون)

    جمع بين التقليم والتكميم وترميز هوفمان. ضغط AlexNet بنسبة 35 ضعفاً وVGG-16 بنسبة 49 ضعفاً دون خسارة في الدقة. جعل نشر الشبكات العصبية على الأجهزة المحمولة ممكناً.

  4. 2019

    فرضية تذكرة اليانصيب

    أظهر فرانكل وكارلين أن الشبكات الكثيفة تحتوي شبكات فرعية متفرقة (التذاكر الرابحة) تُضاهي الدقة الكاملة حين تُدرَّب من أوزانها الابتدائية. صدى لاكتشاف OBD الجوهري بأن معظم المعاملات مكررة.

  5. 2022

    GPTQ

    طبّق معلومات الرتبة الثانية (بأسلوب الجرّاح الدماغي الأمثل) لتكميم النماذج اللغوية الكبيرة كـ GPT-175B إلى 3–4 بتات لكل وزن مع أدنى خسارة في الجودة.

  6. 2023

    SparseGPT

    وسّع التقليم من الرتبة الثانية ليشمل النماذج اللغوية الكبيرة، محققاً تفرّقاً بنسبة 50–60% في تمريرة واحدة دون إعادة تدريب — توسيع رؤية OBD لنماذج بمليارات المعاملات.

المبدأ الذي أرساه OBD — قِس أهمية المعامل بانحناء سطح الخسارة، لا بقيمته المطلقة — لا يزال الأساس الفكري لكل أساليب الحديثة. في كل مرة يُكمَّم نموذج لغوي كبير أو يُقلَّم للنشر، فإنه يحمل بصمة هذه الورقة التي كُتبت عام 1989.

شبه-كود: حساب البروز والتقليمpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import torch

def compute_saliency(model, loss_fn, data_loader):
    """حساب بروز OBD لكل معامل."""
    # الخطوة 1: تجميع هسيان القُطرية على مجموعة البيانات
    diag_hessian = {n: torch.zeros_like(p) for n, p in model.named_parameters()}

    for x, y in data_loader:
        loss = loss_fn(model(x), y)
        grads = torch.autograd.grad(loss, model.parameters(), create_graph=True)
        for (name, param), g in zip(model.named_parameters(), grads):
            # تقريب هسيان القُطرية عبر مربع المتجه الميلي
            diag_hessian[name] += g.detach() ** 2

    # الخطوة 2: البروز = 0.5 * h_kk * w_k^2
    saliency = {}
    for name, param in model.named_parameters():
        h_kk = diag_hessian[name] / len(data_loader)
        saliency[name] = 0.5 * h_kk * param.data ** 2

    return saliency


def prune_by_saliency(model, saliency, fraction=0.5):
    """حذف الأوزان الأقل بروزاً بضبطها على صفر."""
    all_scores = torch.cat([s.flatten() for s in saliency.values()])
    threshold = torch.quantile(all_scores, fraction)

    with torch.no_grad():
        for name, param in model.named_parameters():
            mask = saliency[name] >= threshold
            param.data *= mask.float()  # حذف الأوزان منخفضة البروز

المرجعLeCun, Y., Denker, J. S., & Solla, S. A.. Optimal Brain Damage. NeurIPS, 1989.

مصطلحات هذه الورقة