Lensa ML

Cara Kerja Loss Function

Langkah 1 dari 6: Prediksi vs Kenyataan

Network menebak, loss mengukur seberapa salah tebakannya

Prediksi0.60Aktual0.85error: 0.25
Atur prediksiprediksi = 0.60
Error
0.250
Loss (kuadrat)
0.0625

Loss function mengukur seberapa jauh prediksi network dari nilai sebenarnya. Di sini nilai sebenarnya 0,85. Lihat error dan kuadratnya mengecil saat prediksi bergerak mendekatinya.

Geser slider prediksi dari 0 sampai 1. Pada prediksi awal 0,6, error-nya 0,25 dan loss kuadratnya 0,0625. Istilahnya berbeda-beda, tetapi loss biasanya merujuk ke satu contoh dan cost ke rata-rata atas sebuah dataset atau batch, dan cost inilah yang diminimalkan optimizer. Loss kuadrat mencapai nol hanya saat prediksi tepat 0,85. Kemiringannya juga nol di titik itu, jadi training berbasis gradient melambat secara halus saat prediksi makin dekat.

Langkah 2 dari 6: Mean Squared Error

Kesalahan dikuadratkan supaya error besar lebih terasa

xy0.10.40.40.51.00.41.3y = 1.30x + 0.80
MSE = (1/n) Σ (yᵢ − ŷᵢ)²
= (0.1² + 0.4² + 0.4² + 0.5² + 1.0² + 0.4² + 1.3²) / 7
= (0.0 + 0.2 + 0.2 + 0.3 + 1.0 + 0.2 + 1.7) / 7
= 3.43 / 7 = 0.490
Kemiringan1.30
Intercept0.80

MSE menguadratkan setiap residual supaya error besar dihukum jauh lebih berat daripada yang kecil. Kotak merah muda menggambarkan tiap kuadrat error sebagai luas. Atur kemiringan dan intercept untuk memperkecil total luasnya.

Geser Kemiringan (0,30 sampai 2,20) dan Intercept (−3 sampai 5) untuk memperkecil kotaknya. Garis awal 1.3x + 0.8 punya MSE 0,490. Garis terbaik untuk tujuh titik ini kira-kira 1.45x + 0.79, dengan MSE 0,057. Karena error dikuadratkan, satu residual sebesar 10 menambah sebanyak seratus residual sebesar 1, sehingga satu outlier bisa menyeret seluruh garis. MSE adalah loss yang wajar saat noise-nya berdistribusi Gaussian: meminimalkannya sama dengan maximum likelihood di bawah asumsi itu.

Langkah 3 dari 6: Binary Cross-Entropy

Loss function untuk keputusan ya atau tidak

probabilitas prediksi (p)loss— -log(p)— -log(1-p)loss = 0.357
Probabilitas prediksip = 0.70

Binary cross-entropy memakai -log(p) saat labelnya 1 dan -log(1-p) saat labelnya 0. Prediksi yang yakin tetapi salah menghasilkan loss yang sangat besar, sehingga network terdorong untuk memperbaiki diri.

Ganti label benar antara 1 dan 0, lalu geser probabilitas prediksi. Rumus lengkapnya L = −[y log p + (1 − y) log(1 − p)], dan hanya satu suku yang aktif untuk tiap label. Pada p = 0.7, loss-nya 0,357 saat labelnya 1 dan 1,204 saat labelnya 0. Pada p = 0.01 dengan label 1, loss mencapai 4,61. Framework biasanya menghitungnya dari logit mentah, seperti BCEWithLogitsLoss di PyTorch, untuk menghindari log(0) saat sigmoid jenuh.

Langkah 4 dari 6: Categorical Cross-Entropy

Perluasan ke banyak kelas

LogitSoftmaxProbabilitasKucing2.51.0 / 1.40.73673.6%← benarAnjing1.00.2 / 1.40.16416.4%Burung0.50.1 / 1.40.10010.0%Loss = −log(p_true)= −log(0.7361)= 0.3064
Logit Kucing2.5
Logit Anjing1.0
Logit Burung0.5

Categorical cross-entropy hanya peduli pada probabilitas yang diberikan ke kelas yang benar. Loss-nya -log(p_true), jadi pembagian sisa probabilitas ke kelas-kelas yang salah tidak berpengaruh.

Pilih kelas yang benar dengan tombol Benar, lalu geser ketiga slider logit. Logit awal 2,5, 1,0, dan 0,5 memberi Kucing 73,6%, Anjing 16,4%, dan Burung 10,0%. Loss-nya 0,306 jika Kucing yang benar, 1,806 untuk Anjing, dan 2,306 untuk Burung. Model yang menebak merata atas K kelas punya loss ln K, sekitar 1,10 di sini dan 6,91 untuk 1.000 kelas ImageNet. Ini bisa menjadi sanity check cepat untuk model yang belum dilatih. Label smoothing mengganti target one-hot dengan, misalnya, 0,9 untuk kelas yang benar.

Langkah 5 dari 6: Loss Landscape

Medan berisi puncak dan lembah

w1w2min
Loss:
<0.5
0.5–1.5
1.5–3
3–5
5–8
8–12
12–18
≥18
w13.00
w22.50
Loss
13.13
Gradient
6.67

Loss landscape adalah medan yang setiap titiknya mewakili satu set weight, dan tingginya adalah nilai loss. Panah kuning menunjukkan arah penurunan paling curam, yaitu arah gerak gradient descent berikutnya.

