ML 101
M13 · L02
الوحدة 13

loop الـ genetic algorithm

أربع قرارات بيبقوا ست parameters ملموسة. الـ encoding، والـ selection، والـ crossover، والـ mutation، والـ elitism، والـ replacement — والمقبض الواحد اللي كلهم بيحرّكوه.

01 / 13
ML 101
M13 · L02
الـ loop

خمس خطوات بتتكرّر

  • اعمل initialization لـ population عشوائية
  • قيّم كل candidate — وهنا التكلفة كلها
  • اختار الـ parents، واعمل crossover، واعمل mutation للأبناء
  • بدّل عشان تكوّن الـ population الجاية
  • رجّع أحسن candidate شفته في أي وقت
02 / 13
ML 101
M13 · L02
الـ representation

أربع طرق تكتب بيها candidate

  • bit string — مفاتيح، أو رقم متفكوك
  • real vector — رقم عشري لكل parameter
  • permutation — ترتيب، كل عنصر مرة واحدة
  • شجرة — تعبير أو برنامج

الاختبار: هل الـ crossover الطبيعي بتاعه بيطلّع candidates صحيحين؟

03 / 13
ML 101
M13 · L02
الـ binary encoding

من bits لرقم محدود

المجموع بيقرا الـ L bit كرقم صحيح؛ والكسر بيعيد scaling ليه على المدى بتاعك. والعيب هو الـ resolution — الـ L bit بيعبّروا عن العدد ده من القيم ومش أكتر.

فك encoding L bit
x = x_{\min} + \frac{x_{\max} - x_{\min}}{2^{L} - 1} \sum_{i=0}^{L-1} b_i \, 2^{i}
04 / 13
ML 101
M13 · L02
الـ selection

تلات طرق تختار بيها الـ parents

  • الـ tournament — k عشوائي، والأحسن بيكسب؛ وk هو المقبض
  • الـ roulette — قطاع لكل fitness؛ حسّاس للمقياس
  • الـ rank — اعمل sort، وبعدين اتجاهل القيم الخام

الـ tournament محتاج مقارنات بس: من غير مجاميع ولا sorting.

05 / 13
ML 101
M13 · L02
بيكر، 1985

الضغط كرقم واحد

الـ rank 1 هو أحسن candidate. عند s = 1 الكل بياخد 1/N ومفيش ضغط خالص؛ وعند s = 2 الأحسن بياخد ضعف النصيب المتوسط والأوحش مبياخدش حاجة.

الـ linear rank selection
p_i = \frac{1}{N}\left( s - 2(s-1)\,\frac{i-1}{N-1} \right)
06 / 13
ML 101
M13 · L02
الـ crossover

قطع، أو لزق، أو رمي عملة

الـ one-point والـ two-point crossover بيخلّوا الـ genes اللي جنب بعض مع بعض، فـ مكان كتابة الـ parameter على الـ string بيبدأ يفرق. والـ uniform crossover من غير تحيّز مكاني — ومن غير حماية لأي بلوك كمان.

معدل الـ crossover
من 0.6 لـ 0.9 نقطة بداية منتشرة؛ وغير كده الـ parentين بيعدّوا زي ما هما
07 / 13
ML 101
M13 · L02
الـ permutations

لما القطع بيكسر الحل

الزق مسارين وهتاخد جولة بتزور الموقع 3 مرتين وعمرها ما بتزور الموقع 7. والـ order crossover بينسخ حتة من A، وبعدين يملا الفراغات بترتيب B.

A = 1 2 3 4 5 6 7 8 · B = 3 7 5 1 6 8 2 4
خلّي 4 5 6 من A ← الابن 1 8 2 4 5 6 3 7
08 / 13
ML 101
M13 · L02
الـ mutation

المصدر الوحيد للمادة الجديدة

الـ crossover بيخلط اللي الـ population شايلاه أصلًا. bit flip، أو خطوة Gaussian، أو swap — ومعدل قد مقلوب طول الـ string بيخلّي التغيير المتوقّع bit واحد لكل ابن.

القلبات المتوقّعة لكل ابن
\mathbb{E}[\text{flips}] = L \, p_m
09 / 13
ML 101
M13 · L02
الـ elitism

إنك تخسر الأحسن bug

  • الـ selection عشوائي: الأحسن ممكن ميتختارش
  • الـ variation مدمّر: ولو اتختار هيتغيّر
  • فأحسن fitness في الـ population ممكن تقل
  • الحل: انسخ أحسن e candidates من غير تغيير
  • واحتفظ بنسخة الأحسن على الإطلاق بره الـ population
10 / 13
ML 101
M13 · L02
الـ replacement

كله مرة واحدة، ولا واحد واحد

الـ generational replacement بيبدّل الـ population كلها — بسيط ومتوازي بسهولة، وهو الأكتر احتياجًا للـ elites. والـ steady-state بيدخّل ابن كل مرة، فالـ gene الكويس بيتعاد استخدامه على طول.

generational
N ابن
steady-state
1 أو 2
11 / 13
ML 101
اختبار سريع

شوف إيه اللي ثبت

أربع أسئلة من الدرس ده. جاوب عشان تشوف السبب — الشرح بيظهر سواء جاوبت صح أو غلط. ونتيجتك مش بتتحفظ.

السؤال 1 من 0
النتيجة 0/0

12 / 13
ML 101
الخلاصة
المقبض

ست إعدادات، trade-off واحد

استكشف بـ population N أكبر، وk أصغر، وmutation أكتر، وelites أقل. واعمل exploitation بالعكس. ارسم التنوّع جنب الـ fitness، وافتكر إن N في عدد الأجيال هو الفاتورة.

13 / 13