English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ضيف
1 / ?

لا يمكن لـ SGD البسيط تدريب ANDREA

النزول التدرجي العشوائي، نقطة البداية

يحسب الانتشار الخلفي تدرج g لكل معامل. يحدث النزول التدرجي العشوائي البسيط (SGD) كل معامل بـ p -= lr * g. معدل تعلم واحد، اتجاه واحد لكل خطوة، لا ذاكرة للتدرجات السابقة.


يفشل SGD البسيط عند التوسع لسببين:


1. تختلف معاملات التدرجات بشكل كبير عبر المعاملات. يتلقى تضمين لرمز نادر تدرجًا صغيرًا في معظم الخطوات؛ يتلقى مقياس الطبقة الطبيعية تدرجًا كبيرًا. لا يمكن لمعدل تعلم واحد أن يناسب كليهما.

2. تتذبذب التدرجات. دفعة مصغرة صاخبة من مجموعة مصادر 16 تدفع معاملًا يسارًا، ثم يمينًا، ثم يسارًا. SGD البسيط يهدر الخطوات في القتال مع نفسه.


Adam (Kingma & Ba, 2015) يصلح كلا المشكلتين بمتوسطين متحركين لكل معامل.

اللحظة الأولى & اللحظة الثانية

m: الاتجاه المُسَمْثَ

اللحظة الأولى m تُحَصِّل متوسط التدرجات الأخيرة بشكل أسي:


m = beta1 m + (1 - beta1) g


مع beta1 = 0.9. بعد عدة خطوات، يحمل m اتجاهًا مملسًا؛ دفعة سيئة واحدة بالكاد تغيره.


v: المقدار المملس

اللحظة الثانية v تُقدم متوسط التدرجات المربعة الأخيرة:


v = beta2 v + (1 - beta2) g^2


مع beta2 = 0.999. v يتتبع حجم تدرج كل معلمة عادةً. المعلمات ذات التدرجات الكبيرة تحصل على v كبير؛ المعلمات ذات التدرجات الصغيرة تحصل على v صغير.


معدل التعلم التكيفي لكل معلمة

قسمة الاتجاه المُعدَّل على الجذر التربيعي للمقدار المُعدَّل تعيد ترتيب كل معلمة على قدم المساواة:


adam_step = m / sqrt(v + eps)


تُكبَّر تضمينات التدرج الدقيقة الصغيرة؛ تُصغَّر تطبيعات الطبقات ذات التدرج الكبير. الآن، lr عالمي واحد يناسب كل معامل.

قراءة اللحظات

معاملان يحصلان على نفس التدرج `g = 0.1` في هذه الخطوة. المعامل A لديه تراكم `v = 0.0001` عبر خطوات عديدة؛ المعامل B لديه `v = 1.0`. باستخدام `adam_step = g / sqrt(v + eps)`، أي معامل يتلقى التحديث الأكبر في هذه الخطوة، & لماذا يريد Adam ذلك بهذه الطريقة؟

لماذا تحتاج الخطوات المبكرة إلى تصحيح الانحياز

انحياز البدء البارد

m & v تبدأان من الصفر. بعد الخطوة 1، m = 0.1 g_1 & v = 0.001 g_1^2. كلا التقديرين يقللان بشكل كبير من المتوسط طويل الأمد. بدون تصحيح، يبدأ المحسن بحذر ويزيد تدريجيًا ببطء، مما يهدر الخطوات المبكرة الثمينة عند تشكل التمثيلات.


التصحيح

يقوم Adam بتوسيع كل تقدير بمقدار 1 / (1 - beta^t) حيث t هو رقم الخطوة:


m_hat = m / (1 - beta1^t)


v_hat = v / (1 - beta2^t)


في الخطوة 1 مع beta1 = 0.9، يكون المقسوم (1 - 0.9) = 0.1، لذا m_hat = m / 0.1 = 10 * m. يتطابق التقدير المُصحح للانحياز مع ما يتنبأ به المتوسط طويل الأمد. مع زيادة t، يقترب beta^t من 0، يقترب التصحيح من 1، ويتقارب القيم المُصححة وغير المُصححة.

انحلال الوزن المفصول (ابتكار AdamW)

التنظيم L2 مقابل انحلال الوزن

يضيف التنظيم L2 الكلاسيكي عقوبة إلى الخسارة: L_total = L_data + (lambda / 2) sum(p^2). يرى الانتشار الخلفي تلك العقوبة كجزء من التدرج: g_total = g_data + lambda p. يتدفق مصطلح L2 عبر تحديثات m وv في Adam، فيتم تلطيفه وإعادة توازنه حسب أحجام المعاملات.


أثبت Loshchilov & Hutter (2019) أن تنعيم المنظم من خلال Adam يفسد كليهما. تقليل Adam التكيفي للوزن يقلل من انحلال الوزن على معاملات التدرج الكبير (حيث يجب أن يحارب الانحلال الإفراط في الملاءمة بأشد قوة) ويزيده على معاملات التدرج الصغير.


AdamW: تطبيق الانحلال مباشرة

يفصل AdamW انحلال الوزن عن التدرج. يتم تطبيق الانحلال على كل معامل مباشرة أثناء تحديث المعامل، دون لمس m أو v أبداً:


p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)


الآن يدفع مصطلحان كل خطوة:


1. مصطلح Adam: m_hat / (sqrt(v_hat) + eps) يعيد تسويق اتجاه التدرج بناءً على تاريخ حجم كل معلمة.