Geser w1 dan w2 di antara −3,5 dan 3,5. Permukaan ini adalah L = (w1 − 1)² + (w2 + 0.5)² + 0.5 sin(2w1) sin(2w2): mangkuk berpusat di (1, −0.5) dengan riak di atasnya. Titik awal (3, 2.5) punya loss 13,13. Titik terendahnya di dekat (0.9, −0.64), dengan loss sekitar −0,44. Suku sinus membuatnya bisa turun di bawah nol, hal yang tidak pernah terjadi pada MSE dan cross-entropy. Permukaan loss network sungguhan punya jutaan dimensi dan hanya bisa digambar di sepanjang satu atau dua arah pilihan.

Langkah 6 dari 6: Loss Menuntun Proses Belajar

Gradient mengalir dari loss kembali melewati network

1. Forward Pass
2. Hitung Loss
3. Backward Pass
LInputHiddenOutputLossdata mengalir ke depan →

Forward pass: data mengalir melewati network untuk menghasilkan prediksi. Loss mengukur error, lalu gradient mengalir ke belakang dan memberi tahu tiap weight cara menyesuaikan diri. Siklus ini berulang ribuan kali selama training.

Lihat animasinya berputar melalui Forward Pass, Hitung Loss, dan Backward Pass. Loss yang diminimalkan sering terdiri dari lebih dari satu bagian. Weight decay, misalnya, menambahkan λ‖w‖² ke loss data, sehingga model menanggung biaya untuk weight besar selain untuk jawaban salah. Loss untuk training juga berbeda dari metrik yang dilaporkan: model klasifikasi meminimalkan cross-entropy, tetapi dinilai dengan akurasi atau F1. Memantau loss pada data validasi held-out menunjukkan kapan model mulai overfit.

Apa itu loss function dalam machine learning?

Loss function mengukur seberapa salah prediksi model dalam satu angka. Fungsi ini membandingkan prediksi dengan nilai yang benar, lalu mengembalikan 0 untuk jawaban sempurna dan nilai yang lebih besar untuk jawaban yang lebih buruk. Melatih model berarti menyesuaikan parameternya supaya rata-rata loss pada data training sekecil mungkin.

Loss adalah satu-satunya sinyal yang dilihat optimizer, jadi pilihan loss menentukan apa yang dipedulikan model saat belajar. Model regresi biasanya memakai mean squared error atau mean absolute error. Model klasifikasi memakai binary cross-entropy atau categorical cross-entropy, dan model bahasa dilatih dengan cross-entropy atas token berikutnya. Tugas khusus menambahkan loss sendiri, seperti focal loss untuk object detection atau contrastive loss untuk embedding.

Ide utama

  • Loss function mengubah selisih antara prediksi dan kebenaran menjadi satu angka.
  • Training menyesuaikan parameter untuk meminimalkan rata-rata loss pada data.
  • MSE menguadratkan error, sehingga error besar dan outlier mendominasinya.
  • Cross-entropy adalah −log dari probabilitas yang diberikan ke kelas yang benar.
  • Prediksi yang yakin tetapi salah mendapat loss cross-entropy yang sangat besar.
  • Gradient dari loss memberi tahu tiap weight ke arah mana harus bergerak.

Pertanyaan umum

Kenapa tidak langsung melatih model dengan akurasi?

Akurasi berubah secara melompat: perubahan kecil pada weight biasanya tidak mengubah satu prediksi pun, sehingga gradient-nya nol hampir di semua tempat. Gradient descent tidak mendapat arah dari situ. Cross-entropy berubah secara halus mengikuti setiap probabilitas, dan menurunkannya cenderung menaikkan akurasi.

Kapan MAE lebih baik daripada MSE?

Pakai MAE kalau data punya outlier yang tidak boleh mendominasi training. Meminimalkan MSE memprediksi rata-rata target, sedangkan meminimalkan MAE memprediksi median, yang nyaris tidak bergeser karena outlier. Huber loss berperilaku seperti MSE untuk error kecil dan seperti MAE untuk error besar.

Loss function apa yang cocok untuk kelas yang tidak seimbang?

Weighted cross-entropy mengalikan loss tiap kelas dengan sebuah bobot, sering kali berbanding terbalik dengan seberapa umum kelas itu. Focal loss mengecilkan loss pada contoh yang sudah dijawab benar oleh model, sehingga training berfokus pada contoh yang langka dan sulit. Focal loss diperkenalkan untuk object detection, tempat jumlah kotak latar belakang jauh melebihi objek.

Kenapa training loss turun sementara validation loss naik?

Model sedang overfitting: ia menghafal detail contoh training yang tidak berlaku pada data baru. Perbaikan yang umum adalah menghentikan training di validation loss terendah, menambahkan regularization seperti weight decay atau dropout, serta mengumpulkan lebih banyak data atau memakai data augmentation.

Penjelasan terkait

Referensi

  1. Goodfellow, Bengio & Courville (2016), "Deep Learning", section 6.2.1: Cost Functions
  2. Li et al. (2018), "Visualizing the Loss Landscape of Neural Nets"
  3. Szegedy et al. (2016), "Rethinking the Inception Architecture for Computer Vision" (label smoothing)
  4. Lin et al. (2017), "Focal Loss for Dense Object Detection"

Terakhir diperbarui