Convolutional neural network, atau CNN, adalah jaringan saraf yang mencari pola-pola lokal kecil lalu menggabungkannya menjadi pola yang lebih besar. Pada gambar, layer awal sering mendeteksi tepi atau sudut, layer tengah mendeteksi tekstur atau bagian, dan layer yang lebih dalam memakai sinyal itu untuk mendukung prediksi akhir.
Gagasan utamanya adalah weight sharing. Alih-alih mempelajari bobot terpisah untuk setiap pasangan lokasi piksel, CNN menggunakan kembali filter kecil yang sama di banyak posisi. Ini membuatnya jauh lebih murah daripada dense layer pada gambar mentah dan membantu mendeteksi jenis pola yang sama di lebih dari satu tempat.
Apa yang dilakukan convolutional neural network
Dalam fully connected layer, setiap output bisa bergantung pada semua nilai input sekaligus. CNN lebih terstruktur. CNN menggunakan kernel kecil, yang sering disebut filter, yang melihat satu patch lokal pada satu waktu.
Untuk input satu kanal dan kernel bernama , satu entri output dapat ditulis sebagai
Ini adalah gagasan jumlah berbobot lokal di balik convolutional layer. Dalam banyak library machine learning, operasi yang diimplementasikan secara teknis adalah cross-correlation, bukan konvolusi matematis yang dibalik, tetapi intuisi praktisnya sama: kernel memindai input dan menghasilkan feature map.
Feature map memberi tahu Anda di mana pola yang dipelajari muncul dengan kuat.
Mengapa filter bersama membantu
Jika tepi vertikal yang sama muncul di dekat sudut kiri atas gambar atau di dekat tengah, biasanya kita ingin model tetap menyadarinya. CNN mendukung hal itu dengan menggunakan kembali parameter filter yang sama di berbagai posisi.
Ini memiliki dua efek praktis:
- Ini mengurangi jumlah parameter yang dipelajari dibandingkan dense layer pada gambar mentah.
- Ini mendorong jaringan untuk mendeteksi pola lokal yang berulang, bukan menghafal satu lokasi tetap.
Penggunaan ulang itu adalah salah satu alasan CNN menjadi efektif untuk tugas-tugas gambar.
Seperti apa arsitektur dasar CNN
CNN dasar sering mengikuti pola ini:
- convolution layer
- aktivasi seperti ReLU
- pooling atau downsampling opsional
- lebih banyak blok konvolusi
- layer prediksi akhir
Layer awal biasanya menangkap struktur lokal yang sederhana. Layer yang lebih dalam menggabungkan respons tersebut menjadi fitur yang lebih besar dan lebih spesifik terhadap tugas.
Pooling tidak wajib, tetapi ketika digunakan, pooling memperkecil dimensi spasial sehingga layer berikutnya dapat bekerja dengan representasi yang lebih ringkas. Contoh yang umum adalah max pooling, yang mempertahankan nilai terbesar di setiap wilayah kecil.
Jika stride adalah dan padding adalah , maka input dengan kernel menghasilkan output . Aturan ukuran ini berguna saat Anda memeriksa apakah sebuah contoh hitungan masuk akal.
Contoh lengkap: bagaimana feature map CNN dibuat
Ambil gambar input ini:
Gunakan kernel ini:
Asumsikan stride dan tanpa padding. Karena input berukuran dan kernel berukuran , output harus berukuran . Setiap entri output adalah jumlah dari satu patch karena setiap entri kernel bernilai .
Nilai output kiri atas adalah
Patch satu langkah ke kanan adalah
jadi
Jika dihitung untuk semua posisi yang valid, diperoleh
Output ini adalah feature map. Nilai yang besar menunjukkan di mana kernel menemukan kecocokan yang kuat. Di sini filter merespons paling kuat di tempat muncul blok terang penuh berukuran .
Jika sekarang Anda menerapkan ReLU, tidak ada yang berubah karena semua entri sudah nonnegatif. Jika kemudian Anda menggunakan max pooling dengan stride , output hasil pooling menjadi
Ini tidak menciptakan informasi baru. Operasi ini mempertahankan respons terkuat yang berdekatan dan mengurangi grid spasial.
Contoh ini sederhana, tetapi menunjukkan mekanisme intinya dengan jelas: sebuah filter bergeser, menghitung jumlah berbobot lokal, dan membuat peta tentang di mana suatu pola muncul.
Apa yang dipelajari CNN selama pelatihan
Kernel di atas dipilih secara manual, tetapi dalam CNN nyata nilai filter dipelajari dari data. Pelatihan menyesuaikan nilai-nilai itu agar feature map yang dihasilkan menjadi berguna untuk tugas yang dikerjakan.
Jika tugasnya adalah klasifikasi gambar, jaringan mempelajari filter yang membantu memisahkan kelas. Jika tugasnya adalah segmentasi atau deteksi, layer berikutnya dilatih untuk output tersebut. Mekanisme dasarnya tetap sama: forward pass, loss, backpropagation, pembaruan parameter.
Kesalahan umum saat mempelajari CNN
Mengira CNN hanya berarti "pengklasifikasi gambar"
Gambar adalah contoh standar, tetapi CNN sebenarnya berkaitan dengan struktur lokal dan filter bersama. Jika nilai-nilai yang berdekatan itu penting, gagasan yang sama bisa berguna di luar gambar.
Menganggap pooling selalu diperlukan
Pooling itu umum, bukan universal. Beberapa arsitektur mengurangi ukuran spasial dengan konvolusi ber-stride, dan beberapa mempertahankan lebih banyak detail spasial lebih lama.
Mengabaikan stride dan padding
Ukuran feature map bergantung pada pilihan ini. Jika Anda mengubah stride atau padding, Anda mengubah bukan hanya bentuk output, tetapi juga lingkungan lokal mana yang bisa dilihat setiap unit.
Menganggap layer ini hanya sebagai rumus
Rumus konvolusi memang penting, tetapi arsitekturnya juga penting. CNN bekerja karena konvolusi, aktivasi, penumpukan layer, dan pelatihan semuanya bekerja bersama.
Kapan convolutional neural network berguna
CNN banyak digunakan dalam tugas computer vision seperti klasifikasi gambar, deteksi objek, dan segmentasi. CNN juga muncul dalam beberapa pengaturan pemrosesan sinyal dan sekuens ketika pola lokal memiliki makna.
CNN sangat berguna ketika input memiliki struktur grid atau lingkungan bertetangga yang terurut dengan jelas. Jika kondisi itu lemah, arsitektur lain mungkin lebih cocok.
Model mental yang membuat CNN lebih mudah dipahami
Bayangkan CNN sebagai pendeteksi pola yang mulai dari hal kecil lalu menjadi lebih abstrak seiring bertambahnya kedalaman. Satu layer bertanya, "Apakah pola kecil ini muncul di sini?" Layer berikutnya bertanya, "Apakah pola-pola sederhana ini bergabung menjadi sesuatu yang lebih bermakna?"
Itulah sebabnya CNN lebih mudah dipahami ketika Anda fokus pada feature map, bukan hanya pada kata "convolution".
Coba versi Anda sendiri
Pertahankan input yang sama, tetapi ubah kernel menjadi
Hitung ulang feature map dan lihat wilayah mana yang sekarang menghasilkan respons positif atau negatif yang besar. Perubahan kecil itu membuat jauh lebih jelas bagaimana filter yang berbeda mendeteksi pola yang berbeda.
Butuh bantuan mengerjakan soal?
Unggah pertanyaanmu dan dapatkan solusi terverifikasi langkah demi langkah dalam hitungan detik.
Buka GPAI Solver →