Seberapa Terkejutkah Model?
Dari Logits Ke Probabilitas
Setelah 12 blok transformer, ANDREA-120M menghasilkan vektor sebanyak vocab_size angka per posisi token: logits. Untuk ANDREA-120M, vocab_size = 8449, jadi setiap posisi menghasilkan 8449 logits. Logits adalah skor yang belum dinormalisasi; beberapa positif, beberapa negatif, tanpa batasan untuk menjumlahkan menjadi 1.
Softmax mengonversi logit menjadi distribusi probabilitas:
p_i = exp(logit_i) / sum_j exp(logit_j)
Setelah softmax, semua 8449 angka berada antara 0 & 1, dengan jumlah total 1. Model menetapkan probabilitas untuk setiap token berikutnya yang mungkin.
Cross-Entropy Loss
Pelatihan memerlukan fungsi loss: sebuah angka yang mengukur seberapa salah prediksi model untuk jawaban benar yang diberikan. Cross-entropy bekerja untuk pemodelan bahasa:
loss_t = -log(p_correct_token_t)
Ambil probabilitas prediksi model untuk token berikutnya yang sebenarnya (yang ada dalam data pelatihan). Ambil log negatif dari probabilitas tersebut. Itulah kerugian untuk satu posisi.
Mengapa Log Negatif
Tiga sifat membuat -log(p) menjadi fungsi kerugian yang alami:
- -log(1) = 0: Ketika model memprediksi token yang benar dengan keyakinan 100%, kerugian adalah nol.
- -log(0) = ∞: Ketika model memberikan probabilitas nol untuk token yang benar, kerugian tak terhingga. (Dalam praktik, softmax tidak pernah menghasilkan tepat 0; kerugian tetap terhingga tapi besar.)
- Monotonik: Saat probabilitas prediksi untuk token yang benar meningkat, kerugian menurun secara mulus.
Keyakinan lebih tinggi pada jawaban yang benar = kerugian lebih rendah. Tujuan pelatihan sederhana: maksimalkan probabilitas prediksi untuk token berikutnya yang sebenarnya.
Kerugian Per-Sequensi
ANDREA melatih pada sekuens dengan panjang 1024 (jendela konteks). Setiap sekuens menghasilkan 1024 prediksi token berikutnya. Kerugian sekuens dirata-ratakan di seluruh posisi:
```
sequence_loss = mean(-log(p_correct_t)) for t in 0..1023
```
Kemudian kerugian sekuens dirata-ratakan di seluruh batch (ANDREA-120M menggunakan batch_size = 8). Satu angka skalar per langkah pelatihan. Angka tersebut adalah yang diplot oleh kurva kerugian.
Menghitung Kerugian Untuk Satu Posisi
Perplexity = exp(loss)
Skala yang Lebih Ramah
Nilai loss seperti 2.0 atau 3.43 tidak langsung menyampaikan apa yang bisa dilakukan model. Perplexity menerjemahkan loss ke skala yang lebih intuitif:
perplexity = exp(loss)
Perplexity menjawab pertanyaan sederhana: di antara berapa banyak token yang sama-sama mungkin, model secara efektif memilih? Perplexity sebesar 7 berarti model berperilaku seolah-olah memilih dari 7 token berikutnya yang masuk akal di setiap posisi. Perplexity sebesar 1 berarti prediksi sempurna.
Pasangan Loss-Perplexity Umum
| Loss | Perplexity | Apa rasanya |
|---|---|---|
| 0.0 | 1.0 | Prediksi sempurna |
| 1.0 | 2.7 | Memilih di antara ~3 token yang masuk akal |
| 2.0 | 7.4 | Wilayah akhir SMMA ANDREA-12M |
| 3.0 | 20.1 | Teks yang masuk akal tetapi tidak pasti |
| 3.43 | 30.9 | Minimum ANDREA-120M v1 (sebelum dipoles) |
| 5.0 | 148 | Pelatihan awal, mempelajari distribusi kosa kata |
| 9.04 | 8449 | Baseline keacakan untuk kosa kata ANDREA-120M |
Perplexity memberikan konteks pada nilai loss: loss sebesar 2.0 berarti model secara efektif memilih dari ~7 token, bukan dari 8449.
Baseline Peluang Acak
Model yang tidak tahu apa-apa & menebak secara seragam memberikan probabilitas 1/V pada setiap token, di mana V = vocab_size:
p_uniform = 1 / V
loss = -log(1/V) = log(V)
Untuk ANDREA-120M dengan V = 8449:
loss_uniform = ln(8449) ≈ 9,04
Untuk ANDREA-12M dengan V = 2305:
loss_uniform = ln(2305) ≈ 7.74
Segala loss di atas garis dasar ini berarti model berkinerja lebih buruk daripada acak. Segala loss di bawahnya berarti model telah belajar sesuatu: ia memusatkan massa probabilitas pada subset token yang lebih kecil daripada distribusi seragam.
Membaca Nilai Loss
Penyamaran Noise Tingkat Langkah
Raw Loss Sangat Berisik
Loss per langkah berfluktuasi. Bandit ANDREA memilih sumber berbeda setiap 7-42 langkah; beberapa sumber (definisi kamus) menghasilkan loss mudah; yang lain (paragraf gutenberg) menghasilkan loss lebih sulit. Memplot raw step loss terhadap nomor langkah menghasilkan scatter yang kacau.
Rata-rata Bergerak Dimodifikasi yang Dihaluskan (SMMA) meredam kebisingan & mengungkap tren. Proxy pelatihan ANDREA menghitung SMMA sebagai:
SMMA[0] = loss[0]
SMMA[t] = (SMMA[t-1] * (N-1) + loss[t]) / N
Dengan N = 100 (jendela penghalusan default ANDREA), setiap nilai SMMA baru mencampur 99% dari SMMA sebelumnya dengan 1% dari kerugian langkah baru. Lonjakan mendadak terserap; pergeseran yang berkelanjutan muncul secara bertahap.
Mengapa Tidak Hanya Merata-ratakan?
Rata-rata bergerak sederhana selama 100 langkah terakhir memerlukan penyimpanan 100 nilai loss. SMMA menyimpan satu nilai (rata-rata berjalan) & satu konstanta (ukuran jendela). Hemat memori, komputasi sepele, & cukup halus untuk membaca kurva.
Bobot penghalusan yang berbeda menjawab pertanyaan yang berbeda:
- N = 10: melacak perubahan jangka pendek; berguna selama transisi fase
- N = 100: default ANDREA; melacak kemajuan jangka menengah
- N = 1000: hanya tren jangka panjang; berguna di akhir pelatihan
Apa yang Dilacak ANDREA
Setiap 100 langkah, proxy pelatihan menulis loss.json dengan SMMA saat ini, loss mentah, nomor langkah, & rincian per sumber. Dashboard di training.ai.unturf.com/dashboard mempolling file ini setiap 10 detik. Penonton eksternal melihat kemajuan langsung; dashboard hanya baca.
Kurva Aktual ANDREA-12M
Resep yang Mencapai SMMA 2.0
| Langkah | Rata-rata Loss | Catatan |
|---|---|---|
| 0--2.5K | 4.50 | Inisialisasi acak, pembelajaran awal |
| 2.5K--5K | 3.88 | Penurunan cepat melalui fase struktur |
| 5K--10K | 3.30 | Mendekati batas koherensi |
| 10K--20K | 2.80 | Bandit menemukan campuran optimal |
| 20K--25K | 2.40 | Plateau --- kekurangan data |
| 25K--30K | 2.50 | Data Hermes diperkenalkan + restart LR |
| 30K--35K | 2.35 | Hermes terintegrasi, titik terendah baru |
| 35K--40K | 2.10 | Fokus 4-arm, penurunan curam |
| 40K--43.6K | 2.00 | Wilayah pengetahuan, SMMA di bawah 2.0 |
Tiga fase menonjol:
1. Penurunan awal yang curam (0-10K). Loss turun dari 4.50 ke 3.30 saat model mempelajari distribusi kosa kata & struktur giliran dasar. Baseline peluang acak ln(2305) ≈ 7.74 berada jauh di atas kurva ini; model dengan cepat mengkonsentrasikan massa probabilitas setelah embedding stabil.
2. Plateau (20K-25K). Loss terhenti di 2.40. Bandit kehabisan ruang kepala pada campuran sumber saat ini. Data Hermes ditambahkan pada langkah 25K, ditambah restart hangat LR, memecah plateau.
3. Penurunan akhir (35K-43.6K). Kurikulum disempitkan dari 16 sumber menjadi 4 (hermes3-general + dictionary + gutenberg + chat). Penurunan loss lebih curam daripada bandit lengan penuh. SMMA akhir: 2.0.
ANDREA-120M v1: Kurva Peringatan
Perhitungan kosakata yang sama: ln(8449) ≈ 9.04. ANDREA-120M v1 mencapai SMMA 3.43 pada langkah 110K (minimumnya), kemudian menyimpang:
| Langkah | EMA Loss | Tren |
|---|---|---|
| 26K--40K | 4.29 | Konvergen |
| 70K--85K | 3.60 | Wilayah terbaik |
| 85K--110K | 3.43 | Minimum |
| 110K--125K | 3.54 | Divergen |
| 140K--155K | 4.05 | Divergen |
| 155K--165K | 4.54 | Kolaps |
Nilai loss yang wajar secara numerik sepanjang waktu (3.43 berada jauh di bawah baseline acak 9.04). Tetapi sampel mengalami kolaps pengulangan: Budy Budy Budy Budy. Loss menceritakan kisah yang menyesatkan; audit sampel tidak demikian.
Early stopping coherence-gated v2 (aktivitas 78) menambahkan sinyal paralel: keragaman bigram, keragaman trigram, kehadiran kata bahasa Inggris, keragaman karakter. Ketika semua empat skor tetap di bawah 30 selama 5 sampel berturut-turut, pelatihan otomatis berhenti. Sinyal ini akan menangkap v1 pada langkah 132K, menghemat 3,8 hari komputasi.
Apa yang Dikatakan Setiap Fase
Pelajaran 120M v1
Dua Sinyal Independen
ANDREA-120M v1 mencapai SMMA 3.43 pada langkah 110K. Secara numerik: 273× lebih baik daripada peluang acak (perplexity 31 vs ukuran kosa kata 8449). Terlihat bagus pada kurva.
Sampel pada langkah 110K::
''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Loss & koherensi adalah sinyal independen. Loss rendah berarti model mengonsentrasikan massa probabilitas secara efektif. Koherensi berarti model menghasilkan teks yang bisa dibaca manusia. Yang pertama tidak menyiratkan yang kedua.
Mengapa Celah Ini Ada
Model dapat menurunkan loss dengan:
1. Mempelajari pola bahasa nyata (baik): kesesuaian subjek-kata kerja, frasa umum, asosiasi faktual.
2. Menghafal artefak struktural (buruk): pola pengulangan frekuensi tinggi, keanehan khusus dataset, atraktor degeneratif.
Keduanya mengurangi loss. Yang pertama menghasilkan sampel yang disukai manusia. Yang kedua menghasilkan Budy Budy Budy Budy. Tujuan pelatihan saja tidak dapat membedakannya.
ANDREA-120M v3 Polish: Di Mana Loss & Koherensi Bertemu
Setelah pemolesan v3 (langkah 112K ke depan), ANDREA-120M menghasilkan:
Langkah 112.584, loss 0.30, ppl 1::
> [extinction prompt]
< laba-laba hitam montano masih hidup, parkit Carolina punah.
Kedua fakta benar. Parkit Carolina dinyatakan punah pada 1939; kera laba-laba hitam montano masih ada. Kerugian rendah (0.30) DAN penarikan fakta yang koheren.
Langkah 112.500, loss 1.94, ppl 7::
> Bagaimana cara menemukan paket yang sudah usang di proyek Python?
< Gunakan pip list --outdated names untuk melihat daftar paket pip...
Loss lebih tinggi (1.94 → ppl 7) tetapi alat yang tepat muncul dari data pelatihan. Kelancaran frasa masih berkembang pada tanda pelatihan 56%.
Disiplin Dua Sinyal
Pipeline pelatihan modern memantau KEDUANYA:
- Kurva loss. Memberi tahu Anda apakah model sedang belajar sesuatu secara kuantitatif.
- Audit sampel. Memberi tahu Anda apakah apa yang dipelajari model berguna.
v2 menambahkan coherence-gated early stopping (activity 78). Polesan v3 adalah gangguan kurikulum yang dipicu oleh audit sampel, bukan oleh nilai loss. Loss saja diperlukan tetapi tidak pernah mencukupi.