Lensa ML

Language Modeling

Langkah 1 dari 6: Apa Itu Language Model?

Memprediksi P(token berikutnya | konteks) pada satu vocabulary

Posisi dalam kalimat2
thecatsat→?P(kata berikutnya | konteks):4.6%the4.8%cat4.4%sat74.9%on2.7%mat2.0%dog1.6%ran1.6%big1.8%a1.6%is
Konteks
the cat sat
Berikutnya
on
P(next)
74.9%

Dengan konteks "the cat sat", model memprediksi P(token berikutnya). Kata berikutnya yang benar, "on", punya probabilitas tertinggi (74,9%). Setiap kata lain di vocabulary tetap kebagian porsi.

Geser Posisi dalam kalimat dari 0 sampai 4 untuk mengubah seberapa banyak bagian "the cat sat on the mat" yang sudah dilihat model. Dengan chain rule, prediksi token berikutnya juga memberi skor untuk kalimat utuh: P(the cat sat) = P(the) · P(cat | the) · P(sat | the cat). Sebelum ada neural network, model n-gram memperkirakan suku-suku ini dari hitungan dan hanya menyimpan n − 1 kata terakhir sebagai konteks. Bengio dkk. (2003) mengganti hitungan itu dengan neural network di atas word embedding, lalu Transformer memperpanjang konteksnya sampai ribuan token.

Langkah 2 dari 6: Autoregressive Generation

Setiap token hasil prediksi masuk lagi sebagai input untuk token berikutnya

Langkah generation0
theseluruh konteks (1 token)Modelbig→ masuk lagi sebagai konteks1/7 token
Langkah
1
Konteks
the
Prediksi
big

Generation dimulai dari seed token "the". Dengan satu token itu saja sebagai konteks, model memprediksi "big".

Geser Langkah generation dari 0 sampai 6 untuk menumbuhkan "the big cat sat on a mat" satu token demi satu. Setiap forward pass hanya menghasilkan satu token baru, jadi jawaban 500 token butuh 500 pass. Itu sebabnya balasan chatbot muncul kata demi kata. Agar tidak menghitung ulang seluruh prefix di setiap langkah, model menyimpan key dan value attention dari token sebelumnya di tempat yang disebut KV cache. Training tidak butuh perulangan ini: causal mask membuat model bisa memprediksi setiap posisi kalimat dalam satu pass paralel.

Langkah 3 dari 6: Training dengan Cross-Entropy

Loss yang mengajari model memberi probabilitas tinggi pada token yang benar

Confidence model pada token yang benar0.70
Target (one-hot):thecatsatonmatdogranbigaisPrediksi model:3.3%the3.3%cat70.0%sat3.3%on3.3%mat3.3%dog3.3%ran3.3%big3.3%a3.3%isCross-Entropy Loss = 0.357
Confidence
70%
CE loss
0.357
Entropy
1.832
Target
sat

Confidence sedang (70%): loss = 0.357. Loss masih menghitung probabilitas yang tidak diberikan ke "sat", dan training mendorong probabilitas itu naik.

Geser Confidence model pada token yang benar dari 0,05 sampai 0,95, lalu perhatikan loss-nya. Dengan target one-hot, cross-entropy menjadi −log p dari token yang benar: p = 0.05 berbiaya sekitar 3,0 nat, p = 0.5 berbiaya 0,69, dan p = 0.95 berbiaya 0,05. Model yang menebak merata pada vocabulary 10 kata ini membayar ln 10 ≈ 2.30 per token. Pretraining meminimalkan satu loss ini, dirata-ratakan pada triliunan token, dan Kaplan dkk. (2020) menemukan loss itu turun mulus mengikuti power law terhadap ukuran model, data, dan daya komputasi.

Langkah 4 dari 6: Temperature dan Sampling

Mengatur ketajaman distribusi probabilitas

Temperature1.00
softmax(logits / T), T = 1.0050.9%the20.7%cat15.3%sat4.2%on3.4%mat2.1%dog1.5%ran0.9%big0.6%a0.3%is
Temperature
1.00
Entropy
2.081
Prob. top-1
50.9%
Keragaman
Sedang

T = 1.00: temperature sedang. "the" paling diunggulkan, tetapi kata lain masih punya probabilitas yang berarti. Pada T=1.0, distribusinya persis seperti yang dipelajari model.

Geser Temperature dari 0,1 sampai 2,0 dan lihat batang-batangnya menajam dan mendatar. Logit dibagi T sebelum masuk softmax, p_i = exp(z_i / T) / Σ_j exp(z_j / T), jadi peringkat token tidak pernah berubah, hanya selisih di antaranya. Saat T mendekati 0, sampling berubah menjadi greedy decoding, dan saat T membesar, hasilnya mendekati pilihan yang merata. Temperature hanya bekerja saat generation. Weight hasil training, dan loss yang sudah dicapai model, tetap sama persis.

Langkah 5 dari 6: Top-k Sampling

Menyaring token berprobabilitas rendah supaya teks tidak kacau

Top-k3
Top-3 sampling: pertahankan 3 token paling mungkin58.6%the23.8%cat17.6%satonmatdogranbigaisMassa kumulatif:86.9%
Top-k
3
Massa tersisa
86.9%
Dibuang
7

Top-3: hanya 3 token paling mungkin yang dipertahankan (86,9% dari total massa). Token yang dicoret tidak akan pernah terpilih, jadi kata yang tidak mungkin tersingkir, tetapi hasilnya masih cukup beragam.

