Tabanlar Neden Var
Kötü Bir Ödül Serisi Öncelikli Bir Kaynağı Aç Bırakabilir
ANDREA'nın banditi UCB1 sıralamasına göre odak kollarını seçer. UCB sıralaması mean_reward(k)'ya bağlıdır, bu da gözlemlenen kayıp iyileşmelerine bağlıdır. Öncelikli bir kaynaktan (örneğin dictionary) gelen yüksek kayıplı belgelerden oluşan bir seri, mean_reward(k)'yı aşağı çekebilir. Şimdi dictionary düşük sıralarda yer alır, az odak çekimi alır & mean_reward(k)'sı toparlanamaz (çekim yok = taze gözlem yok).
Aynı risk, ANDREA'nın eğitim tasarımcısının kısa vadeli ödül sinyalinden bağımsız olarak karışımda olmasını istediği herhangi bir kaynak için geçerlidir.
Tabanlar Minimum Ağırlıklar Olarak
ANDREA'nın eğitim yapılandırması her kaynak için bir taban belirtir: UCB çıktısı ne derse desin, kaynağın aldığı minimum örnekleme ağırlığı. Tabanlar 0.0 ile 1.0 arasındadır. Örnekler:
hermes3-general taban = 0.8 (öncelikli konuşma kaynağı)
chat taban = 0.8
dictionary taban = 0.7 (gerçeksel hatırlama iskele)
gutenberg taban = 0.7 (düz yazı tutarlılığı)
sentetik-sohbet taban = 0.0 (taban yok; bandit özgürce karar verir)
Tabanlar Nasıl Uygulanır
UCB1 kolları sıraladıktan ve zar kontrolü odak setlerini birleştirdikten sonra, her kaynaktan geçici bir ağırlık alır. Sonra taban uygulama çalışır:
final_weight_k = max(tentative_weight_k, floor_k)
Eğer bandit hermes3-general için 0.3 ağırlık verdiyse ama onun tabanı 0.8 ise, taban kazanır: nihai ağırlık = 0.8. Banditin sesi sadece yukarı doğru geçersiz kılınır; asla aşağı doğru geçersiz kılınmaz.
Farklı Konfigürasyonlar, Farklı Tabanlar
ANDREA birkaç eğitim konfigürasyonu sunar: chatbot, tool-caller, bash-commander. Her konfigürasyon, öncelikli kaynakları için farklı tabanlar belirler. Chatbot konfigürasyonu hermes3-general & chat tabanlarını yüksek tutar. Tool-caller repo-docstrings'i daha yüksek tabanlar. Bash-commander repo-commits'i daha yüksek tabanlar. Aynı algoritma, farklı öncelikler.
Bir Taban Uygula
Ezberleme Riski
Küçük Kaynaklar Ezberlenir
ANDREA'nın veri kaynakları boyutta büyük ölçüde değişir. synthetic-chat yaklaşık 1.400 belge içerir. gutenberg 500.000+'den fazladır. Haydut eşit şekilde çekerse, synthetic-chat belge havuzunu hızlı tüketir: 1.400 çekmeden sonra her belge en az bir kez görülmüştür. 2.800 kez çekin & her belge ortalama en az iki kez görülmüştür.
Küçük bir belge setine tekrarlanan maruz kalma ezberlemeye yol açar: model genelleştirilebilir kalıpları öğrenmeyi bırakır & eğitim verilerinden belirli token dizilerini ezberden okumaya başlar. Ezberleme iki nedenle kötüdür: (1) genelleştirme yerine ezber tekrarına kapasite israf eder, & (2) üretimi yoluyla eğitim verilerini sızdırabilir.
Epoch'lar Ezberleme Vekili Olarak
Kaynak k üzerinde bir epoch'u, k'nın tüm belgeleri üzerinden bir tam geçiş olarak tanımlayın:
epochs_k = floor(lifetime_pulls_k / n_docs_k)
Eğer synthetic-chat (n_docs=1400) 2.800 kez çekilmişse, epochs = floor(2800/1400) = 2: kaynak iki kez tamamen görülmüş. Eğer gutenberg (n_docs=500.000) 100.000 kez çekilmişse, epochs = floor(100000/500000) = 0: henüz tam bir geçiş yapılmamış.
1/(1+epochs) Cezası
lifetime_pulls / n_docs > 1.0 olduğunda, ANDREA çarpımsal bir ceza uygular:
penalty = 1 / (1 + epochs)
final_weight = bandit_weight * penalty
Eğri:
| epochs | ceza | ağırlık azaltımı |
|---|---|---|
| 0 | 1.000 | yok |
| 1 | 0.500 | yarım |
| 2 | 0.333 | üçte bir |
| 3 | 0.250 | dörtte bir |
| 5 | 0.167 | altıda bir |
| 10 | 0.091 | onda bir |
Ceza her tamamlanan geçişle büyür. Birçok epoch'tan sonra, kaynağın ağırlığı sıfıra yaklaşır & bandit onu doğal olarak dinlendirir.
Neden Ömür Boyu Çekimler Yeniden Başlatmalarda Devam Eder
ANDREA'nın eğitim çalıştırmaları günler sürer. Çökmeler olur. Sunucular yeniden başlatılır. Yapılandırmalar ayarlanır & eğitim bir kontrol noktasından devam eder. Ömür boyu çekimler tüm bu olaylarda devam eder: proxy çekim sayılarını sürekli diske yazar.
Eğer çekimler her yeniden başlatmada sıfırlanırsa, küçük bir kaynak her eğitim yeniden başladığında etkili bir şekilde epoch 0'a sıfırlanabilir. Ceza birikmez & ezberleme her durumda devam eder. Ömür boyu çekimleri sürdürmek, cezayı gerçek, monoton artan bir kısıtlama yapar.
Bir Epoch Cezası Hesapla
Bandit Curriculum Stack'ini Kapatma
Elde Ettikleriniz
Floor'lar öncelikli kaynaklar için minimum örnekleme garanti eder: final_weight = max(bandit_weight, floor_k). Epoch cezaları küçük kaynaklarda ezberlemeyi sınırlar: lifetime_pulls/n_docs > 1 olduğunda, ağırlık 1/(1+epochs) ile çarpılır. Ömür boyu çekimler yeniden başlatmalarda kalıcıdır böylece ceza sıfırlanabilir bir sayaç değil, monoton bir kısıt olur.
Tam Boru Hattı
Dört ANDREA bandit aktivitesinin (76-79) tümünü bir araya getirme:
1. Aktivite 76 (UCB1). Her adım UCB(k) = mean_reward(k) + 0.5 * sqrt(ln(N)/n_k) hesaplar. Argmax bir kolu seçer.
2. Aktivite 77 (zar aşamaları). Aşama sınırları (her 7 ila 42 adımda) odak kol sayısı için zar atar. Önce rastgele kollar, UCB gerisini doldurur. Aşamaların %25-33'ü tamamen rastgele çalışır.
3. Aktivite 78 (ödül atfetme). CUDA kayıp raporlar; kaynak başına EMA geçmişi izler; ödül = max(0, EMA - kayıp) * 1000. Ölçeklenmiş ödül mean_reward(k)'ye beslenir.
4. Aktivite 79 (tabanlar & epoch'lar, bu ders). UCB çıktısından sonra, tabanlar öncelikli kaynakları yükseltir; epoch cezaları ezberlenmiş kaynakları ağırlıklandırır. Ömür boyu çekimler kalıcıdır.
Birlikte: uyum sağlayan bir bandit (UCB1), güvenilir şekilde keşfeden (zar aşamaları), dürüst ödül sinyalleri alan (1000x ölçekleme), eğitim tasarımı önceliklerine saygı duyan (tabanlar) ve ezberlemeyi önleyen (epoch cezası).
Kaynak
ANDREA whitepaper, bölümler 3.5 & 3.6.