Apa itu backpropagation?
Backpropagation adalah algoritma yang menghitung, untuk setiap weight di neural network, seberapa besar loss akan berubah kalau weight itu sedikit diubah. Besaran itu disebut gradient milik weight tersebut. Backprop menerapkan chain rule dari output layer mundur ke arah input dan memakai ulang hasil antara, sehingga satu backward pass menghasilkan gradient semua weight. Setelah itu, optimizer seperti gradient descent memakai gradient tersebut untuk memperbarui weight.
Metode ini dipopulerkan untuk neural network oleh Rumelhart, Hinton, dan Williams pada 1986, melanjutkan karya sebelumnya tentang reverse-mode differentiation. Semua framework deep learning modern, termasuk PyTorch dan JAX, menjalankan versi umumnya secara otomatis.
Ide utama
- Backprop menghitung gradient dari loss terhadap setiap weight.
- Backprop menerapkan chain rule per layer, dari output mundur ke input.
- Satu backward pass, dengan biaya kira-kira dua kali forward pass, menghasilkan semua gradient sekaligus.
- Gradient sebuah weight bergantung pada sinyal error yang sampai ke neuron-nya dan pada input yang dibawanya.
- Gradient bisa mengecil saat melewati banyak layer ke belakang (vanishing gradient).
- Backprop mencari gradient, sedangkan optimizer menentukan cara memakainya.
Pertanyaan umum
Apakah backpropagation sama dengan gradient descent?
Tidak. Backpropagation menghitung gradient. Gradient descent, atau optimizer lain seperti Adam, memakai gradient itu untuk mengubah weight. Backprop bisa dipasangkan dengan banyak optimizer yang berbeda.
Kenapa disebut backpropagation?
Sinyal error berawal dari output, tempat loss diukur, lalu dirambatkan mundur melewati network satu layer demi satu layer. Nama lengkapnya backward propagation of errors.
Bagaimana ReLU mengubah backpropagation?
Turunan ReLU bernilai 1 untuk input positif dan 0 untuk input negatif. Gradient melewati neuron yang aktif tanpa mengecil, dan ini membantu training network yang dalam. Namun, neuron yang negatif untuk semua input berhenti menerima gradient. Kegagalan ini disebut dead ReLU.
Kenapa backpropagation memakai banyak memori?
Backward pass membutuhkan aktivasi yang dihitung saat forward pass, jadi aktivasi itu disimpan di memori sampai gradient selesai dihitung. Kebutuhan memori bertambah seiring kedalaman network dan batch size. Gradient checkpointing menguranginya dengan hanya menyimpan sebagian aktivasi dan menghitung ulang sisanya saat backward pass.
Penjelasan terkait
- Chain Rule · Cara turunan tersusun melalui layer
- Gradient Descent · Optimasi dengan mengikuti kemiringan ke bawah
- Loss Function · Cara network mengukur kesalahannya
- Vanishing dan Exploding Gradient · Kenapa deep network sulit dilatih dan cara mengatasinya
- Optimizer · SGD, momentum, dan Adam: gradient descent yang lebih cerdas
- Neural Network · Cara neuron dan layer mengenali gambar
Referensi
- Rumelhart, Hinton & Williams (1986), "Learning representations by back-propagating errors", Nature
- Baydin et al. (2018), "Automatic Differentiation in Machine Learning: a Survey"
- Chen et al. (2016), "Training Deep Nets with Sublinear Memory Cost"
- Nielsen, "Neural Networks and Deep Learning", chapter 2: How the backpropagation algorithm works
- Goodfellow, Bengio & Courville (2016), "Deep Learning", section 6.5: Back-Propagation
Terakhir diperbarui