التحسين2023متوسط12 دقيقة قراءة

الاكتشاف الرمزي لخوارزميات الأمثَلة

Symbolic Discovery of Optimization Algorithms

Chen, X. · Liang, C. · Huang, D. · Real, E. · Wang, K. · Liu, Y. · Pham, H. · Dong, X. · Luong, T. · Hsieh, C.-J. · Lu, Y. · Le, Q.V. — NeurIPS

المشكلة

بحلول عام 2023، ظلّ Adam وAdamW المُحسِّنَين المعياريَّين لتدريب الشبكات العصبية العميقة طوال عقد تقريباً. مئات البدائل المصمَّمة يدوياً ظهرت خلال تلك الفترة، لكن لم ينجح أيٌّ منها في إزاحة Adam بشكل ثابت عبر مهام الرؤية واللغة والنماذج متعددة الوسائط. في المقابل، محاولات اكتشاف مُحسِّنات أفضل بطريقة آلية — سواء عبر أساليب تعلُّم الأمثَلة (L2O) أو التعلّم المعزّز — أنتجت خوارزميات صندوق أسود لم تستطع من مهام بديلة صغيرة إلى التدريب الحقيقي على نطاق واسع. وصل المجتمع البحثي إلى طريق مسدود: الحدس البشري بدا مستنفَداً، والبحث الآلي أثبت هشاشته.

الإسهام

إطار بحث برمجي يُعامل اكتشاف المُحسِّنات على أنه تطوّر رمزي في فضاء برامج لا نهائي، ويعتمد على بحث تطوّري ببداية دافئة، وتنفيذ مجرّد لتقليم البرامج غير المفيدة، واختيار قُمعي لضمان التعميم. الطريقة اكتشفت Lion ( المتطوِّر)، وهو مُحسِّن بسيط بشكل لافت لا يتتبّع إلا (بدون عزم ثانٍ)، ويستخدم لتحديثات موحّدة المقدار، وحقّق دقة 88.3% بدون أمثلة و91.1% على ImageNet — متجاوزاً أفضل النتائج السابقة — مع توفير يصل إلى 5 أضعاف في حوسبة على JFT. يعمل Lion حالياً في أنظمة الإنتاج لدى Google.

الأثر

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

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

Lion متسلّق مختلف تماماً: يرمي دفتر الوعورة، ويحتفظ بدفتر واحد فقط لتاريخ الميل. عند كل خطوة يسأل نفسه سؤالاً واحداً: «صعود أم هبوط؟» ثم يخطو خطوة ثابتة الحجم في ذلك الاتجاه. دفاتر أقل وقرارات أبسط — ومع ذلك يصل هذا المتسلّق إلى مناظر أفضل وبسرعة أكبر.

اكتشاف المُحسِّنات: الخوارزميات كبرامج

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

ينطلق المؤلفون من AdamW كنقطة انطلاق أولية ويطبّقون : في كل جيل يُختار برنامج أب، ويُطبَّق عليه طفرة (إدراج أو حذف أو تعديل عبارة)، ثم يُقيَّم البرنامج الناتج على مهمة بديلة صغيرة ويُحتفظ بالأفضل. فضاء البحث يضم 45 دالة رياضية — من العمليات الحسابية الأساسية إلى الدوال المثلثية ودوال الاستيفاء — بلا سقف لطول البرنامج أو عدد المتغيرات المحلية.

هذا يُنتج فضاء بحث لا نهائي ومتناثر: أكثر من مليونَي برنامج عشوائي جُرِّبت دون أن يتفوّق أيٌّ منها على AdamW. لكن تقنيات ذكية تجعل البحث ممكناً عملياً: يُقلِّم البرامج غير الصالحة والمكرّرة والزائدة (محققاً تسريعاً بنحو 10 أضعاف عبر التخزين المؤقت وبرامج أقصر بنحو 3 مرات)، والبداية الدافئة مع إعادة التشغيل توازن بين الاستكشاف والاستغلال، والتكلفة الإجمالية نحو 3,000 يوم TPU V2 موزّعة على عدة جولات بحث.

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

سدّ الفجوة: من المهمة البديلة إلى الإنتاج

