Belajar AI #6: Melatih Model — Loss Function, Gradient Descent, Epoch, dan Learning Rate

Episode ini adalah yang paling “matematika” sejauh seri ini, dan saya menulisnya sambil sedikit gemetar. Tapi ternyata inti dari melatih model bisa dijelaskan tanpa satu pun turunan yang ditulis lengkap — cukup dengan analogi yang familiar buat programmer: training itu optimasi parameter, dan semua istilah menakutkannya cuma bagian dari satu loop yang sama.

Loss function: mengukur seberapa salah

Sebelum bisa belajar, model butuh cara mengukur kesalahannya. Itu tugas loss function: fungsi yang menerima prediksi dan jawaban benar, lalu mengembalikan angka “seberapa buruk”. Prediksi pas dengan kunci jawaban? Loss mendekati nol. Melenceng jauh? Loss membengkak.

Dua contoh yang paling umum:

  • MSE (Mean Squared Error) — untuk regresi. Rata-rata kuadrat selisih prediksi vs kenyataan. Dikuadratkan supaya error besar dihukum jauh lebih berat.
  • Cross-entropy — untuk klasifikasi. Menghukum prediksi yang percaya diri tapi salah.

Analogi programmer: loss function itu seperti assertion di test suite — dia yang menentukan lulus atau tidaknya. Bedanya, kita tidak berhenti di lulus/gagal, tapi menghitung seberapa jauh dari lulus.

Gradient descent: turun gunung dalam gelap

Sekarang pertanyaan besarnya: kalau loss mengukur kesalahan, siapa yang memperbaiki parameter? Jawabannya gradient descent, dan analogi klasiknya masih terbaik yang pernah saya baca: kita berdiri di lereng gunung berkabut, ingin mencapai lembah (loss minimum). Kabut tebal — tidak bisa lihat peta. Yang bisa dilakukan: meraba kemiringan tanah di bawah kaki, lalu melangkah ke arah yang paling menurun. Ulangi ribuan kali.

“Meraba kemiringan” itulah gradien — arah penurunan loss terhadap tiap parameter. Framework seperti PyTorch menghitungnya otomatis lewat diferensiasi otomatis; kita tidak perlu menurunkan rumus manual. Loop pelatihannya secara konsep sesederhana ini:

for epoch in range(epochs):
    y_pred = model(X_train)          # 1. forward pass
    loss = loss_fn(y_pred, y_train)  # 2. hitung loss
    optimizer.zero_grad()            # 3. reset gradien
    loss.backward()                  # 4. hitung gradien
    optimizer.step()                 # 5. update bobot

Lima baris ini adalah seluruh deep learning pada dasarnya. Forward, ukur, mundur, geser. Ulangi.

Epoch: berapa kali membaca buku yang sama

Satu epoch = satu putaran penuh model melewati seluruh data latih. Seperti membaca ulang buku yang sama: sekali belum tentu hafal, sepuluh kali mulai nempel, seratus kali malah hafal kata per kata tanpa paham (ini overfitting — bahas tersendiri nanti). Terlalu sedikit epoch, model belum belajar; terlalu banyak, dia menghafal.

Learning rate: seberapa besar langkah

Learning rate menentukan panjang langkah tiap update bobot. Ini hyperparameter paling sensitif yang saya temui sejauh ini:

  • Terlalu besar — langkah melompati lembah, loss naik-turun liar atau malah divergen.
  • Terlalu kecil — progres nyaris tidak terasa, training makan waktu berjam-jam untuk hasil biasa saja.
  • Pas — loss turun stabil lalu melandai.
IstilahAnalogiRisiko salah setting
Loss functionAssertion di test suiteMengukur hal yang salah
Gradient descentTurun gunung berkabutTerjebak di titik tinggi
EpochBaca ulang bukuUnderfit / overfit
Learning ratePanjang langkahDivergen / lambat sekali

Catatan untuk diri sendiri

Kesulitan terbesar saya: dulu menganggap training sebagai kotak hitam ajaib. Setelah memecahnya jadi lima langkah di loop di atas, rasa takutnya hilang. Saran praktis kalau baru mulai: plot kurva loss per epoch. Grafik itu adalah “kamera” satu-satunya ke dalam proses training — naik berarti learning rate kebesaran, datar berarti terlalu kecil atau model salah arsitektur.

Sumber

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses