Machine Learning 101 — AI Web

Machine Learning untuk Web Developer Kamu tidak perlu jadi ML engineer, tapi memahami konsep dasar membantu memilih solusi yang tepat. Tipe Machine Learning…

Machine learning adalah cara bikin program yang aturannya gak kamu tulis sendiri: program itu mencarinya dari contoh. Bayangin kamu baru pindah kota dan naik ojek lima kali. Gak ada yang kasih tahu tarifnya, tapi dari lima perjalanan itu kamu bisa menebak aturannya: sekian rupiah per kilometer, plus biaya awal. Menebak aturan dari contoh itu namanya training. Memakai aturan yang sudah ketemu untuk perjalanan keenam namanya inference.

🧪 Tebakan cepat: sebuah model memberi kata " ada" peluang 61,9% sebagai kata berikutnya. Kalau temperature diturunkan dari 1 ke 0,2, peluangnya jadi berapa: tetap 61,9%, sekitar 86%, atau 99,3%? Tebak dulu, jawabannya ada di bagian "Temperature: seberapa berani memilih".

Training: model mencari aturannya sendiri

Toko Buku mau menebak berapa eksemplar terjual dari berapa kali halaman bukunya dilihat. Ini datanya (angka contoh untuk belajar, bukan data penjualan asli):

Dilihat (ratus kali), x 1 2 3 4 5
Terjual (eksemplar), y 2 3 5 6 8

Model kita cuma satu rumus garis: prediksi = w × x + b. Angka w dan b disebut parameter (atau bobot). Awalnya keduanya 0. Training mengubahnya sedikit demi sedikit supaya loss, rata-rata kuadrat selisih prediksi dan jawaban asli, makin kecil:

const data = [[1, 2], [2, 3], [3, 5], [4, 6], [5, 8]];
let w = 0;
let b = 0;
const lr = 0.05; // learning rate: seberapa besar tiap langkah

function loss() {
  return data.reduce((s, [x, y]) => s + (w * x + b - y) ** 2, 0) / data.length;
}

for (let langkah = 1; langkah <= 500; langkah++) {
  let gw = 0;
  let gb = 0;
  for (const [x, y] of data) {
    const selisih = w * x + b - y;
    gw += (2 * selisih * x) / data.length; // arah perubahan loss kalau w naik
    gb += (2 * selisih) / data.length; // arah perubahan loss kalau b naik
  }
  w -= lr * gw; // geser berlawanan arah supaya loss turun
  b -= lr * gb;
}
console.log(w.toFixed(2), b.toFixed(2), loss().toFixed(2)); // 1.50 0.30 0.06

Jalannya training, dihitung beneran dengan kode di atas:

Langkah w b Loss
0 0 0 27,6
1 1,74 0,48 0,99
2 1,42 0,39 0,093
10 1,475 0,390 0,0615
200 1,499 0,304 0,0600
500 1,500 0,300 0,0600

Hasilnya prediksi = 1,5 × x + 0,3. Loss gak sampai 0 karena titik-titiknya memang gak segaris sempurna.

Supervised dan unsupervised

Data kita punya jawaban untuk tiap contoh (kolom terjual). Jawaban itu disebut label, dan belajar dari data berlabel disebut supervised learning. Kalau datanya gak punya label, misalnya riwayat belanja pelanggan tanpa keterangan apa pun, model hanya bisa mencari pola sendiri, misalnya mengelompokkan pelanggan yang suka novel sejarah. Itu unsupervised learning.

Inference: memakai model yang sudah jadi

Setelah training, w dan b dibekukan. Menebak penjualan untuk 600 kali dilihat cukup satu hitungan: 1,5 × 6 + 0,3 = 9,3 eksemplar. Itu inference: murah dan cepat.

Model bahasa besar sama, cuma jauh lebih besar. Training-nya memakai teks dalam jumlah sangat besar, ribuan GPU, dan waktu berbulan-bulan, dan itu dikerjakan provider. Waktu kamu memanggil API, kamu cuma menjalankan inference: parameternya gak berubah, dan model gak belajar dari percakapanmu.

LLM: menebak token berikutnya

LLM (Large Language Model) adalah model deep learning, yaitu jaringan saraf dengan miliaran parameter seperti w dan b, yang dilatih pada teks dalam jumlah sangat besar sampai bisa memahami dan menghasilkan bahasa. Kerjanya berulang: lihat teks sejauh ini, tebak potongan berikutnya, tambahkan, ulangi.

Potongan itu disebut token: bisa satu kata, bagian kata, atau tanda baca. Dengan tokenizer o200k_base milik OpenAI (dipakai GPT-4o; model lain bisa memotong sedikit beda), Stok Laskar Pelangi masih ada? jadi 9 token: St ok L askar Pel angi masih ada ?. Kata ketersediaan jadi 4 token, sedangkan availability cuma 1. Teks bahasa Indonesia sering butuh lebih banyak token, dan biaya API dihitung per token.

Untuk Stok Laskar Pelangi masih, model memberi tiap kandidat token berikutnya sebuah skor mentah, namanya logit. Tabel ini ilustrasi: logit-nya kami karang supaya hitungannya bisa diikuti, bukan diambil dari model asli. Persentasenya dihitung beneran dari logit itu:

Kandidat Logit Peluang (temperature 1)
ada 4,0 61,9%
tersedia 3,0 22,8%
12 2,0 8,4%
banyak 1,5 5,1%
habis 0,5 1,9%

Temperature: seberapa berani memilih

Logit diubah jadi peluang dengan softmax, setelah dibagi dulu dengan temperature:

function softmax(logits, temperature) {
  const z = logits.map((l) => l / temperature);
  const max = Math.max(...z); // dikurangi max supaya Math.exp gak meledak
  const e = z.map((v) => Math.exp(v - max));
  const total = e.reduce((a, c) => a + c, 0);
  return e.map((v) => v / total);
}

console.log(softmax([4, 3, 2, 1.5, 0.5], 0.2).map((p) => (p * 100).toFixed(1)));
// [ '99.3', '0.7', '0.0', '0.0', '0.0' ]
Kandidat T = 0,2 T = 1 T = 1,5
ada 99,3% 61,9% 48,5%
tersedia 0,7% 22,8% 24,9%
12 0,0% 8,4% 12,8%
banyak 0,0% 5,1% 9,2%
habis 0,0% 1,9% 4,7%

Di temperature 0,2, ada jadi 99,3%. Itu jawaban tebakannya. Temperature kecil membuat yang sudah unggul makin unggul; temperature besar meratakan peluang.

Model gak selalu mengambil kandidat teratas. Dia mengambil sampel sesuai peluangnya: di temperature 1, ada keluar sekitar 6 dari 10 kali, sisanya kata lain. Itu sebabnya pertanyaan yang sama bisa dapat jawaban berbeda. Temperature rendah bikin jawaban lebih konsisten, tapi provider gak menjanjikan hasil yang persis sama setiap kali.

Per Oktober 2026, panduan "Using GPT-6" dari OpenAI menulis: temperature hanya boleh dikirim kalau reasoning effort-nya none. Model yang "berpikir" dulu sebelum menjawab gak menerima parameter itu.

⚠️ Jebakan yang sering ketemu

TL;DR: Machine learning mencari aturan dari contoh. Training mengubah parameter (w, b) langkah demi langkah supaya loss turun: data contoh Toko Buku menghasilkan prediksi = 1,5 × x + 0,3, loss 0,06. Inference memakai parameter yang sudah beku: 600 kali dilihat jadi 9,3 eksemplar. Supervised belajar dari data berlabel, unsupervised mencari pola tanpa label. LLM adalah model deep learning yang dilatih pada teks sangat banyak dan menebak token berikutnya berulang-ulang; token bisa kata atau bagian kata, dan bahasa Indonesia sering butuh lebih banyak token. Softmax mengubah logit jadi peluang setelah dibagi temperature: kecil (0,2) hampir selalu memilih yang teratas (99,3%), besar meratakan pilihan. Model mengambil sampel, jadi jawabannya bisa beda-beda. Memanggil API cuma inference: model gak belajar dari percakapanmu.

Yang akan kamu pelajari