برنامج يتفوّق على مهمة بديلة صغيرة (20 دقيقة على شريحة TPU واحدة) قد يفشل فشلاً ذريعاً حين يُنقل إلى مهمة حقيقية (أيام كاملة على 512 شريحة). هذه فجوة التعميم هي العقبة الرئيسية في اكتشاف المُحسِّنات آلياً، وهي تحديداً ما عجزت عنه الأساليب السابقة كـ L2O والبحث العصبي عن المُحسِّنات.

يتعامل المؤلفون مع هذه المشكلة بأسلوبين. الأول هو : البرامج الواعدة تُقيَّم على مهام أكبر تدريجياً — 10 أضعاف ثم 100 ضعف حجم المهمة البديلة — ولا ينتقل إلى المرحلة التالية إلا البرنامج الذي يتفوّق على خط الأساس في كل مقياس. الأسلوب الثاني هو تبسيط البرنامج: تُحذف العبارات الزائدة (التنفيذ المجرّد يكشف أن نحو 70% من عبارات البرامج المتطوّرة شيفرة ميتة لا تؤثر في الخرج)، وتُستأصل العمليات غير الجوهرية، ثم يُنظَّف البرنامج الباقي يدوياً حتى يصل إلى أبسط صيغة رياضية.

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

Lion: مُحسِّن الزخم الإشاري المتطوِّر

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

الفكرة البديهية هنا: بدلاً من أن يسأل المُحسِّن «كم يبلغ الانحدار وكم يتذبذب؟» (كما يفعل Adam)، يسأل Lion سؤالاً واحداً فقط: «في أي اتجاه تشير الدلائل مجتمعةً؟» ثم يخطو خطوة واحدة ثابتة في ذلك الاتجاه. كل معامل يتغيّر بمقدار +1 أو −1 بالضبط (مضروباً في معدّل التعلّم)، بغض النظر عن حجم المُتدرِّج الأصلي. هذا يُنتج تحديثات موحّدة المقدار في جميع الأبعاد — خاصية لم يستغلّها بنجاح أي مُحسِّن صمّمه البشر على نطاق واسع.

قيمتا β تتحكّمان في السلوك: β₁ = 0.9 تضبط الاستيفاء الذي يُنتج التحديث (وزن أكبر للمُتدرِّج الحالي)، بينما β₂ = 0.99 تضبط الذي يتتبّع الزخم (أي يتذكّر تاريخاً أطول بنحو 10 مرات). هذا الفصل بين معامل التحديث ومعامل الحالة لم يُجرِّبه مصمّمون بشر من قبل، بل ظهر تلقائياً من عملية البحث.

افتح في المختبر
قارن طريقة حساب خطوة تحديث واحدة في Adam وLion. لاحظ كيف تكون تحديثات Lion منتظمة (±1) بينما تحديثات Adam مُحَجَّمة بمقادير مختلفة.
تستيقظ التجربة عند وصولك…

قاعدة التحديث في Lion

في كل خطوة تدريب نريد تحديث أوزان النموذج θ. يمرّ Lion بثلاث مراحل: أولاً يحسب اتجاهاً وسيطاً بالاستيفاء بين المُتدرِّج الحالي والزخم المُخزَّن، ثم يُطبّق دالة الإشارة ليحصل على تحديث موحّد (±1)، وأخيراً يُحدّث الزخم بشكل منفصل للخطوة التالية بمعامل مزج مختلف. أما فيُطبَّق كتنظيم منفصل، تماماً كما في AdamW.

