لماذا توجد الحدود الدنيا
سلسلة مكافآت سيئة يمكن أن تجوع مصدرًا ذا أولوية
يختار بنديت ANDREA أذرع التركيز حسب ترتيب UCB1. يعتمد ترتيب UCB على mean_reward(k)، والذي يعتمد على تحسينات الخسارة المُلاحظة. سلسلة من الوثائق ذات الخسارة العالية من مصدر أولوية (مثل dictionary) يمكن أن تسحب mean_reward(k) للأسفل. الآن dictionary في ترتيب منخفض، يحصل على قليل من سحبات التركيز، & mean_reward(k) لا يمكنه التعافي (لا سحبات = لا ملاحظات جديدة).
نفس المخاطر تنطبق على أي مصدر يريده مصمم تدريب ANDREA في الخليط بغض النظر عن إشارة المكافأة قصيرة الأجل.
الأرضيات كأوزان دنيا
يحدد تكوين تدريب ANDREA أرضية لكل مصدر: وزن عينة دنيا يتلقاه المصدر بغض النظر عما يقوله إخراج UCB. تمتد الأرضيات من 0.0 إلى 1.0. أمثلة:
hermes3-general floor = 0.8 (مصدر محادثي ذو أولوية)
chat floor = 0.8
dictionary floor = 0.7 (سقالة استرجاع واقعي)
gutenberg floor = 0.7 (تماسك النثر)
محادثة اصطناعية الحد الأدنى = 0.0 (لا حد أدنى؛ يقرر البانديت بحرية)
كيفية تطبيق الحدود الأدنى
بعد تصنيف UCB1 للأذرع وتجميع مجموعات التركيز بواسطة dice control، يحصل كل مصدر على وزن مؤقت. ثم يتم تشغيل فرض الحدود الأدنى:
final_weight_k = max(tentative_weight_k, floor_k)
إذا خصص البانديت وزن 0.3 لـ hermes3-general ولكن حدّه الأدنى 0.8، يفوز الحد الأدنى: الوزن النهائي = 0.8. صوت البانديت يُعاد تعيينه للأعلى فقط؛ لا يُعاد تعيينه للأسفل أبداً.
تكوينات مختلفة، أرضيات مختلفة
يأتي ANDREA مع عدة تكوينات تدريب: chatbot، tool-caller، bash-commander. كل تكوين يحدد أرضيات مختلفة لمصادر الأولويات الخاصة به. تكوين Chatbot يرفع أرضيات hermes3-general & chat عاليًا. Tool-caller يرفع repo-docstrings أعلى. Bash-commander يرفع repo-commits أعلى. نفس الخوارزمية، أولويات مختلفة.
تطبيق أرضية
مخاطر الحفظ
المصادر الصغيرة تُحفظ
مصادر بيانات ANDREA تختلف حجمًا بشكل كبير. synthetic-chat يحتوي على حوالي 1,400 وثيقة. gutenberg يحتوي على 500,000+. إذا سحب اللص بالتساوي، synthetic-chat يستنفد مجموعة وثائقه بسرعة: بعد 1,400 سحب، كل وثيقة رُؤيت مرة واحدة على الأقل. اسحب 2,800 مرة & كل وثيقة رُؤيت مرتين على الأقل في المتوسط.
التعرض المتكرر لمجموعة صغيرة من الوثائق يؤدي إلى الحفظ: النموذج يتوقف عن تعلم الأنماط القابلة للتعميم & يبدأ في تلاوة تسلسلات رموز محددة من بيانات التدريب. الحفظ سيء لسببين: (1) يهدر السعة على الحفظ الرتيب بدلاً من التعميم، & (2) يمكن أن يتسرب بيانات التدريب عبر الإنتاج.
الحقب كوسيط للتذكر
حدد حقبة على المصدر k كمرور كامل عبر جميع وثائق k:
epochs_k = floor(lifetime_pulls_k / n_docs_k)
إذا تم سحب synthetic-chat (n_docs=1400) 2,800 مرة، فالحقب = floor(2800/1400) = 2: تم رؤية المصدر مرتين بالكامل. إذا تم سحب gutenberg (n_docs=500,000) 100,000 مرة، فالحقب = floor(100000/500000) = 0: لم يتم مرور كامل بعد.
عقوبة 1/(1+epochs)
عندما lifetime_pulls / n_docs > 1.0، يطبق ANDREA عقوبة مضروبة:
penalty = 1 / (1 + epochs)
final_weight = bandit_weight * penalty
المنحنى:
| الحقب | العقوبة | تقليل الوزن |
|---|---|---|
| 0 | 1.000 | لا يوجد |
| 1 | 0.500 | نصف |
| 2 | 0.333 | ثلث |
| 3 | 0.250 | ربع |
| 5 | 0.167 | سدس |
| 10 | 0.091 | one eleventh |
تزداد الغرامة مع كل مرور مكتمل. بعد العديد من العصور، يقترب وزن المصدر من الصفر & يستريح الـ bandit عليه بشكل طبيعي.
لماذا تستمر السحبات مدى الحياة عبر إعادات التشغيل
تمتد جلسات تدريب ANDREA لأيام. تحدث الانهيارات. تعيد الخوادم التشغيل. يتم تعديل الإعدادات & يستأنف التدريب من نقطة حفظ. تستمر السحبات مدى الحياة عبر جميع هذه الأحداث: يكتب الـ proxy عدد السحبات إلى القرص باستمرار.
إذا تم إعادة تعيين السحبات عند كل إعادة تشغيل، يمكن لمصدر صغير إعادة تعيين نفسه فعليًا إلى عصر 0 في كل مرة يعاد فيها تشغيل التدريب. لن تتراكم الغرامة أبدًا، & ستستمر عملية الحفظ بغض النظر. جعل السحبات مدى الحياة مستمرة يجعل الغرامة قيدًا حقيقيًا متزايدًا بشكل أحادي.
حساب غرامة العصر
إغلاق مكدس منهج البانديت
ما لديك
الأرضيات تضمن الحد الأدنى من العينة للمصادر ذات الأولوية: final_weight = max(bandit_weight, floor_k). غرامات العصور تحد من الحفظ عن ظهر قلب للمصادر الصغيرة: عندما lifetime_pulls/n_docs > 1، يُضرب الوزن في 1/(1+epochs). سحوبات مدى الحياة تستمر عبر إعادة التشغيل لذا تصبح الغرامة قيدًا أحادي الاتجاه، لا عدادًا قابلًا لإعادة الضبط.
الخط الأنابيب الكامل
دمج جميع أربع أنشطة ANDREA bandit (76-79) معًا:
1. النشاط 76 (UCB1). كل خطوة تحسب UCB(k) = mean_reward(k) + 0.5 * sqrt(ln(N)/n_k). Argmax يختار ذراعًا.
2. النشاط 77 (مراحل النرد). حدود المراحل (كل 7 إلى 42 خطوة) ترمي نردًا لعدد الأذرع المركزة. الأذرع العشوائية أولاً، UCB يملأ الباقي. 25-33% من المراحل تعمل بشكل عشوائي كامل.
3. النشاط 78 (إسناد المكافآت). CUDA يبلغ عن الخسارة؛ EMA لكل مصدر يتتبع التاريخ؛ المكافأة = max(0, EMA - loss) * 1000. المكافأة المقيسة تتغذى mean_reward(k).
4. النشاط 79 (الأرضيات والعصور، درس هذا). بعد إخراج UCB، الأرضيات ترفع مصادر الأولوية؛ عقوبات العصر تخفض وزن المصادر المحفوظة. سحبات العمر تستمر.
معًا: لص يتكيف (UCB1)، يستكشف بموثوقية (مراحل النرد)، يحصل على إشارات مكافأة صادقة (توسيع 1000x)، يحترم أولويات تصميم التدريب (الأسس)، & يتجنب الحفظ (عقوبة العصر).
المرجع
ANDREA whitepaper، الأقسام 3.5 & 3.6.