Back to Pembelajaran Mesin Lanjut

Backpropagation dalam Jaringan Konvolusional

Questions/Cues

  • Mengapa backpropagation diperlukan dalam CNN?
  • Bagaimana gradien dihitung untuk kernel konvolusi?
  • Apa perbedaan backpropagation di CNN vs ANN?
  • Bagaimana implementasi praktis backpropagation CNN?
  • Tantangan optimasi parameter CNN?

Reference Points

  • IF3270 Pembelajaran Mesin (Slides 62-73)
  • Goodfellow et al., Deep Learning (Ch. 6)

Tinjauan Umum Backpropagation dalam CNN

Backpropagation pada Convolutional Neural Networks (CNN) merupakan proses kalkulasi gradien error terhadap parameter jaringan (termasuk kernel konvolusi) untuk memperbarui bobot melalui algoritma optimasi seperti Stochastic Gradient Descent. Proses ini memungkinkan CNN mempelajari fitur hierarkis secara otomatis dari data pelatihan. Pada CNN, terdapat dua jenis parameter yang perlu diperbarui: bobot pada lapisan fully-connected dan nilai kernel pada lapisan konvolusi. Kompleksitas utama terletak pada perhitungan gradien untuk kernel konvolusi karena sifat operasi konvolusi yang melibatkan penerapan kernel yang sama pada seluruh wilayah input (parameter sharing). Contoh: Pada jaringan dengan satu lapisan konvolusi diikuti lapisan fully-connected, gradien error harus dipropagasi balik melalui operasi matriks fully-connected terlebih dahulu, kemudian melalui operasi konvolusi untuk memperbarui nilai kernel.

Perhitungan Gradien pada Lapisan Konvolusional

Untuk menghitung gradien kernel konvolusi (K), digunakan aturan rantai (chain rule) melalui empat komponen utama:

  1. Gradien error terhadap output (∂E/∂O): Bergantung pada fungsi loss yang digunakan
  2. Gradien output terhadap net (∂O/∂net): Bergantung pada fungsi aktivasi
  3. Gradien net terhadap feature map (∂net/∂H): Matriks bobot lapisan berikutnya
  4. Gradien feature map terhadap kernel (∂H/∂K): Input asli yang dikonvolusi Rumus umum gradien kernel: ∂E/∂K = ∂E/∂O * ∂O/∂net * ∂net/∂H * ∂H/∂K Dimana ∂H/∂K dihitung melalui operasi konvolusi antara input (X) dan gradien dari lapisan berikutnya. Analogi: Bayangkan mengoreksi kesalahan dalam mendeteksi tepi gambar. Kesalahan di lapisan output dipetakan balik ke kernel konvolusi dengan melihat area mana pada gambar input yang paling berkontribusi terhadap kesalahan tersebut.

Contoh Implementasi Langkah Demi Langkah

Kasus: CNN sederhana dengan arsitektur Input → Konvolusi (1 kernel 3x3) → Fully Connected → Output Langkah 1: Forward Pass

  • Input X = matriks 5x5
  • Konvolusi dengan kernel K (3x3) menghasilkan feature map H (3x3)
  • H di-flatten menjadi vektor
  • Fully connected layer dengan bobot W menghasilkan output O Langkah 2: Backward Pass
  1. Hitung ∂E/∂W menggunakan error di output: ∂E/∂W = (O - target) * turunan aktivasi * H
  2. Hitung gradien untuk kernel K: ∂E/∂K = X ⨂ (∂E/∂H) Dimana ⨂ menyatakan operasi konvolusi valid dan ∂E/∂H = (∂E/∂O * ∂O/∂net * W) Contoh numerik: Jika error di output adalah 2.5 dan turunan ReLU di feature map adalah 0.8, gradien kernel dihitung dengan mengkonvolusi input asli dengan gradien yang telah dipropagasi.

Tantangan dan Pertimbangan Praktis

  1. Vanishing Gradients: Lapisan konvolusi bertingkat dapat menyebabkan gradien mengeksponensial kecil saat propagasi balik, terutama dengan fungsi aktivasi sigmoid/tanh. Solusi: Gunakan ReLU dan teknik inisialisasi bobot tepat.
  2. Komputasi Memori: Feature maps yang besar membutuhkan penyimpanan nilai aktivasi selama forward pass untuk backpropagation. Teknik checkpointing dapat digunakan untuk menghemat memori.
  3. Parameter Sharing: Memperbarui kernel yang sama di seluruh peta fitur memerlukan akumulasi gradien dari semua lokasi spasial sebelum pembaruan bobot.
  4. Kecepatan Konvergensi: Optimasi adaptive learning rate (Adam, RMSProp) sering diperlukan karena sensitivitas konvolusi terhadap perubahan bobot.

Summary

Backpropagation dalam CNN memungkinkan pelatihan end-to-end dengan menghitung gradien error terhadap kernel konvolusi dan bobot fully-connected melalui propagasi balik. Proses ini melibatkan operasi konvolusi terbalik untuk menghitung gradien kernel, memanfaatkan parameter sharing untuk efisiensi komputasi. Tantangan utama meliputi manajemen memori untuk nilai aktivasi dan strategi optimasi untuk menangani vanishing gradient. Implementasi praktis memerlukan akumulasi gradien spasial dan penyesuaian hyperparameter untuk mencapai konvergensi stabil.