ct=β1mt1+(1β1)gtc_t = \beta_1 \, m_{t-1} + (1 - \beta_1) \, g_t
الخطوة 1: الاستيفاء بين المُتدرِّج والزخمنمزج المُتدرِّج الحالي gₜ مع الزخم المُخزَّن mₜ₋₁ عبر β₁ = 0.9. هذا يضع 10% من الثقل على المُتدرِّج الحالي و90% على التاريخ المُتراكم، فنحصل على إشارة اتجاه مُركَّبة.
θt=θt1ηt(sign(ct)+λθt1)\theta_t = \theta_{t-1} - \eta_t \bigl(\text{sign}(c_t) + \lambda \, \theta_{t-1}\bigr)
الخطوة 2: تحديث الأوزان بالإشارة واضمحلال الأوزاننُطبّق sign(cₜ) فيتحرك كل معامل بمقدار +1 أو −1 بالضبط، ثم نضيف اضمحلال الأوزان المنفصل λθ. التحديث بأكمله يُضرب بمعدّل التعلّم ηₜ. ولأن دالة الإشارة تُنتج دائماً ±1، يحتاج Lion معدّل تعلّم أصغر من Adam بنحو 3–10 مرات.
mt=β2mt1+(1β2)gtm_t = \beta_2 \, m_{t-1} + (1 - \beta_2) \, g_t
الخطوة 3: تحديث الزخم للخطوة التاليةبعد تحديث الأوزان، نُحدّث الزخم بـ β₂ = 0.99. هذا متوسط متحرك أسي أبطأ من β₁، ما يعني أن الزخم يحتفظ بتاريخ مُتدرِّجات أطول بنحو 10 مرات. النقطة الجوهرية: معامل المزج المستخدم لحساب التحديث (β₁) يختلف عن المعامل المستخدم لتتبّع الحالة (β₂).

الفكرة في الكود

مُحسِّن Lion — الخوارزمية الكاملة في ~15 سطراًpython

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

import numpy as np

def lion_step(weight, gradient, momentum, lr, beta1=0.9, beta2=0.99, wd=0.1):
    """خطوة واحدة من مُحسِّن Lion."""
    # الخطوة 1: استيفاء المُتدرِّج والزخم لتحديد اتجاه التحديث
    c = beta1 * momentum + (1 - beta1) * gradient

    # الخطوة 2: إشارة c → تحديث موحّد ±1 + اضمحلال أوزان منفصل
    update = np.sign(c) + wd * weight

    # تطبيق التحديث
    weight = weight - lr * update

    # الخطوة 3: تحديث الزخم للخطوة التالية (بمعامل β₂ مختلف)
    momentum = beta2 * momentum + (1 - beta2) * gradient

    return weight, momentum

# ما يميّز Lion عن Adam:
# • لا عزم ثانٍ (v) → توفير ~50% من ذاكرة المُحسِّن
# • sign() تُعطي ±1 موحّدة → نستخدم معدّل تعلّم أصغر 3–10 مرات
# • β₁ ≠ β₂ → فصل اتجاه التحديث عن تتبّع الحالة
# • لا epsilon ولا تصحيح انحياز → معاملات فائقة أقل

لماذا تنجح دالة الإشارة؟ التنظيم عبر التشويش

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

التجارب تؤكد ذلك بوضوح: نموذج ViT-B/16 حين يُدرَّب بـ Lion يكون خطأ التدريب لديه أعلى من AdamW، لكنه يتفوّق عليه بنسبة 2% في دقة التحقّق. المؤلفون قاسوا استواء سطح الخسارة أيضاً بإضافة تشويش غاوسي إلى الأوزان بعد التقارب، فوجدوا أن حلّ Lion يحافظ على خطأ أقل بكثير تحت هذا الاضطراب — ما يؤكد أنه يتقارب نحو منطقة أكثر استواءً. هذا السلوك يشبه ما يفعله التقليل الواعي بالحدّة (SAM)، لكن Lion يحققه ضمنياً عبر دالة الإشارة، دون الحاجة إلى هدف min-max صريح.

افتح في المختبر
قارن سطح الخسارة حول الحل بعد التقارب: Adam يميل نحو حدود دنيا حادة، بينما Lion يستقرّ في مناطق أكثر استواءً.
تستيقظ التجربة عند وصولك…

الذاكرة والكفاءة: نصف الحالة وخطوات أسرع

Adam يحتفظ بمتّجهَي حالة لكل معامل: العزم الأول (متوسط المُتدرِّجات) والعزم الثاني (متوسط مربعات المُتدرِّجات). أما Lion فيحتفظ بمتّجه واحد فقط: الزخم. في نموذج يضمّ P معاملاً، هذا يعني توفير P عدداً عشرياً من حالة المُحسِّن — أي تقليص بنحو 50% في ذاكرة المُحسِّن. عند تدريب نماذج بمليارات المعاملات، ينعكس هذا مباشرةً على عدد شرائح المسرّعات المطلوبة. مثلاً، تدريب ViT-B/16 بـ 4,096 يحتاج 16 شريحة TPU V4 على الأقل مع AdamW، لكن 8 شرائح فقط مع Lion (كلاهما بزخم bfloat16).

كذلك يعمل Lion أسرع بنسبة 2–15% في الزمن الفعلي لكل خطوة بفضل بساطة حساباته: لا جذر تربيعي ولا epsilon ولا تصحيح انحياز — مجرد استيفاء واحد ودالة إشارة وتحديث زخم.

افتح في المختبر
اسحب شريط حجم النموذج لترى كيف تتغيّر ذاكرة المُحسِّن مع الحجم: Adam يحتاج دائماً ضعف حالة Lion.
تستيقظ التجربة عند وصولك…

الضبط العملي: معدّل التعلّم واضمحلال الأوزان وحجم الدُفعة

بما أن sign(·) تُنتج دائماً ±1، فإن مقدار تحديثات Lion أكبر من تحديثات Adam المُحَجَّمة. النتيجة العملية: Lion يحتاج معدّل تعلّم أصغر — عادةً بـ 3 إلى 10 مرات مقارنةً بـ Adam. وللحفاظ على نفس قوة اضمحلال الأوزان الفعّالة (التي تساوي lr × λ)، يجب رفع معامل الاضمحلال λ بالنسبة ذاتها.

مثال عملي: إذا كنت تستخدم lr = 1e−3 وλ = 1.0 مع AdamW، فنقطة انطلاق جيدة لـ Lion هي lr = 1e−4 وλ = 10.0. كذلك القيم الأولية والقصوى والنهائية في جدول معدّل التعلّم ينبغي تصغيرها جميعاً بنفس النسبة.

Lion يُفضّل أيضاً أحجام دُفعات أكبر. تفوّقه على AdamW يتّسع كلما كبرت الدُفعة: عند حجم 32 ألف يحقق Lion تحسّناً في الدقة يبلغ 2.5%. التفسير المرجّح أن الدُفعات الأكبر تعطي اتجاه مُتدرِّج أكثر استقراراً، وهذا يهمّ أكثر حين يعتمد المُحسِّن على الاتجاه فقط دون المقدار. ومع ذلك، حتى مع دُفعات صغيرة (64) يبقى Lion تنافسياً — لكنه يتألّق أكثر على النطاق الواسع.

ميزة إضافية: Lion أكثر متانةً تجاه اختيار . خرائط الحرارة للدقة عبر قيم معدّل التعلّم واضمحلال الأوزان تُظهر هضبة أداء أوسع لـ Lion مقارنةً بـ AdamW.

النتائج عبر الرؤية واللغة والتوليد

جرى تقييم Lion على طيف واسع من البنيات (، MLP، ResNet، U-Net، والنماذج الهجينة) والمهام (تصنيف الصور، ، ، نمذجة اللغة، والضبط الدقيق). أبرز النتائج:

تصنيف الصور: على ImageNet بالتدريب من الصفر، رفع Lion دقة ViT-B/16 بنسبة 1.96% مقارنةً بـ AdamW (77.44% مقابل 75.48%). وعلى التدريب المسبق مع JFT، مكّن Lion نموذج ViT-L/16 من مضاهاة أداء ViT-H/14 المُدرَّب بـ AdamW رغم أنه أصغر بمرتين — أي ما يكافئ توفير حوسبة تصل إلى 5 أضعاف.

التعلّم التبايُني بين الرؤية واللغة: باستخدام BASIC-L، حقق Lion دقة 88.3% بدون أمثلة على ImageNet — بتحسّن 2.6% عن خط أساس Adafactor و2% فوق أفضل نتيجة سابقة. ووصلت دقة الضبط الدقيق إلى 91.1%.

نماذج الانتشار: على توليد صور 256×256 من ImageNet، وصل Lion إلى نتيجة FID مقاربة لـ AdamW بعدد تكرارات أقل بـ 2.3 مرة (FID 4.1 مقابل 4.7).

