Back to IF3270 Pembelajaran Mesin

A. Konsep Dasar CNN

CNN dirancang khusus untuk memproses data dua dimensi (seperti gambar) dengan mengekstraksi fitur (seperti garis, sudut, bentuk) secara bertahap.

  • Input (): Matriks gambar yang memiliki dimensi Panjang Lebar Kedalaman (Channel). Contoh: Gambar RGB memiliki 3 channel.

  • Kernel / Filter (): Matriks bobot berukuran kecil (misal atau ) yang akan digeser ke seluruh area input. Satu kernel bertugas mencari satu jenis fitur/pola tertentu. Kedalaman kernel selalu sama dengan kedalaman input.

  • Feature Map: Matriks output yang dihasilkan dari perkalian (konvolusi) antara Input dan Kernel. Kedalaman (jumlah) Feature Map selalu sama dengan JUMLAH KERNEL yang digunakan.

  • Stride (): Jarak pergeseran kernel pada input.

  • Padding (): Penambahan bingkai angka 0 di sekeliling matriks input agar kernel bisa memproses bagian tepi gambar tanpa mengurangi ukuran output secara drastis.

  • Detektor (Aktivasi): Fungsi untuk membuang nilai tidak relevan, biasanya ReLU (mengubah nilai negatif menjadi 0).

  • Pooling: Proses merangkum informasi (sub-sampling) untuk memperkecil ukuran Feature Map, biasanya menggunakan Maxpooling (mengambil nilai terbesar di suatu area). Pooling tidak memiliki bobot (parameter yang dilatih).

B. Step-by-Step Forward Propagation

Jika dalam soal kamu diberikan 1 Input dan 1 Layer Konvolusi lengkap, ikuti alur perhitungan ini:

  1. Hitung Dimensi Output Dahulu: Sebelum mulai mengalikan, hitung ukuran panjang/lebar matriks Feature Map yang akan dihasilkan agar kamu tahu kapan harus berhenti menggeser.

  2. Operasi Konvolusi (Dot Product): Letakkan kernel di sudut kiri atas input. Kalikan setiap sel yang bertumpukan, lalu jumlahkan semuanya. Jika input punya beberapa channel (kedalaman), lakukan hal yang sama untuk channel 1, channel 2, dst.

  3. Penggabungan Channel & Bias: Jumlahkan hasil dot product dari semua channel pada posisi tersebut, kemudian tambahkan dengan Bias kernel tersebut (Hanya 1 kali). Tulis nilainya di Feature Map.

  4. Geser Kernel: Geser kernel sejauh Stride. Ulangi langkah 2 & 3 sampai seluruh area input terlewati. Ulangi seluruh proses untuk Kernel ke-2, ke-3, dst.

  5. Tahap Detektor (ReLU): Cek semua angka di Feature Map yang sudah jadi. Jika ada angka minus (negatif), coret dan ganti jadi 0.

  6. Tahap Pooling: Siapkan “jendela pooling” (misal ukuran ). Taruh di sudut kiri atas Feature Map. Cari angka Paling Besar, tulis di matriks baru. Geser sejauh stride pooling, cari angka terbesar lagi. (Lakukan terpisah per kernel/feature map, jangan digabung!)

C. Detail Algoritmik & Rumus Penting

1. Rumus Mencari Dimensi Feature Map Output ():

(Ket: = ukuran sisi input, = ukuran sisi kernel, = padding, = stride)

2. Rumus Mencari Jumlah Parameter Bobot (Trainable Parameters):

(Ket: = jumlah kernel, = ukuran sisi kernel, = jumlah channel input, adalah untuk bias)

3. Pseudo-code Algoritma:

// TAHAP 1: KONVOLUSI
UNTUK setiap kernel k dari 1 sampai N:
    UNTUK setiap posisi vertikal i (geser sejauh S):
        UNTUK setiap posisi horizontal j (geser sejauh S):
            
            Total_Dot_Product = 0
            
            // Hitung perkalian untuk SEMUA channel
            UNTUK setiap channel c dari 1 sampai C:
                Total_Dot_Product += Sum(Jendela_Input_Channel_C * Matriks_Kernel_Channel_C) 
                
            // RUMUS KRUSIAL: Tambahkan Bias di akhir HANYA SEKALI per kernel!
            Y[i, j, k] = Total_Dot_Product + B[k]

// TAHAP 2: DETEKTOR (ReLU)
UNTUK setiap elemen y dalam matriks Y:
    JIKA y < 0 MAKA y = 0
Simpan sebagai matriks Y_relu

// TAHAP 3: MAXPOOLING (Asumsi ukuran F_pool, stride S_pool)
UNTUK setiap layer kedalaman/kernel k dari 1 sampai N:
    UNTUK setiap area pooling (lompat sejauh S_pool) di matriks Y_relu layer k:
        Z[posisi] = Nilai Maksimum dari area tersebut

D. Kesalahan Umum Pengerjaan Soal (⚠️ RED FLAGS DARI KUIS TAHUN LALU)

Berdasarkan koreksi kuis sebelumnya, JANGAN lakukan hal-hal ini saat ujian:

  1. Salah menjumlahkan Bias: Menjumlahkan bias berkali-kali untuk setiap channel. YANG BENAR: Konvolusi channel 1 + Konvolusi channel 2 + … + Bias (Satu kali di akhir penjumlahan).

  2. Salah menentukan dimensi Feature Map: Menyebutkan ukuran Feature Map karena mengira (2 kernel 2 channel). YANG BENAR: Dimensi ketiga Feature Map SELALU sama dengan jumlah kernel. Jika ada 2 kernel, maka dimensinya .

  3. Salah menggabungkan saat Pooling: Menjumlahkan atau mencari nilai maksimum antar Feature Map dari kernel yang berbeda. YANG BENAR: Pooling dilakukan secara mandiri (terpisah) untuk masing-masing Feature Map.

  4. Salah menghitung jumlah parameter bobot: * Menghitung pooling layer seolah-olah memiliki bobot. YANG BENAR: Layer maxpooling/average pooling TIDAK ADA parameternya (bobot = 0).

    • Menambahkan bobot dense layer padahal yang diminta soal hanya arsitektur image encoder-nya saja. Terapkan rumus parameter hanya sesuai spesifikasi yang diminta.
  5. Tidak menuliskan detail perhitungan: Hanya menulis hasil akhir matriks. YANG BENAR: Dosen meminta setidaknya satu contoh perhitungan sel secara detail, contoh: (1*1 + -1*0 + ...) + 0.25 = 1.25.