2. مصطلح الانهيار: weight_decay * p يقلص كل معلمة نحو الصفر، بشكل موحد، دون المرور عبر تنعيم Adam.


ANDREA-120M v2 يحدد weight_decay = 0.01. في كل خطوة، تقلص كل معلمة 1% نحو الصفر، بالإضافة إلى ما يفعله مصطلح Adam.


AdamW Optimizer Step

لماذا يهم الانفصال

استخدمت ANDREA-120M v1 طريقة Adam التقليدية (بدون weight decay) وانهارت في حلقات تكرار بحلول الخطوة 110K. استخدمت v2 طريقة AdamW مع `weight_decay = 0.01` وأنتجت نصوصًا مترابطة متعددة الفقرات. شرح (أ) أي مصطلح محدد يتم إضافته في AdamW والذي يفتقر إليه Adam التقليدي، و(ب) لماذا وضع ذلك المصطلح **داخل** التدرج (L2 الكلاسيكي) سيكون أسوأ من وضع AdamW المنفصل **خارج**.

الأدلة التجريبية

انهيار v1 (بدون weight decay)

تم تدريب ANDREA-120M v1 لمدة 165K خطوة باستخدام Adam التقليدي. عينات الإخراج:


- الخطوة 80K: region region region region region region region

- الخطوة 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

- الخطوة 140K: games, games, games, games, games, games, games

- الخطوة 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy


بقيت أرقام الخسارة معقولة (الحد الأدنى لـ EMA 3.23 في الخطوة 110K، مقابل 9.04 للاحتمال العشوائي). الخسارة وحدها تخفي انهيار التكرار: نموذج يحفظ رمزًا واحدًا إلى الأبد يحقق خسارات متقاطعة منخفضة في كل خطوة يظهر فيها ذلك الرمز.


استقرار v2 (weight_decay = 0.01)

أضاف v2 AdamW (بالإضافة إلى قص المتدرجات، تسخين معدل التعلم، مراقبة العينات). في الخطوة ~112K، تم إنتاج العينات:


- تم الإعلان عن انقراض ببغاء كارولينا في عام 1939 (صحيح واقعيًا)

- تحليل فورييه يفكك الإشارات إلى مكونات ترددية (تعريف كتاب دراسي)

- إيقاع المطر المتكرر، جداول على النافذة، راحة من آلام الحياة (يتوافق مع قيود الهايكو)


قيّم التصنيف الخارجي عينات v2 بـ 9.5/10، واصفًا إياها بـ "تماسك مذهل واحتفاظ بالمعرفة على هذه الحجمية."


لماذا نجحت ANDREA-12M بدون AdamW؟

تم تدريب ANDREA-12M باستخدام Adam العادي بدون انهيار. عند 12 مليون معلمة، تبقى مصفوفات الأوزان صغيرة بما يكفي بحيث لا يتمكن التوسيع التكيفي لـ Adam من دفع الأوزان الفردية إلى القيم الكبيرة الهاربة التي تؤدي إلى التكرار. عند مقياس 120 مليون، تتحرك قيم أوزان المعلمات أكثر في كل خطوة وتتراكم؛ يطبق التناقص المنتظم قوة ترميمية ثابتة نحو الصفر. يصبح التناقص المنفصل للأوزان أكثر أهمية مع زيادة حجم النموذج.

اختيار weight_decay = 0.01

لماذا قد يعمل `weight_decay = 0.01` لنموذج بـ 120 مليون معلمة بينما قيمة أكبر 100 مرة (`weight_decay = 1.0`) تدمر التدريب؟ فكر في قاعدة التحديث `p -= lr * (adam_term + weight_decay * p)`. اختر قيمة ممثلة لـ `p`، أدخل `weight_decay = 1.0` لخطوة واحدة، وصف ما يحدث لـ `p` بعد بضع خطوات.

الأنشطة المجاورة

يترابط AdamW مع ثلاثة أنشطة شقيقة في هذه الدورة:


- النشاط 11: LR warmup + cosine decay. AdamW وحده لا يمكنه إنقاذ نموذج من معدل تعلم قمي يحدث فورًا على الأوزان المبدئية الطازجة. Warmup يرفع lr تدريجيًا على مدى 2000 خطوة حتى يحصل تصحيح التحيز لـ AdamW وتدهور الوزن على وقت لاستقرار التمثيلات.

- النشاط 12: Gradient clipping. AdamW يفترض أن التدرجات لها حجم محدود. انتقالات المصدر كل 7 إلى 42 خطوة في لصيق ANDREA's bandit تنتج قمم تدرج عرضية؛ القص يحد منها عند معيار L2 1.0 قبل أن يلمس AdamW m أو v أو p.

- النشاط 13: FP32 / FP16 / FP8 precision. AdamW يخزن m وv لكل معامل، مما يضاعف بصمة الذاكرة للأوزان وحدها. FP16 يقلل تلك البصمة إلى النصف؛ FP8 يقللها مرة أخرى. خيارات الدقة تتفاعل مع استقرار المحسن.


AdamW، وwarmup، وclipping، وprecision تشكل ورقة ثوم رباعية الأوراق. أسقط ورقة واحدة، شاهد ANDREA تنهار.

تأمل في المحسن

اختر عينة واحدة من ANDREA-120M v1 (مثل `region region region region`) & صف كيف كان مصطلح `weight_decay * p` في AdamW، المطبق في كل خطوة من الخطوة 0، سيمنع ذلك الوضع الفاشل المحدد. فقرة واحدة.