The spelled-out intro to language modeling: building makemore
| Istilah | Arti |
|---|---|
| makemore | Repositori buatan Karpathy yang belajar dari daftar nama lalu menghasilkan nama baru yang unik, dan dibangun ulang dari nol sepanjang seri ini. |
| bigram | Pasangan dua karakter berurutan, dan model bigram menebak karakter berikutnya hanya berdasarkan satu karakter sebelumnya. |
| negative log likelihood | Ukuran loss berupa rata-rata minus logaritma probabilitas yang diberikan model pada karakter yang benar, sehingga makin kecil nilainya makin baik model itu. |
| logits | Keluaran mentah neural net yang dianggap sebagai log hitungan, lalu dipangkatkan agar menyerupai hitungan dan dinormalkan menjadi probabilitas. |
| softmax | Langkah yang memangkatkan logits lalu membaginya dengan jumlahnya, sehingga keluaran jaringan menjadi bilangan positif yang totalnya satu seperti probabilitas. |
| probabilities | Peluang setiap karakter muncul berikutnya, yang diperoleh dengan menormalkan hitungan atau keluaran jaringan sehingga setiap baris berjumlah satu. |
| tensor | Larik angka berdimensi banyak di PyTorch, dipakai di video ini untuk menyimpan tabel hitungan bigram berukuran 27 kali 27 dan bobot jaringan. |
| broadcasting | Aturan PyTorch yang otomatis menyalin dimensi berukuran satu agar dua tensor berbeda bentuk bisa dioperasikan, dan bisa menimbulkan bug halus bila keepdim lupa diatur. |
| gradient | Nilai yang menunjukkan seberapa besar pengaruh setiap bobot terhadap loss, dipakai untuk menggeser bobot ke arah yang menurunkan loss. |
| micrograd | Library autograd kecil dari video Karpathy sebelumnya, yang dijadikan pembanding karena langkah forward pass, backward, dan update di sini hampir sama. |
| neural net | Model berisi bobot yang bisa dilatih, di video ini berupa satu lapisan linear 27 neuron yang menerima karakter dalam bentuk one-hot. |
| sampling | Proses membuat nama baru dengan mengambil karakter secara acak sesuai probabilitas model, satu per satu, sampai muncul token akhir. |
Video ini adalah awal seri makemore dari Andrej Karpathy, yang membangun model bahasa tingkat karakter langkah demi langkah. Makemore dilatih pada sekitar 32 ribu nama dari situs pemerintah dan belajar membuat nama baru yang terdengar mirip nama. Karpathy menjelaskan bahwa seri ini akan bergerak dari model bigram sederhana menuju MLP, RNN, hingga transformer setara GPT-2. Di video ini ia memulai dengan model bigram, yaitu model yang menebak karakter berikutnya hanya dari satu karakter sebelumnya. Model tersebut dibuat dengan dua cara, pertama dengan menghitung pasangan karakter lalu menormalkannya menjadi probabilitas, kedua dengan neural net yang dilatih memakai gradient descent. Pertanyaan utamanya adalah bagaimana melatih, mengambil sampel, dan menilai kualitas model bahasa dengan satu angka. Video ini penting karena kerangka yang dibangun di sini, yaitu logits, softmax, negative log likelihood, dan optimasi berbasis gradien, akan tetap sama ketika jaringan dibuat jauh lebih rumit sampai transformer.
Pada cara pertama, Karpathy menambahkan token titik sebagai penanda awal dan akhir nama, lalu menghitung semua bigram ke dalam tensor PyTorch berukuran 27 kali 27 dan menampilkannya dengan Matplotlib. Setiap baris dinormalkan menjadi probabilitas, dan nama baru diambil dengan torch.multinomial memakai generator berbenih agar hasilnya bisa diulang. Ia memperingatkan soal broadcasting, karena tanpa keepdim=True pembagian justru menormalkan kolom dan menghasilkan bug diam-diam. Kualitas model diukur dengan rata-rata negative log likelihood, yaitu sekitar 2,45 untuk seluruh data. Kata seperti "andrejq" memberi loss tak terhingga karena pasangan jq tidak pernah muncul, sehingga ia menambahkan satu hitungan palsu sebagai model smoothing. Pada cara kedua, karakter diubah menjadi vektor one-hot, dikalikan bobot W berukuran 27 kali 27 untuk menghasilkan logits, lalu diolah dengan softmax. Loss diturunkan lewat backward dan update seperti di micrograd, dan dengan sekitar 228 ribu bigram hasilnya kembali ke kisaran 2,45. Regularisasi yang mendorong W ke nol setara dengan smoothing, dan sampel dari kedua model ternyata identik.
Kata kunci
- makemore
- bigram
- negative log likelihood
- neural net
- Membangun model bahasa tingkat karakter (bigram) dengan makemore: dari tabel hitungan sampai probabilitas karakter berikutnya.
- Menghitung loss dengan negative log likelihood dan melatih neural net sederhana memakai gradient descent di PyTorch.
- Memahami logits, softmax, sampling nama baru, dan broadcasting pada tensor.
Tulis catatan pribadimu untuk modul ini. Catatan tersimpan di akunmu dan bisa dibuka dari perangkat mana pun.
