Apa itu chain rule?
Chain rule (aturan rantai) memberi turunan dari fungsi komposisi: jika y = f(g(x)), maka dy/dx = f'(g(x)) · g'(x). Artinya, laju perubahan seluruh rantai adalah hasil kali laju perubahan tiap mata rantainya, masing-masing dihitung pada nilai yang mengalir melewatinya.
Setiap neural network adalah komposisi panjang dari fungsi-fungsi sederhana, jadi gradient-nya dihitung dengan chain rule. Backpropagation adalah chain rule yang diterapkan dari loss kembali ke setiap weight, dan automatic differentiation di PyTorch, JAX, dan TensorFlow adalah implementasi umumnya. Chain rule juga menjelaskan vanishing gradient dan exploding gradient, yang memengaruhi arsitektur seperti ResNet dan LSTM.
Ide utama
- Turunan f(g(x)) adalah f'(g(x)) · g'(x).
- Turunan luar dihitung pada output fungsi dalam, bukan pada x.
- Rantai sepanjang apa pun menghasilkan turunan berupa hasil kali turunan lokal.
- Untuk layer dengan output vector, turunan lokalnya berupa Jacobian dan hasil kalinya berupa perkalian matriks.
- Backpropagation adalah chain rule yang dihitung dari output ke belakang.
- Hasil kali panjang dari faktor di bawah 1 membuat gradient menghilang; faktor di atas 1 membuatnya meledak.
Pertanyaan umum
Apa itu chain rule multivariabel?
Ketika sebuah variabel memengaruhi output lewat beberapa jalur, kontribusi tiap jalur dijumlahkan. Jika z bergantung pada x dan y, dan keduanya bergantung pada t, maka dz/dt = (∂z/∂x)(dx/dt) + (∂z/∂y)(dy/dt). Dalam network, weight yang menuju beberapa neuron mendapat gradient dari penjumlahan atas semua neuron itu.
Apa bedanya chain rule dan aturan perkalian?
Aturan perkalian berlaku untuk dua fungsi yang dikalikan: (f·g)' = f'·g + f·g'. Chain rule berlaku untuk satu fungsi yang dimasukkan ke fungsi lain: (f∘g)' = (f'∘g)·g'. Banyak ekspresi membutuhkan keduanya, misalnya x·sin(x²).
Kenapa backpropagation berjalan mundur, bukan maju?
Network punya satu loss skalar dan banyak parameter. Berjalan mundur menghitung gradient satu output itu terhadap semua input dalam sekali sapuan. Berjalan maju butuh satu sapuan per parameter, jadi reverse mode jauh lebih murah ketika output sedikit dan input banyak.
Siapa yang menemukan chain rule?
Leibniz memakainya pada tahun 1670-an, dan aturan ini muncul di buku kalkulus awal pada dekade-dekade berikutnya. Penggunaannya untuk melatih network dengan banyak layer dipopulerkan oleh Rumelhart, Hinton, dan Williams pada 1986, melanjutkan karya sebelumnya tentang reverse-mode differentiation oleh Linnainmaa dan Werbos.
Penjelasan terkait
- Turunan · Kalkulus di balik gradient descent
- Turunan Parsial dan Gradient · Memperluas turunan satu variabel ke fungsi banyak variabel dan vector gradient
- Kalkulus Matriks dan Jacobian · Turunan parsial, gradient, dan Jacobian: kalkulus untuk vector
- Backpropagation · Cara network belajar dari kesalahannya
- Vanishing dan Exploding Gradient · Kenapa deep network sulit dilatih dan cara mengatasinya
- Skip Connection & ResNet · Residual learning dan alasan network yang lebih dalam bisa bekerja
Referensi
- Rumelhart, Hinton & Williams (1986), "Learning representations by back-propagating errors", Nature
- Baydin et al. (2018), "Automatic Differentiation in Machine Learning: a Survey"
- Goodfellow, Bengio & Courville, "Deep Learning", section 6.5 Back-Propagation
- Deisenroth, Faisal & Ong, "Mathematics for Machine Learning", ch. 5 Vector Calculus
Terakhir diperbarui