أساسيات تعلم الآلة1990متوسط11 دقيقة قراءة
قوّة التعلّم الضعيف
The Strength of Weak Learnability
Schapire, R. E. — Machine Learning
المشكلة
في نظرية PAC، المتعلم القوي يستطيع تقليص خطئه إلى أي مستوى تريده على أي توزيع للبيانات. في المقابل، المتعلم الضعيف لا يُطلب منه سوى شيء بسيط: أن يكون أفضل من التخمين العشوائي ولو بهامش ضئيل. السؤال الذي ظل مفتوحاً حتى عام 1990: هل كل متعلم ضعيف يمكن تحويله إلى متعلم قوي؟ كيرنز أوضح أن الحل الساذج — أن تُشغّل المتعلم الضعيف عدة مرات وتأخذ رأي الأغلبية — لا يعمل. لو لم يكن هناك طريقة لتحويل الضعيف إلى قوي، لكان علينا في كل مرة أن نبتكر قوية من الصفر دون أي اختصار.
الإسهام
أثبت شابير أن التعلّم الضعيف والقوي وجهان لعملة واحدة: أي خوارزمية تتفوق على التخمين العشوائي يمكن «تعزيزها» حتى تصل إلى أي دقة نريدها. الآلية تعتمد على المتعلم الضعيف ثلاث مرات على ثلاثة توزيعات مُختارة بعناية — التوزيع الأصلي، ثم توزيع يُلغي ما تعلّمته الأولى فيُجبر المتعلم على اكتشاف أنماط جديدة، ثم توزيع يُركّز على النقاط التي اختلفت فيها الفرضيتان الأوليان. تصويت الأغلبية بين الفرضيات الثلاث يُقلّص الخطأ من α إلى 3α²−2α³ على الأكثر، وهو انخفاض كبير. تكرار هذا البناء تعاودياً يدفع الخطأ نحو الصفر.
الأثر
هذه الورقة أسّست حقل التعزيز بالكامل. ألهمت مباشرةً خوارزمية فرويند للتعزيز بالأغلبية عام 1995، ثم خوارزمية AdaBoost عام 1997 التي صارت من أنجح الأساليب في التعلّم الآلي لعقدين كاملين. الفكرة الجوهرية — أن متعلمين ضعفاء يمكن تجميعهم ليكوّنوا متعلماً قوياً — هي الأساس الذي بُنيت عليه أساليب التعزيز التدريجي وXGBoost وأساليب التجميع الحديثة التي لا تزال تتصدّر في مسائل البيانات الجدولية. إضافةً إلى ذلك، أنتجت الورقة نتائج نظرية مهمة حول حجم الفرضيات وضغط البيانات والتعلّم الفوري، أعادت تشكيل نظرية التعلّم الحوسبي.
تخيّل أنك طبّاخ متواضع: كل طبق تصنعه «بالكاد» يُؤكل — ربما 51 شخصاً من كل 100 يقولون إنه مقبول. ومهما حاولتَ، مستواك لا يتحسّن.
يظهر شيف محترف ويقول لك: «لا تحاول أن تتحسّن. اطبخ ثلاثة أطباق بدل واحد، وأنا سأختار لكل طبق مكوناته.» الطبق الأول يأخذ المكونات العادية. الطبق الثاني لا يحصل إلا على المكونات التي فشل فيها طبقك الأول. أما الطبق الثالث فيحصل على المكونات التي اختلف عليها الطبقان السابقان.
عند التقديم، يأخذ الشيف رأي أي طبقين اتفقا. والنتيجة؟ وجبة ممتازة فعلاً. هذا هو : أنت لم تُصبح طبّاخاً أفضل، لكن استراتيجية الشيف في توجيه المكونات حوّلت مهارتك المتواضعة إلى نتيجة يُعتمد عليها.
السؤال: هل يكفي أن تكون متوسط الأداء؟
عام 1984 قدّم ليزلي فاليانت إطار التعلّم PAC — وهو اختصار لـ Probably Approximately Correct. الفكرة بسيطة: فئة من المفاهيم تكون قابلة للتعلّم القوي إذا وُجدت خوارزمية تستطيع، بثقة عالية، إيجاد فرضية خطؤها صغير بالقدر الذي تريده. وتكون قابلة للتعلّم الضعيف إذا كان المطلوب أهون من ذلك بكثير: يكفي أن تتغلّب على التخمين العشوائي بهامش ضئيل — أي أن يكون خطؤها أقل من لقيمة صغيرة جداً.
في عام 1988 طرح مايكل كيرنز سؤالاً محورياً عُرف بـمسألة تعزيز الفرضيات: هل نستطيع دائماً أن نحوّل إلى متعلّم قوي؟ أثبت كيرنز أن الحل البديهي — تشغيل المتعلّم الضعيف مرات كثيرة ثم أخذ رأي الأغلبية — لا يصلح، والسبب أن كل تشغيلة ترى نفسه، فتقع الفرضيات في الأخطاء ذاتها وتتكرر النتائج بدل أن تتكامل.
الاختراق الذي حققه شابير كان إثبات أن الإجابة نعم، بشرط واحد: أن تُغيّر التوزيع بين كل تشغيلة وأخرى — أي أن تُرشِّح الأمثلة بحيث تُجبر المتعلّم الضعيف على التركيز في كل مرة على الأخطاء التي وقعت فيها الفرضيات السابقة.
بناء شابير: ثلاث جولات من الترشيح
الفكرة الجوهرية أنيقة بقدر ما هي بسيطة. لنبدأ بـمتعلّم ضعيف لا يتجاوز خطؤه على أي توزيع. ما يفعله شابير هو بناء خوارزمية جديدة تستدعي ثلاث مرات، كل مرة على توزيع مختلف، ثم تدمج النتائج:
الجولة الأولى — التقط ما تستطيع. شغِّل على التوزيع الأصلي لتحصل على الفرضية . هذه الفرضية تكتشف الأنماط التي يقدر عليها المتعلّم، لكنها ما زالت تُخطئ في نسبة من البيانات.
الجولة الثانية — ألغِ ما تعلّمتَه. أنشئ توزيعاً جديداً يكون فيه احتمال ظهور مثال أصابت فيه مساوياً تماماً لاحتمال ظهور مثال أخطأت فيه — توزيع مناصفة 50/50. على هذا التوزيع تفقد أي ميزة وتصبح كأنها تُخمّن عشوائياً. شغِّل على لتحصل على ، وهي فرضية مُضطرة لاكتشاف أنماط جديدة في المنطقة الصعبة.
الجولة الثالثة — ركِّز على الخلاف. ابنِ بالاحتفاظ فقط بالأمثلة التي اختلفت فيها عن . هذه هي النقاط غير المحسومة — الحالات التي نحتاج فيها لمن يكسر التعادل. شغِّل على لتحصل على .
الفرضية النهائية: عند تصنيف مثال ، إذا اتفقت و — أي — فخُذ إجابتهما. وإذا اختلفتا، اعتمد على بوصفها الحَكَم. بعبارة أخرى: النتيجة هي بين و و.
الخطأ يتقلّص: من α إلى 3α² − 2α³
النتيجة المركزية تقول إن خطأ الفرضية المركّبة لا يتجاوز . لنفهم لماذا هذا مهم، لنأخذ أرقاماً ملموسة: إذا كان خطأ المتعلّم الضعيف — أي دقته 60% فقط — فإن جولة تعزيز واحدة تُنزل الخطأ إلى . للوهلة الأولى لا يبدو الفرق مبهراً، لكن القوة الحقيقية تظهر في التكرار.
بما أن لكل ، نستطيع تطبيق البناء تعاودياً: في كل مرة يمرّ الخطأ عبر الدالة فيتقلّص أكثر. بعد مستوى من التعاود يصبح الخطأ ، وهو يتقارب نحو الصفر بسرعة مُضاعَفة أُسّياً — أي أسرع بكثير مما قد نتوقّع.
لماذا يفشل التصويت بالأغلبية وحده؟
قبل عمل شابير، الفكرة التي تتبادر للذهن مباشرةً هي: شغِّل المتعلّم الضعيف مرة بشكل مستقل على التوزيع نفسه، واجمع الفرضيات ، ثم تنبّأ بتصويت الأغلبية. لو كانت أخطاء الفرضيات مستقلة عن بعضها، لعمل هذا الأسلوب ببراعة — حدّ تشيرنوف يضمن أُسّياً سريعاً.
لكن المشكلة أن الأخطاء ليست مستقلة. كل تشغيلة ترى التوزيع ذاته، فكل فرضية تتعثّر عند النقاط الصعبة نفسها. حتى لو شغّلت الإجراء ألف مرة، كل ما ستحصل عليه هو ألف نسخة متشابهة من نمط الخطأ ذاته. الأخطاء مترابطة، والتصويت بالأغلبية لا يستطيع كسر هذا الحاجز مهما زدت عدد التشغيلات.
هنا تأتي بصيرة شابير: غيِّر التوزيع بين الجولات بحيث تُجبَر كل فرضية على تعلّم شيء جديد. التوزيعات المُرشَّحة و تُبطل مزايا الفرضيات السابقة، فتضمن أن كل متعلّم لاحق يلتقط معلومات تُكمّل ما التقطه من سبقه.
الآلة التعاودية
بناء الفرضيات الثلاث الذي وصفناه هو خطوة واحدة فقط. للوصول إلى دقة عالية كما نشاء، يُطبّقه شابير بشكل تعاودي عبر إجراء سمّاه Learn.
يعمل هذا الإجراء كالتالي: يأخذ هدفاً لـالخطأ ويبدأ من الأعلى نزولاً. إذا كان الهدف — أي في متناول المتعلّم الضعيف — فإنه يستدعيه مباشرةً. أما إذا كان الهدف أصعب، فيحسب ويستدعي نفسه ثلاث مرات بهدف خطأ ليحصل على ثلاث فرضيات فرعية، ثم يدمجها بـتصويت الأغلبية فيحصل على فرضية خطؤها لا يتجاوز .
العمق الكلي لهذا التعاود هو — لوغاريتمي مُزدوج فحسب بالنسبة للدقة المطلوبة. معنى ذلك عملياً أن خفض الخطأ إلى لا يحتاج إلا عدداً متواضعاً من طبقات التعاود.
خلاصة البرهان الرياضي
لفهم لماذا يتقلّص الخطأ، نُعرِّف أربعة احتمالات على التوزيع للمثال :
- — أصابت و أخطأت
- — كلتاهما أصابتا
- — أخطأت و أصابت
- — كلتاهما أخطأتا
الفرضية النهائية لا تُخطئ إلا في حالتين: أن يُخطئ كلٌّ من و معاً (الحالة )، أو أن يختلفا ويُخطئ في الحكم بينهما. من هنا يكون الخطأ محدوداً بـ. وباستخدام القيود التي يفرضها بناء وكون كل ، نصل إلى أن الخطأ الكلي لا يتجاوز .
النتائج النظرية المترتبة
إلى جانب المبرهنة الرئيسية، استخلص شابير نتائج مفاجئة حول تعقيد أي فئة مفاهيم قابلة للتعلّم:
-
ضغط الفرضية. أي متعلّم قوي يمكن تحويله إلى متعلّم تكون فرضيته بحجم متعدد حدود في بدلاً من . عملياً، عيّنة بحجم يمكن تلخيصها في قاعدة حجمها لا يتجاوز متعدد حدود لوغاريتمياً في .
-
كفاءة الذاكرة. توجد خوارزمية تعلّم لأي فئة قابلة للتعلّم لا تحتاج من الذاكرة إلا مقداراً متعدد حدود لوغاريتمياً في — أقل بكثير من تخزين العيّنة كاملة.
-
. لأي فئة قابلة للتعلّم، توجد خوارزمية فورية لا يزيد عدد أخطائها المتوقع على أول محاولة إلا كمتعدد حدود في .
-
نتائج الاستحالة. أي فئة مفاهيم لا يمكن حسابها بدوائر متعددة الحدود في الحجم تكون غير قابلة للتعلّم — وهذه أول نتيجة استحالة مستقلة عن طريقة التمثيل ولا تعتمد على فرضيات تشفيرية.
الفكرة نفسها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def weak_learn(X, y, weights):
"""متعلّم ضعيف بسيط: جَذع قرار موزون."""
best_err, best_feat, best_thresh, best_pol = 1.0, 0, 0, 1
for f in range(X.shape[1]):
thresholds = np.unique(X[:, f])
for t in thresholds:
for pol in [1, -1]:
preds = np.where(pol * X[:, f] < pol * t, -1, 1)
err = np.sum(weights[preds != y])
if err < best_err:
best_err, best_feat, best_thresh, best_pol = err, f, t, pol
return lambda x: np.where(best_pol * x[:, best_feat] < best_pol * best_thresh, -1, 1)
def boost_one_round(X, y, weak_learn):
"""جولة واحدة من بناء شابير بثلاث فرضيات."""
n = len(y)
w = np.ones(n) / n # التوزيع المنتظم D1
# الجولة 1: تعلّم على التوزيع الأصلي
h1 = weak_learn(X, y, w)
correct1 = (h1(X) == y)
# الجولة 2: مناصفة بين ما أصابت وما أخطأت فيه h1
w2 = np.where(correct1, 0.5 / correct1.sum(), 0.5 / (~correct1).sum())
h2 = weak_learn(X, y, w2)
# الجولة 3: التركيز على نقاط الخلاف بين h1 وh2
disagree = (h1(X) != h2(X))
if disagree.sum() == 0:
return h1 # اتفاق كامل — لا حاجة للمتابعة
w3 = np.zeros(n)
w3[disagree] = 1.0 / disagree.sum()
h3 = weak_learn(X, y, w3)
# تصويت الأغلبية: إن اتفقت h1 وh2 خُذ رأيهما، وإلا ارجع لـh3
def combined(X):
p1, p2, p3 = h1(X), h2(X), h3(X)
return np.where(p1 == p2, p1, p3)
return combinedمن النظرية إلى التطبيق: الطريق نحو AdaBoost
بناء شابير الأصلي كان إثباتاً نظرياً للمبدأ أكثر منه أداةً عملية. الهيكل التعاودي بثلاث جولات أنيق رياضياً، لكنه مُكلّف عملياً: كل مستوى من التعاود يُضاعف استدعاءات المتعلّم الضعيف ثلاث مرات، والتوزيعات المُرشَّحة تتطلب مسحاً متكرراً للأمثلة للعثور على تلك التي تستوفي شروطاً محددة.
عام 1995 طوّر يوآف فرويند خوارزمية تعزيز أكفأ. ثم في 1997 قدّم فرويند وشابير معاً AdaBoost، وهي التي نقلت التعزيز من عالم النظرية إلى التطبيق الفعلي. بدلاً من ثلاث جولات لكل مستوى تعاودي، يعمل بحلقة تكرارية واحدة من جولة متتابعة: في كل جولة يُعاد ترجيح مجموعة التدريب بأكملها، فالأمثلة التي يُخطئ فيها التجميع الحالي تحصل على أوزان أعلى، مما يُجبر المتعلّم الضعيف التالي على التركيز عليها. التنبؤ النهائي هو تصويت موزون لجميع الفرضيات الـ، حيث تحصل الفرضيات الأدق على وزن تصويتي أكبر.
هذا التصميم التكراري البسيط استبدل الترشيح التعاودي عند شابير بحلقة واحدة، وأثبت فعاليته المذهلة في التطبيق. AdaBoost مع صار معياراً أساسياً في مسابقات ، وأثّر في كل أسلوب تجميع جاء بعده — من التعزيز التدريجي إلى XGBoost إلى الغابات العشوائية.
1984
إطار التعلّم PAC
فاليانت يقدّم إطار PAC الذي وضع لأول مرة تعريفاً رياضياً دقيقاً لمعنى أن تتعلّم خوارزمية من أمثلة.
1988
مسألة تعزيز الفرضيات
كيرنز وفاليانت يطرحان السؤال: هل يمكن تحويل متعلّم ضعيف إلى قوي؟ كيرنز يُثبت أن التصويت البسيط لا يكفي، والسؤال يبقى مفتوحاً.
1990
قوّة التعلّم الضعيف
شابير يُثبت تكافؤ التعلّم الضعيف والقوي عبر بناء الترشيح بثلاث فرضيات. لحظة ولادة نموذج التعزيز.
1995
التعزيز بالأغلبية
فرويند يطوّر خوارزمية تعزيز أكفأ، مثالية نظرياً لكنها لا تزال بعيدة عن التطبيق العملي.
1997
AdaBoost
فرويند وشابير يقدّمان AdaBoost — تعزيز عملي تكراري يعتمد إعادة الترجيح التكيُّفية. تتصدّر مسابقات التعلّم الآلي وتُلهم التعزيز التدريجي.
2001
التعزيز التدريجي
فريدمان يُعيد صياغة التعزيز على أنه انحدار تدريجي في فضاء الدوال. هذه الرؤية وحّدت التعزيز مع الأمثَلة ومهّدت الطريق لـXGBoost وLightGBM وCatBoost.
المرجعSchapire, R. E.. The Strength of Weak Learnability. Machine Learning, 1990.
مصطلحات هذه الورقة
- التجميع المتتالي التراكمي للنماذجBoosting
- المُتعلِّم الضعيفWeak Learner
- النماذج التجميعية الهجينةEnsemble
- التعلم الصحيح تقريبياً باحتمالPAC Learning
- التعلم الـمُوجّه (المصحوب ببيانات مرجعية)Supervised Learning
- جذع القرارDecision Stump
- تصويت الأغلبية الموزونWeighted Majority Vote
- التعزيز التكيُّفيAdaptive Boosting
- فرضيةHypothesis
- التعميمGeneralization
- فرط التخصيصOverfitting