Lensa ML

Cara Kerja Chain Rule

Langkah 1 dari 6: Fungsi di Dalam Fungsi

Apa yang terjadi saat kamu menyusun f(g(x))?

x1.5g(x)2x + 1g4.0f(g)g²output f(g(x))16.00
Geser untuk mengubah xx = 1.5

Komposisi berarti memasukkan satu fungsi ke fungsi lain. Di sini g(x) = 2x + 1 berjalan lebih dulu, lalu output-nya masuk ke f(g) = g². Nilainya mengalir dari kiri ke kanan: x = 1.5 → g = 4.0 → f = 16.00.

Geser x antara −2 dan 3 dan ikuti nilainya melewati kedua kotak. Urutan berpengaruh dalam komposisi. Di sini f(g(x)) = (2x + 1)², tetapi jika urutannya ditukar hasilnya g(f(x)) = 2x² + 1, fungsi berbeda dengan turunan berbeda. Matematikawan menulis komposisi sebagai f ∘ g, dibaca "f setelah g". Satu layer neural network juga berupa komposisi: pemetaan linear, lalu activation function. Menumpuk layer menambah mata rantai baru.

Langkah 2 dari 6: Turunan Lokal

Setiap fungsi punya laju perubahannya sendiri

x1.5g(x) = 2x+1= 4.0g'(x) = 2= 2f(g) = g²= 16.00f'(g) = 2g= 8.0output16.00chain rule: g'(x) × f'(g(x))
Ubah xx = 1.5

Setiap fungsi punya turunan lokal: laju perubahannya sendiri. Untuk g(x) = 2x + 1, dg/dx = 2 (selalu 2). Untuk f(g) = g², df/dg = 2g = 8.0 (bergantung pada output g).

Ubah x dan perhatikan turunan lokal mana yang bergerak. g'(x) tetap 2 karena g berupa garis lurus, sedangkan f'(g) = 2g berubah mengikuti output g. Perbedaan inilah alasan chain rule menghitung turunan luar di g(x), bukan di x. Kesalahan yang umum adalah menulis f'(x) · g'(x). Untuk contoh ini hasilnya 2x · 2 = 4x, padahal jawaban yang benar 2(2x + 1) · 2 = 8x + 4. Keduanya hanya sama pada x = −1.

Langkah 3 dari 6: Kalikan Rantainya

Turunan total adalah hasil kali turunan-turunan lokal

x1.5g(x) = 2x+1= 4.00g'(x) = 22.0f(g) = g²= 16.00f'(g) = 2g8.0output16.00×df/dx = g'(x) × f'(g)2 × 8.0 = 16.0← gradient mengalir mundur
Ubah xx = 1.5

Chain rule: kalikan turunan-turunan lokalnya. Pada x = 1.5: g'(x) = 2 × f'(g) = 8.0 = 16.0. Dorongan kecil pada x menggerakkan output sebesar 16,0× dorongan itu.

Gerakkan x dan bandingkan totalnya dengan kedua faktornya. Turunan lengkapnya di sini df/dx = 4(2x + 1), jadi pada x = 1.5 nilainya 16, dan pada x = −0.5 nilainya nol karena g = 0 berada di dasar parabola. Notasi Leibniz membuat aturan ini tampak seperti pencoretan pecahan: df/dx = (df/dg)·(dg/dx). Ini cara mudah untuk mengingatnya, tetapi turunan adalah limit, bukan pecahan, jadi pencoretan itu hanya alat bantu ingat, bukan bukti.

Langkah 4 dari 6: Rantai yang Lebih Panjang

Bagaimana dengan f(g(h(x)))?

x1.00h(x)sin(x)= 0.841h'(x)0.540g(h)2h+1= 2.683g'(h)2.000f(g)g²= 7.198f'(g)5.366××df/dx = h'(x) × g'(h) × f'(g)0.540 × 2 × 5.366 = 5.798← gradient mengalir mundur
Ubah xx = 1.0

Dengan tiga fungsi yang tersusun sebagai f(g(h(x))), aturannya tetap sama: kalikan ketiga turunan lokalnya. Di sini dh/dx = cos(1.0) = 0.540 bisa mengecilkan totalnya atau membalik tandanya, tergantung x.

Geser x dari −3 sampai 3 dan perhatikan faktor cos(x). Pada x = ±π/2 (sekitar ±1,57), cos(x) bernilai nol, sehingga seluruh hasil kali menjadi nol apa pun nilai mata rantai lainnya. Satu faktor nol di mana pun dalam rantai mematikan gradient, dan itulah yang terjadi pada unit dead ReLU. Untuk n fungsi, aturannya berlaku langsung: d/dx f₁(f₂(⋯fₙ(x))) adalah hasil kali n turunan lokal, masing-masing dihitung pada input-nya sendiri.

Langkah 5 dari 6: Rantai di Network

Setiap layer adalah fungsi, dan backprop ADALAH chain rule

InputHidden 1Hidden 2Output∂z₁/∂x∂z₂/∂z₁∂y/∂z₂∂y/∂x = ∂y/∂z₂ × ∂z₂/∂z₁ × ∂z₁/∂x

Setiap layer dalam neural network adalah fungsi. Forward pass berjalan dari kiri ke kanan, dan backpropagation mengirim gradient dari kanan ke kiri. Setiap layer mengalikan gradient yang masuk dengan turunan lokalnya.

Perhatikan animasinya: titik-titik berjalan maju melewati network 3-4-3-2, lalu gradient berjalan kembali. Dengan beberapa node per layer, tiap turunan lokal menjadi matriks Jacobian berisi turunan parsial, dan hasil kali angka menjadi hasil kali matriks. Backpropagation menghitung hasil kali itu dari ujung output, dengan mengalikan satu vector dengan satu Jacobian setiap kali. Urutan terbalik ini biayanya kira-kira sama dengan satu forward pass, baik network-nya punya seratus weight maupun satu miliar.

Langkah 6 dari 6: Kenapa Ini Penting

Tanpa chain rule, deep learning tidak akan bisa bekerja

Besar gradient saat mengalir mundur← gradient mengalir mundur (tiap layer mengalikan dengan 0.4)1.00Output×0.40.40Layer 5×0.40.16Layer 4×0.40.064Layer 3×0.40.026Layer 2×0.40.010Layer 1×0.44e-3Inputgradient hilang → layer awal tak bisa belajar

Di sini masing-masing dari enam layer mengalikan gradient dengan 0,4, sehingga ujung input hanya menerima 0.4⁶ ≈ 0.004 bagian. Ketika turunan lokal di bawah 1, gradient menghilang dan layer awal nyaris tidak belajar. Perbaikan seperti ResNet, batch normalization, dan inisialisasi yang cermat menjaga gradient tetap mengalir.

Bandingkan tinggi batang dari Output ke Input. Dengan faktor 0,4 per layer, sepuluh layer hanya menyisakan 0.4¹⁰ ≈ 0.0001 dari gradient. Sigmoid memperburuk hal ini: turunannya paling besar 0,25, sehingga network sigmoid yang dalam sulit dilatih sebelum sekitar 2010. Faktor di atas 1 menimbulkan masalah sebaliknya, yaitu exploding gradient. ResNet menambahkan skip connection yang turunannya memuat suku identitas, sehingga gradient selalu punya jalur dengan faktor 1.

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

Referensi

  1. Rumelhart, Hinton & Williams (1986), "Learning representations by back-propagating errors", Nature
  2. Baydin et al. (2018), "Automatic Differentiation in Machine Learning: a Survey"
  3. Goodfellow, Bengio & Courville, "Deep Learning", section 6.5 Back-Propagation
  4. Deisenroth, Faisal & Ong, "Mathematics for Machine Learning", ch. 5 Vector Calculus

Terakhir diperbarui