التطوّر بيكسب إمتى
وبيخسر إمتى. فين الـ genetic algorithm تستاهل تكلفتها، وفين فيه طريقة أرخص أصلًا، وحجة التكلفة اللي بتحسم أغلب ده.
العمومية مش ببلاش
الـ genetic algorithm مبتطلبش من المسألة تقريبًا أي حاجة: لا مشتقة، ولا convexity، ولا حتى أرقام. وعشان كده هي بطيئة — فإنت بتدفع تمن كل افتراض بترفض تفترضه.
استخدم الـ gradient
backward pass واحد بيرجّع المشتقة الدقيقة لـ كل parameter. أما P تقييم فبيرجّعوا P رقم scalar، ولازم تخمّن منهم اتجاه في d بُعد.
الضرب اللي بتلتزم بيه
حجم الـ population في عدد الأجيال تقييم، قصاد forward pass وbackward pass واحد لكل خطوة gradient. فاستخدم التطوّر لما المسألة تفرضه، مش لما إنت تختاره.
black box حقيقي
- مش قابلة للتفاضل بأي شكل مفيد
- اختيارات مستمرة ومنفصلة وشرطية متلخبطة مع بعض
- كل تقييم تدريب كامل
- فالتطوّر مقبول هنا — وده مش نفس القول إنه الأحسن
أربع طرق للبحث
- الـ grid — بيعدّ grid متثبّتة قبل أول run. متوازي تمامًا
- الـ random — بيسحب من المديات وبيتجاهل كل نتيجة. متوازي تمامًا
- الـ Bayesian — بيعمل fit لـ surrogate model على كل النتايج وبعدين بيحسّن acquisition function. تسلسلي بالتصميم
- الـ genetic — بيعيد تركيب أحسن أعضاء الـ population. متوازي جوه الجيل
أنهي بنية بتناسب
- الـ Bayesian search بيطلّع أكتر من كل تقييم — أما الـ rank selection فبيرمي المقادير
- الـ genetic algorithm بتشغّل الـ workers المتوازيين من غير نظرية زيادة
- الفضاءات المش مريحة — طول متغيّر، شرطية، permutations — بترجّح التطوّر
- الـ baseline الأول: random search على مديات معقولة (Bergstra وBengio، 2012)
الـ feature selection
bit لكل feature، وstring لكل subset. والـ fitness نتيجة cross-validation مع penalty على الـ features اللي بتفضل — wrapper method، فبتلاقي features مبتنفعش غير مع بعض.
الـ overfitting على نتيجة الـ validation
إنت بتختار الحد الأقصى لآلاف النتايج اللي فيها noise، فالكسبان بيبان أحسن من حقيقته. احجز test set البحث ميلمسهاش.
- استبعد الـ L1 regularization الأول — sparsity بتمن fit واحد (الدرس 2.3)
- importance الـ trees والـ permutation importance تقريبًا ببلاش (الدرس 3.2)
- الـ greedy forward أو backward selection بيكلّف تقييمات أقل بكتير
weights ولا architecture
- الـ weights — اختيار غلط لما يبقى فيه loss function قابلة للتفاضل
- معقول لما النتيجة تيجي من simulation أو لعبة أو reward متأخرة
- الـ architecture — العمق والعرض والتوصيل اختيارات منفصلة. مفيش gradient، فالبحث أمين
- الوحدة 14 بتهاجم نفس النوع بالـ reinforcement learning
نظرة على NEAT
- ابدأ بأقل حاجة وبعدين عقّد — زوّد الـ nodes والـ connections على مدار الـ run
- الـ historical markings — عشان الـ crossover يصطف على genes ليها جد مشترك
- الـ speciation — بيحمي بنية جديدة مدة كفاية عشان الـ weights بتاعتها تتحسّن
الـ genetic programming
الفرد برنامج، محفوظ كـ expression tree. والـ crossover بيبدّل الـ subtrees، فالابن بيفضل برنامج صالح. ولما تطبّق ده على البيانات بيبقى symbolic regression.
بتخسر إمتى
- الـ objective قابل للتفاضل — استخدم الـ gradient
- convex أو linear أو integer program — الـ solver بيرجّع حد، والـ genetic مبترجّعش حاجة
- بنية combinatorial معروفة، أو فضاء صغير كفاية للتعداد
- fitness فيها noise لدرجة إن الـ selection ميقدرش يفرّق بين الـ candidates
- fitness function مش واثق فيها — ودي الدرس 13.3 مش الـ algorithm
أهم النقط
- العمومية بتكلّف تقييمات — وقابلية التفاضل معناها تستخدم الـ gradient
- الـ hyperparameters: قارن بالـ grid والـ random والـ Bayesian قبل ما تلتزم
- الـ feature selection بتشتغل كبحث في الـ subsets، وبتعمل overfitting على الـ validation من غير حماية
- تطوير الـ architecture أوجه من تطوير الـ weights
- الـ genetic programming بتشتري معادلة تنفع تتقري، بتمن الـ bloat
- الجاي: الوحدة 14 بتنتقل للتعلّم من الـ reward