Üstel Hareketli Ortalama
Yumuşatılmış Yakın Ortalama
Üstel hareketli ortalama (EMA), eski örneklerden daha fazla ağırlık vererek son örnekleri ağırlıklandırarak bir değeri izler, ağırlıklar üstel olarak azalır. Formül:
EMA(t) = (1 - alpha) EMA(t-1) + alpha value(t)
Alpha (yumuşatma faktörü) (0, 1) aralığında yer alır. ANDREA, kaynak başına kayıp takibi için alpha = 0.1 kullanır.
Terim Terim
- value(t): en son gözlem. ANDREA için bu, kaynak k'dan bir belgede ileri geçişten sonra CUDA tarafından raporlanan kayıptır.
- EMA(t-1): kaynak k için önceki EMA değeri. Proxy durumunda saklanır.
- alpha = 0.1: her yeni kayıp %10 katkıda bulunur; yuvarlanan geçmiş %90 katkıda bulunur.
- (1 - alpha) = 0.9: geçmişe verilen ağırlık.
Neden EMA, Basit Ortalama Yerine
Basit hareketli ortalama her adımı eşit ağırlıklandırır. Adım 1 ile adım 100.000 aynı ağırlığa sahiptir. Bu, veriler durağansa işe yarar. ANDREA'nın kayıpları durağan DEĞİLDİR: eğitim sırasında model kapasitesi büyür, bu yüzden bir kaynağın 5.000. adım kayıbı 50.000. adımdaki kayıptan farklıdır.
EMA bunu çözer. Eski kayıp değerleri üstel olarak soluklaşır. EMA, son durumu yansıtır, başlangıç koşullarının ortalamasını değil.
Kaynak Bazında
ANDREA, her kol (her kaynak) için bir EMA tutar. On altı kol = on altı EMA. Her adımda sadece çekilen kaynağın EMA'sı güncellenir. Diğer 15 EMA, bir sonraki çekilene kadar donmuş kalır.
EMA Adımını Hesapla
Ödül Formülü
Ödül = İyileşme, Ölçeklenmiş
ANDREA, kol k için adım başına ödülü şu şekilde tanımlar:
reward_k = max(0, EMA_k(t-1) - loss_k(t)) * 1000
Üç parça:
1. EMA_k(t-1) - loss_k(t): iyileşme. Yeni kayıp, çalışan ortalamanın altında gelirse fark pozitif olur: kaynak k beklenenden daha iyi performans gösterdi.
2. max(0, ...): negatif iyileşmeleri sıfıra kes. Yeni kayıp EMA'dan kötüyse ödül yok (ama ceza da yok).
3. \* 1000: sinyali UCB keşif bonusuyla karşılaştırılabilir hale getirmek için ölçeği büyüt.
Neden max(0, ...)
Negatif ödüller mean_reward(k)'yı aşağı çeker, UCB'yi kayıpları yukarı dalgalanan kollara karşı önyargılı hale getirirdi. Ama dalgalanma normaldir: tek bir zor belge kaybı artırır ama kaynağın kötü olduğu anlamına gelmez. Sıfıra kesme, dalgalanmayı 'ceza' yerine 'bilgi yok' olarak ele alır.
Kaynaklar tekrar tekrar sıfır ödül kazanabilir olmadan batmadan. UCB sıralamaları keşif bonusu (n_k küçükken yüksek) artı geçmiş kazanımlarla yönlendirilir.
CUDA Ne Bildiriyor
Her forward+backward geçişinde, CUDA çekirdeği bir kayıt yayar:
{source: 'hermes3-general', doc_index: 4231, loss: 4.520}
Proxy kaydı alır, o kaynak için EMA'yı arar, ödülü hesaplar, EMA'yı günceller, ödülü bandit'in mean_reward(k) biriktiricisine besler.
Bir Ödül Hesapla
Ödülü Keşif Bonusuyla Eşleştirme
Büyüklük Sorunu
Adım başına loss iyileşmeleri küçük olur. Loss 4.521'den 4.520'ye düşer: fark 0.001. 4.520'den 4.518'e: fark 0.002. Tüm bir eğitim çalışmasında ham farklar kabaca [0, 0.01] aralığında yaşar.
Şimdi UCB'nin C=0.5'deki keşif bonusuna bakın, N=1000 ve n_k=20 ile:
0.5 sqrt(ln(1000) / 20) = 0.5 sqrt(6.91 / 20) = 0.5 * 0.588 = 0.294
Bonus 0.294 seviyesinde çalışıyor. Ham ödül 0.001 seviyesinde çalışıyor. Bonus, ödülden 300 kat daha büyük. UCB'nin argmax'ı neredeyse tamamen bonus'a göre sıralıyor; mean_reward neredeyse sıfır sinyal sağlıyor.
Ölçeklendirme olmadan sonuç: ANDREA'nın banditi her adımda en küçük n_k'ya sahip kolu seçiyor. Mean_reward yok sayılıyor. Bandit saf bir keşif politikasına dönüşüyor.
Düzeltme: 1000x
Ham ödülü 1000 ile çarpın. Artık ödül 1.0 seviyesinde (ham 0.001'e karşı). Aynı keşif bonusu 0.294 ile karşılaştırın:
ölçeklenmiş ödül 1.0 vs bonus 0.294 = ödül 3.4x önde
Şimdi mean_reward UCB sıralamasını domine ediyor. Keşif, kuyruğa incelik katıyor (nadir kollar 0.3 artış alıyor), ancak sıralamanın gövdesi gözlemlenen ödülden geliyor.
Neden 1000 (Ve Değil 10, Ve Değil 100.000)
Büyüklük sırası eşleştirme. Ham ödüller ~10^-3 civarında çalışır. Keşif bonusu ~10^0 civarında çalışır. Aradaki fark 10^3'tür. Ham ödülü 10^3 ile çarpın ki bonusun aynı aralığına düşsün.
100x ölçekleme ödülü 0.1'de bırakır (hala 0.294 bonusun altında -> keşif hala baskın). 100.000x ölçekleme ödülü 100'e çıkarır (artık keşif hiçbir şeyi etkilemez; UCB açgözlü mean_reward'a çöker). 1000x her iki terimin de katkıda bulunduğu çalışma bölgesinde yer alır.
Kalibrasyon, Teori Değil
1000x faktörü teorik bir sabit değil, mühendislik kalibrasyonudur. Üç şeye bağlıdır: eğitim kaybı ölçeği (8K tokenlik bir kelime haznesinde çapraz-entropi ~4.5 civarında çalışır), adım başına kayıp azalma oranı (yavaş) ve UCB sabiti C=0.5. Bunlardan herhangi birini değiştirin, 1000 artık doğru çarpan olmayabilir.
Ölçekleme Faktörü Hakkında Akıl Yürütme
Sırada Ne Var
Elinizdekiler
Ödül atfetme, CUDA'nın kayıp raporlarını UCB'ye hazır sinyale üç işlemde dönüştürür: kaynak başına EMA kayıp geçmişini izler (alpha=0.1, yavaş), reward = max(0, EMA - loss) negatifleri kırpar, & 1000x ölçekleme ödül büyüklüğünü UCB keşif bonusu büyüklüğüne eşleştirir.
Geriye Kalan Ne?
Zeminler & epoch cezaları (etkinlik 79) UCB çıktısının üzerine çalışır. Kaynak zeminleri, UCB sıralamasından bağımsız olarak öncelikli kaynaklar için minimum örnekleme garanti eder. Epoch cezaları, belgelerinden daha fazla kez çekilmiş kaynakları ağırlıklandırır düşürür, küçük veri setlerinin ezberlenmesini önlerken büyük veri setleri taze kalır.
Kaynak
ANDREA whitepaper, bölüm 3.3.