نمذجة اللغة: على مجموعة PG-19، حقق Lion تسريعاً يصل إلى الضعف مقارنة بـ AdamW. وعلى نماذج بـ 7.5 مليار معامل مُدرَّبة على 300 مليار رمز، طابق Lion حيرة التدريب لكنه تفوّق في درجات التعلّم ضمن السياق عبر معايير التوليد والفهم اللغوي.

الضبط الدقيق: على GLUE مع نماذج T5 (من Base حتى 11B)، فاز Lion بـ 10 إلى 12 درجة من أصل 12 عند كل مقياس.

افتح في المختبر
قارن Lion مقابل AdamW عبر خمس فئات من المهام. كل محور يُظهر مقدار التحسّن النسبي لـ Lion.
تستيقظ التجربة عند وصولك…

القيود ومتى قد لا يفيد Lion

المؤلفون صريحون بشأن الحالات التي لا يتميّز فيها Lion. على شبكات ResNet مثلاً، الفارق عن AdamW وSGD ضئيل — يبدو أن الشبكات الالتفافية أسهل في الأمثَلة من المُحوِّلات. وحين يُستخدم قوي (RandAug + Mixup)، تتقلّص فائدة التنظيم الناتجة عن دالة الإشارة لأن التعزيز نفسه يؤدّي دور المُنظِّم. أما على مجموعات بيانات ضخمة عالية الجودة (كنموذج Imagen الأساسي والتدريب المسبق التراجعي واسع النطاق)، فيُطابق Lion حيرة AdamW دون أن يتفوّق عليها بوضوح — لأن جودة البيانات نفسها تُضيّق الفجوة بين المُحسِّنات.

يُفضّل Lion أيضاً أحجام دُفعات ≥ 64. مع دُفعات صغيرة جداً يصبح اتجاه المُتدرِّج مشوَّشاً بشدّة، فتُضخّم دالة الإشارة ذلك التشويش بدلاً من ترشيحه. وأخيراً، رغم أن Lion يوفّر متّجه حالة واحداً، إلا أنه لا يزال يحتاج تخزين الزخم بصيغة bfloat16، وهذا قد يكون مكلفاً عند مقياس المليارات. المؤلفون يقترحون كعمل مستقبلي تفكيك الزخم إلى عوامل (كما يفعل Adafactor مع العزم الثاني).

Lion في السياق: الجدول الزمني للمُحسِّنات

  1. 2014

    Adam

    تقدير العزوم التكيّفي. يتتبّع العزمين الأول والثاني للمُتدرِّجات، وسرعان ما أصبح المُحسِّن الافتراضي للتعلّم العميق طوال ما يقارب عقداً.

  2. 2017

    اضمحلال الأوزان المنفصل (AdamW)

    بيّن لوشتشيلوف وهوتر أن اضمحلال الأوزان في Adam ينبغي فصله عن تحديث المُتدرِّج حتى يعمل بالشكل الصحيح. هكذا وُلد AdamW وصار المعيار الجديد.

  3. 2020

    التقليل الواعي بالحدّة (SAM)

    أظهر أن البحث الصريح عن حدود دنيا مستوية يُحسِّن التعميم. Lion يحقق أثراً مشابهاً لكن بطريقة ضمنية عبر دالة الإشارة.

  4. 2020

    AutoML-Zero

    محاولة طموحة لتطوير أنظمة تعلّم آلي بالكامل من الصفر، لكنها اقتصرت على مهام بسيطة. إطار بحث Lion يبني على هذا الأساس لكنه يستهدف التطبيقات الحقيقية واسعة النطاق.

  5. 2023

    Lion (هذه الورقة)

    أول مُحسِّن تكتشفه الآلة ويتفوّق باستمرار على Adam عند أحدث مستويات النطاق. يعمل حالياً في أنظمة الإنتاج لدى Google.

المرجعChen, Liang, Huang, Real, Wang, Liu, Pham, Dong, Luong, Hsieh, Lu, Le. Symbolic Discovery of Optimization Algorithms. NeurIPS, 2023.

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