Geser Top-k dari 1 sampai 10 dan lihat token yang dipertahankan dinormalisasi ulang. Nilai k yang tetap punya kelemahan: saat model yakin, k = 40 tetap meloloskan kata sampah, dan saat banyak kata cocok, k = 3 membuang kata yang bagus. Nucleus sampling (top-p), dari Holtzman dkk. (2019), mempertahankan himpunan token terkecil yang jumlah probabilitasnya minimal p, sering kali 0,9, sehingga ukurannya mengikuti ketidakpastian model. Makalah yang sama menunjukkan bahwa greedy decoding dan beam decoding membuat teks berputar dan berulang, dan ini salah satu alasan model chat memakai sampling.

Langkah 6 dari 6: Perplexity

Mengukur seberapa 'terkejut' model oleh data

Kualitas model0.60
the54.2%0.61cat25.2%1.38sat33.9%1.08on51.3%0.67the55.4%0.59mat19.4%1.64P−log pavg −log p = 0.995 → PPL = e^0.995Perplexity = 2.71
Perplexity
2.7
Cross-entropy
0.995
Kualitas
60%
Vocab efektif
~3

Perplexity 2,7: model yang lumayan. Kata tugas ("the", "on") masih mendapat probabilitas tinggi, sedangkan kata isi ("cat", "mat") kurang pasti dan menyumbang sebagian besar loss.

Geser Kualitas model dari 0,1 sampai 0,95 dan lihat perplexity turun. Perplexity adalah e pangkat rata-rata cross-entropy, PPL = exp(−(1/N) Σ log p_i), yang setara dengan rata-rata geometrik dari 1/p pada semua token. Tebakan merata pada V token mendapat skor tepat V. Perplexity hanya bisa membandingkan model dengan tokenizer yang sama, karena memecah teks menjadi lebih banyak token yang lebih mudah akan menurunkannya. Pada benchmark WikiText-103, model GPT-2 terbesar mencapai perplexity sekitar 17,5 tanpa di-train pada dataset itu.

Apa itu language model?

Language model (model bahasa) adalah model yang memberi probabilitas pada setiap token berikutnya yang mungkin, berdasarkan token sebelumnya. Mengalikan probabilitas-probabilitas itu menghasilkan skor untuk satu kalimat utuh, dan mengambil sample darinya satu token demi satu menghasilkan teks baru. Model ini dilatih dengan membaca teks dalam jumlah besar dan meminimalkan cross-entropy pada setiap token berikutnya.

Model bahasa dipakai di autocomplete, pengenalan suara, terjemahan mesin, dan asisten chat seperti ChatGPT dan Claude, yaitu model bahasa Transformer berukuran besar yang di-fine-tune agar mengikuti instruksi. Untuk memprediksi kata berikutnya dengan baik, model butuh tata bahasa, fakta, dan sedikit penalaran. Karena itu, pretraining dengan satu tujuan ini menghasilkan model yang bisa diadaptasi untuk meringkas, menulis kode, menjawab pertanyaan, dan banyak tugas lain.

Ide utama

  • Model bahasa menghasilkan distribusi probabilitas atas token berikutnya, berdasarkan token sebelumnya.
  • Chain rule mengubah probabilitas token berikutnya menjadi probabilitas satu sequence utuh.
  • Generation bersifat autoregressive: setiap token hasil sampling ditambahkan ke konteks.
  • Training meminimalkan cross-entropy, yaitu −log p dari token berikutnya yang benar.
  • Temperature, top-k, dan top-p mengubah cara token dipilih, bukan apa yang dipelajari model.
  • Perplexity, yaitu eksponensial dari rata-rata cross-entropy, mengukur seberapa baik model memprediksi teks held-out.

Pertanyaan umum

Apa bedanya language model dan large language model?

Tujuannya sama. Large language model (LLM) adalah model bahasa, hampir selalu Transformer decoder-only, dengan miliaran parameter yang dilatih pada triliunan token. Asisten chat menambahkan training lanjutan dengan instruksi dan umpan balik manusia di atas model dasar itu.

Apa bedanya causal language modeling dan masked language modeling?

Causal language model memprediksi setiap token dari token sebelumnya. Model ala GPT bekerja seperti ini, dan cara inilah yang membuatnya bisa menghasilkan teks. Masked language model, seperti BERT, menyembunyikan sebagian token dan memprediksinya dari konteks di dua sisi. Model masked lebih baik sebagai encoder untuk tugas pemahaman, tetapi tidak bisa menghasilkan teks dari kiri ke kanan.

Kenapa model bahasa suka mengarang?

Tujuan training menghargai teks yang mungkin muncul dalam konteksnya, bukan teks yang benar. Saat model tidak punya fakta yang dibutuhkan, lanjutan yang lancar dan yakin tetapi salah masih bisa dinilai mungkin. Retrieval, pemakaian tool, dan training yang menghargai jawaban "saya tidak tahu" mengurangi masalah ini, tetapi tidak menghilangkannya.

Apa itu bits per character?

Ini cross-entropy yang diukur dalam bit (log basis 2) dan dibagi jumlah karakter, bukan jumlah token. Karena tidak bergantung pada tokenizer, ukuran ini adil untuk membandingkan model yang memecah teks dengan cara berbeda, sesuatu yang tidak bisa dilakukan perplexity per token.

Penjelasan terkait

Referensi

  1. Bengio et al. (2003), "A Neural Probabilistic Language Model", JMLR
  2. Holtzman et al. (2019), "The Curious Case of Neural Text Degeneration"
  3. Kaplan et al. (2020), "Scaling Laws for Neural Language Models"
  4. Jurafsky & Martin, "Speech and Language Processing" (3rd ed. draft)

Terakhir diperbarui