مثل الحشو والتعزيز، فإن تعزيز التدرج هي منهجية يتم تطبيقها بالإضافة إلى خوارزمية أخرى للتعلم الآلي. تنطوي عملية تعزيز التدرّج على نوعين من النماذج:
- "ضعيف" التعلم الآلي، والذي يكون عادةً شجرة قرارات.
- "قوي" للتعلم الآلي، والذي يتكون من مجموعات متعددة من النماذج.
فعند تعزيز التدرج، يتم تدريب نموذج جديد ضعيف في كل خطوة على التنبؤ "خطأ" للنموذج القوي الحالي (والذي يُعرف باسم الاستجابة الزائفة). سنفصّل "الخطأ" لاحقًا. افترض في الوقت الحالي كلمة "خطأ" هو الفرق بين التنبؤ والتسمية الانحدارية. النموذج الضعيف (أي "الخطأ") هو ثم إضافتها إلى النموذج القوي بعلامة سالبة لتقليل خطأ نموذج قوي.
التعزيز الاشتقاقي هو تحسين متكرر. يستدعي كل تكرار المعادلة التالية:
\[ F_{i+1} = F_i - f_i \]
حيث:
- $F_i$ هو النموذج القوي في الخطوة $i$.
- $f_i$ هو النموذج الضعيف في الخطوة $i$.
تتكرّر هذه العملية حتى يتم استيفاء معيار الإيقاف، مثل عدد التكرارات أو إذا بدأ النموذج (القوي) في الإفراط في التوافق كما يتم قياسه على مجموعة بيانات تحقق منفصلة.
لنوضّح خوارزمية تعزيز التدرج في مجموعة بيانات الانحدار البسيط في الحالات التالية:
- الهدف هو التنبؤ بـ $y$ من $x$.
- تم إعداد النموذج القوي ليكون ثابتًا صفرًا: $F_0(x) = 0$.
# Simplified example of regressive gradient boosting.
y = ... # the labels
x = ... # the features
strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.
for i in range(num_iters):
# Error of the strong model
error = strong_predictions - y
# The weak model is a decision tree (see CART chapter)
# without pruning and a maximum depth of 3.
weak_model = tfdf.keras.CartModel(
task=tfdf.keras.Task.REGRESSION,
validation_ratio=0.0,
max_depth=3)
weak_model.fit(x=x, y=error)
strong_model.append(weak_model)
weak_predictions = weak_model.predict(x)[:,0]
strong_predictions -= weak_predictions
دعونا نطبق هذه التعليمة البرمجية على مجموعة البيانات التالية:
الشكل 25. يشير ذلك المصطلح إلى مجموعة بيانات تراجعية اصطناعية تحتوي على خاصية عددية واحدة.
إليك ثلاثة مخططات بعد التكرار الأول لتعزيز التدرج الخوارزمية:
الشكل 26. ثلاثة مخططات بعد التكرار الأول.
لاحظ ما يلي حول المخططات في الشكل 26:
- يوضح المخطط الأول تنبؤات النموذج القوي، والذي يمثل حاليًا ودائمًا ما يكون 0.
- أما المخطط الثاني فيعرض الخطأ، وهو تسمية النموذج الضعيف.
- ويوضح المخطط الثالث النموذج الضعيف.
يتعلم النموذج الأول الضعيف تمثيلاً تقريبيًا للتصنيف يركز على الجزء الأيسر من مساحة الخصائص (الجزء الذي يحتوي على أكبر قدر من الاختلاف، وبالتالي، أكبر خطأ في النموذج الخاطئ الثابت).
فيما يلي نفس المخططات لتكرار آخر للخوارزمية:
الشكل 27. ثلاثة مخططات بعد التكرار الثاني.
لاحظ ما يلي حول المخططات في الشكل 27:
- يحتوي النموذج القوي الآن على تنبؤ النموذج الضعيف التكرار السابق.
- الخطأ الجديد للنموذج القوي أصغر قليلاً.
- يركز التنبؤ الجديد للنموذج الضعيف الآن على الجزء الصحيح من مساحة مميزة.
نشغّل الخوارزمية لـ 8 تكرارات أخرى:
الشكل 28. ثلاثة مخططات بعد التكرار الثالث والتكرار العاشر.
لاحِظ في الشكل 28 أن التنبؤ بنموذج قوي يبدأ في التشابه مخطط مجموعة البيانات.
وتوضح هذه الأشكال خوارزمية تعزيز التدرج باستخدام أشجار القرارات المتعلمين الضعفاء. وتُسمى هذه التركيبة أشجار متدرجة (القرار).
تقترح المخططات السابقة جوهر تعزيز التدرج. ومع ذلك، المثال تفتقر إلى العمليات الواقعية التالية:
- الانكماش
- تحسين قيم الأوراق باستخدام خطوة واحدة من طريقة "نيوتن"
انكماش
يتم ضرب النموذج الضعيف $f_i$ في قيمة صغيرة $\nu$ (على سبيل المثال، $\nu = 0.1$) قبل إضافته إلى النموذج القوي $F_i$. تسمى هذه القيمة الصغيرة الانكماش. بمعنى آخر، بدلاً من كل تكرار باستخدام ما يلي المعادلة:
\[ F_{i+1} = F_i - f_i \]
يستخدم كل تكرار المعادلة التالية:
\[ F_{i+1} = F_i - \nu f_i \]
يشبه الانكماش في تعزيز التدرج معدل التعلم في الشبكات العصبية. يتحكم الانكماش في مدى سرعة التعلم النموذجي القوي، مما يساعد في الحد فرط التخصيص. أي أن قيمة الانكماش الأقرب إلى 0.0 تقلل من فرط التخصيص من قيمة انكماش أقرب إلى 1.0.
في التعليمة البرمجية أعلاه، سيتم تنفيذ الانكماش على النحو التالي:
shrinkage = 0.1 # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions