Konvolusi adalah operasi yang menggeser satu filter kecil di sepanjang citra untuk menghasilkan peta fitur, dan arsitektur konvolusional dibangun dari operasi ini karena tiga sifatnya menyesuaikan struktur citra. Topik ini menjelaskan ketiga sifat tersebut sebagai prior arsitektural, mengukur penghematan parameternya secara eksplisit, dan menutup dengan batas yang dibayar untuknya. Setelah selesai, pilihan arsitektur untuk citra tidak lagi terasa seperti kebiasaan, melainkan konsekuensi dari struktur datanya.
Prioritas yang mengikuti struktur citra#
Jaringan saraf penuh memperlakukan masukan sebagai vektor datar, sehingga piksel yang bertetangga di citra tidak punya hubungan khusus di dalam model. Struktur citra sebenarnya bertolak belakang dengan pandangan itu, karena tiga fakta berlaku hampir selalu. Pertama, sifat lokal, yaitu piksel yang berdekatan lebih saling berkaitan daripada piksel yang jauh, sehingga pola kecil seperti tepi dan sudut cukup dideteksi dari tetangga terdekat. Kedua, sifat terjemahan, yaitu kucing tetap kucing meskipun bergeser ke kanan, sehingga detektor yang berguna di satu wilayah berguna juga di wilayah lain. Ketiga, hierarki, yaitu objek tersusun dari bagian yang tersusun dari tepi.
Konvolusi menuliskan ketiga fakta itu langsung ke dalam arsitektur. Filter berukuran kecil, misalnya 3x3, hanya melihat tetangga terdekat dan mewujudkan sifat lokal. Filter yang sama digeser ke seluruh posisi citra dan mewujudkan sifat terjemahan, sekaligus memangkas jumlah parameter secara drastis. Penumpukan layer konvolusi membangun hierarki dari tepi menuju bagian dan objek. Pembatasan inilah yang disebut prior arsitektural, yaitu pengetahuan tentang masalah yang ditanamkan ke model sebelum satu data pun dilihat.
Penghematan parameter yang terukur#
Ukuran penghematan dapat dihitung langsung. Citra 28x28 abu-abu yang dibuat datar memiliki 784 nilai, dan layer penuh dengan 128 unit menuntut 784 x 128 ditambah 128 bias, yaitu 100.480 parameter. Layer konvolusi dengan 32 filter berukuran 3x3 pada masukan yang sama menuntut 3 x 3 x 32 ditambah 32 bias, karena tiap filter hanya punya sembilan bobot yang dipakai di seluruh posisi. Kode berikut menghitung kedua bilangan itu dari model sungguhan PyTorch alih-alih dari rumus yang ditulis manual.
import torch.nn as nn
penuh = nn.Linear(784, 128)
konv = nn.Conv2d(1, 32, kernel_size=3, padding=1)
n_penuh = sum(p.numel() for p in penuh.parameters())
n_konv = sum(p.numel() for p in konv.parameters())
print("layer penuh 784->128 :", n_penuh)
print("konvolusi 32 filter 3x3:", n_konv)
print("rasio :", round(n_penuh / n_konv, 1))layer penuh 784->128 : 100480
konvolusi 32 filter 3x3: 320
rasio : 314.0Rasio lebih dari 260 kali berarti konvolusi memperoleh 32 detektor berbeda di seluruh posisi citra dengan biaya parameter yang jauh lebih kecil, dan parameter yang lebih sedikit berarti risiko overfitting yang lebih rendah serta pelatihan yang lebih murah. Hemat ini bukan bonus, melainkan konsekuensi pembagian bobot (weight sharing) yang menjadi inti sifat kedua di atas.
Pertukaran yang dibayar#
Prioritas arsitektural selalu menuntut pertukaran, dan konvolusi tidak kebal. Pengetahuan yang ditanamkan berupa lokalitas membuat model kurang cocok pada data yang hubungannya jarak jauh, karena filter 3x3 perlu ditumpuk banyak kali agar dua wilayah yang berjauhan dapat saling memengaruhi, dan setiap tumpukan mempersempit pandangan bertahap. Pada citra, hubungan jarak jauh seperti keselarasan objek di dua sisi layar memang lebih jarang menentukan keputusan, sehingga pertukarannya sepadan.
Pertukaran kedua menyangkut fleksibilitas. Model dengan prior yang cocok belajar lebih cepat dari data yang lebih sedikit, tetapi model yang sama menjadi sulit dimanfaatkan ketika datanya bukan citra, misalnya deret keuangan yang skala antar posisinya berbeda-beda. Inilah alasan konvolusi diklasifikasikan sebagai arsitektur untuk data kisi (grid), seperti citra dan sinyal satu dimensi, dan bukan pilihan bawaan untuk tabel maupun teks. Ketika transformer kemudian muncul pada modul Transformer dan attention, pertukaran sebaliknya yang dipilih, yaitu kebebasan relasi jarak jauh dengan harga data dan komputasi yang lebih besar.
Dari satu filter ke lapisan filter#
Satu layer konvolusi memuat banyak filter yang belajar mendeteksi pola berbeda, misalnya satu merespons tepi vertikal dan lainnya merespons perubahan warna, dan keluarannya berupa peta fitur per filter. Ketika beberapa layer konvolusi ditumpuk, peta fitur layer kedua menjadi masukan layer ketiga, sehingga pola yang dideteksi naik tingkat dari garis menuju tekstur dan bagian objek. Susunan bertingkat ini persis hierarki yang dinyatakan sebagai prior ketiga di awal topik.
Empat topik berikutnya mengurai mekanika operasinya satu per satu, dimulai dari perhitungan bentuk keluaran pada kernel, stride, dan padding, lalu pooling yang mengecilkan peta fitur, batch normalization yang menstabilkan tumpukannya, dan kisah arsitektur klasik yang membentuk resepnya.
Ringkasan#
- Konvolusi menanamkan tiga prior citra ke arsitektur, yaitu lokalitas, invarian terjemahan lewat pembagian bobot, dan hierarki antar layer.
- Layer konvolusi 32 filter 3x3 memakai 320 parameter untuk masukan yang menuntut 100.480 parameter pada layer penuh, dengan rasio di atas 260 kali.
- Parameternya hemat karena satu filter dipakai di seluruh posisi, dan penghematan itu menurunkan risiko overfitting sekaligus biaya pelatihan.
- Prior yang sama menjadi batas pada data dengan relasi jarak jauh, sehingga pemilihan arsitektur tetap mengikuti struktur data.
Referensi#
- Convolutional Networks — CS231n, Stanford — Catatan kuliah yang memuat anatomi layer konvolusi dan perhitungan parameternya.
- torch.nn.Conv2d — PyTorch — Dokumentasi layer konvolusi dua dimensi beserta aturan bentuknya.
- Convolutional Neural Networks — Dive into Deep Learning — Bab pembuka CNN yang menurunkan alasan dari dua dimensi gambar.