Dasar-dasar Jaringan Neural Konvolusional: Yang Perlu Anda Ketahui

Diterbitkan: 2024-09-10

Jaringan saraf konvolusional (CNN) adalah alat mendasar dalam analisis data dan pembelajaran mesin (ML). Panduan ini menjelaskan cara kerja CNN, perbedaannya dengan jaringan neural lain, penerapannya, serta kelebihan dan kekurangan terkait penggunaannya.

Daftar isi

  • Apa itu CNN?
  • Cara kerja CNN
  • CNN vs. RNN dan transformator
  • Penerapan CNN
  • Keuntungan
  • Kekurangan

Apa itu jaringan saraf konvolusional?

Jaringan saraf konvolusional (CNN) adalah jaringan saraf yang terintegrasi dengan pembelajaran mendalam, yang dirancang untuk memproses dan menganalisis data spasial. Ia menggunakan lapisan konvolusional dengan filter untuk secara otomatis mendeteksi dan mempelajari fitur-fitur penting dalam masukan, sehingga sangat efektif untuk tugas-tugas seperti pengenalan gambar dan video.

Mari kita uraikan sedikit definisi ini. Data spasial adalah data yang bagian-bagiannya berhubungan satu sama lain melalui posisinya. Gambar adalah contoh terbaiknya.

Pada setiap gambar di atas, setiap piksel putih terhubung ke setiap piksel putih di sekitarnya: Mereka membentuk angka. Lokasi piksel juga memberi tahu pemirsa di mana letak digit di dalam gambar.

Fitur adalah atribut yang ada dalam gambar. Atribut-atribut ini dapat berupa apa saja, mulai dari tepi yang agak miring, keberadaan hidung atau mata, hingga komposisi mata, mulut, dan hidung. Yang terpenting, fitur dapat terdiri dari fitur yang lebih sederhana (misalnya, mata terdiri dari beberapa tepi melengkung dan titik gelap di tengah).

Filter adalah bagian model yang mendeteksi fitur-fitur ini di dalam gambar. Setiap filter mencari satu fitur tertentu (misalnya, tepi melengkung dari kiri ke kanan) di seluruh gambar.

Terakhir, “konvolusional” dalam jaringan saraf konvolusional mengacu pada bagaimana filter diterapkan pada gambar. Kami akan menjelaskannya di bagian selanjutnya.

CNN telah menunjukkan kinerja yang kuat pada berbagai tugas gambar, seperti deteksi objek dan segmentasi gambar. Model CNN (AlexNet) memainkan peran penting dalam kebangkitan pembelajaran mendalam pada tahun 2012.

Bekerja lebih cerdas dengan Grammarly
Mitra penulisan AI bagi siapa saja yang memiliki pekerjaan yang harus diselesaikan

Cara kerja CNN

Mari kita jelajahi arsitektur CNN secara keseluruhan dengan menggunakan contoh menentukan angka (0–9) yang ada dalam sebuah gambar.

Sebelum memasukkan gambar ke dalam model, gambar harus diubah menjadi representasi numerik (atau pengkodean). Untuk gambar hitam-putih, setiap piksel diberi nomor: 255 jika seluruhnya putih dan 0 jika seluruhnya hitam (terkadang dinormalisasi menjadi 1 dan 0). Untuk gambar berwarna, setiap piksel diberi tiga angka: satu untuk berapa banyak warna merah, hijau, dan biru yang dikandungnya, yang dikenal sebagai nilai RGB-nya. Jadi gambar berukuran 256×256 piksel (dengan 65.536 piksel) akan memiliki 65.536 nilai dalam pengkodean hitam-putih dan 196.608 nilai dalam pengkodean warnanya.

Model kemudian memproses gambar melalui tiga jenis lapisan:

1 Lapisan konvolusional:Lapisan ini menerapkan filter pada masukannya. Setiap filter adalah kisi-kisi angka dengan ukuran tertentu (misalnya, 3×3). Kisi ini dihamparkan pada gambar mulai dari kiri atas; nilai piksel dari baris 1–3 di kolom 1–3 akan digunakan. Nilai piksel ini dikalikan dengan nilai di filter lalu dijumlahkan. Jumlah ini kemudian ditempatkan pada grid keluaran filter pada baris 1, kolom 1. Kemudian filter menggeser satu piksel ke kanan dan mengulangi proses tersebut hingga mencakup seluruh baris dan kolom pada gambar. Dengan menggeser piksel satu per satu, filter dapat menemukan fitur di mana saja dalam gambar, sebuah properti yang dikenal sebagai invariansi translasi. Setiap filter membuat grid keluarannya sendiri, yang kemudian dikirim ke lapisan berikutnya.

2 Lapisan pengumpulan: Lapisan ini merangkum informasi fitur dari lapisan konvolusi. Lapisan konvolusional mengembalikan keluaran yang lebih besar dari masukannya (setiap filter mengembalikan peta fitur dengan ukuran yang kira-kira sama dengan masukan, dan terdapat beberapa filter). Lapisan penggabungan mengambil setiap peta fitur dan menerapkan kisi lain ke dalamnya. Kisi ini mengambil rata-rata atau nilai maksimal di dalamnya dan menghasilkan keluarannya. Namun, kisi ini tidak bergerak satu piksel dalam satu waktu; itu akan melompat ke tambalan piksel berikutnya. Misalnya, grid penggabungan 3x3 pertama-tama akan bekerja pada piksel di baris 1–3 dan kolom 1–3. Kemudian, ia akan tetap berada di baris yang sama tetapi berpindah ke kolom 4–6. Setelah menutupi semua kolom pada rangkaian baris pertama (1–3), ia akan berpindah ke baris 4–6 dan menangani kolom tersebut. Ini secara efektif mengurangi jumlah baris dan kolom pada keluaran. Lapisan penggabungan membantu mengurangi kompleksitas, membuat model lebih tahan terhadap noise dan perubahan kecil, serta membantu model fokus pada fitur yang paling signifikan.

3 Lapisan yang terhubung sepenuhnya: Setelah beberapa putaran lapisan konvolusional dan penggabungan, peta fitur akhir diteruskan ke lapisan jaringan saraf yang terhubung sepenuhnya, yang mengembalikan keluaran yang kita pedulikan (misalnya, probabilitas bahwa gambar tersebut adalah angka tertentu). Peta fitur harus diratakan (setiap baris peta fitur digabungkan menjadi satu baris panjang) dan kemudian digabungkan (setiap baris peta fitur panjang digabungkan menjadi baris besar).

Berikut adalah representasi visual arsitektur CNN, yang mengilustrasikan bagaimana setiap lapisan memproses gambar masukan dan berkontribusi pada keluaran akhir:

Arsitektur jaringan saraf konvolusional (CNN).

Beberapa catatan tambahan tentang prosesnya:

  • Setiap lapisan konvolusional yang berurutan menemukan fitur tingkat yang lebih tinggi. Lapisan konvolusional pertama mendeteksi tepi, bintik, atau pola sederhana. Lapisan konvolusional berikutnya mengambil keluaran gabungan dari lapisan konvolusional pertama sebagai masukannya, sehingga memungkinkannya mendeteksi komposisi fitur tingkat rendah yang membentuk fitur tingkat lebih tinggi, seperti hidung atau mata.
  • Model tersebut memerlukan pelatihan. Selama pelatihan, sebuah gambar dilewatkan melalui semua lapisan (dengan bobot acak pada awalnya), dan keluaran dihasilkan. Perbedaan antara keluaran dan jawaban sebenarnya digunakan untuk sedikit menyesuaikan bobot, sehingga model lebih mungkin menjawab dengan benar di masa mendatang. Hal ini dilakukan dengan penurunan gradien, di mana algoritme pelatihan menghitung seberapa besar kontribusi setiap bobot model terhadap jawaban akhir (menggunakan turunan parsial) dan memindahkannya sedikit ke arah jawaban yang benar. Lapisan penyatuan tidak memiliki bobot apa pun, sehingga tidak terpengaruh oleh proses pelatihan.
  • CNN hanya dapat bekerja pada gambar dengan ukuran yang sama dengan gambar yang dilatih. Jika model dilatih pada gambar dengan ukuran 256×256 piksel, maka gambar apa pun yang lebih besar perlu dilakukan pengambilan sampel lebih kecil, dan gambar apa pun yang lebih kecil perlu diambil sampelnya.

CNN vs. RNN dan transformator

Jaringan saraf konvolusional sering disebutkan bersama jaringan saraf berulang (RNN) dan transformator. Jadi apa perbedaannya?

CNN vs. RNN

RNN dan CNN beroperasi di domain yang berbeda. RNN paling cocok untuk data sekuensial, seperti teks, sedangkan CNN unggul dengan data spasial, seperti gambar. RNN memiliki modul memori yang melacak bagian masukan yang dilihat sebelumnya untuk mengontekstualisasikan bagian berikutnya. Sebaliknya, CNN mengontekstualisasikan bagian-bagian masukan dengan melihat tetangga terdekatnya. Karena CNN tidak memiliki modul memori, maka CNN tidak cocok untuk tugas teks: CNN akan lupa kata pertama dalam sebuah kalimat saat mencapai kata terakhir.

CNN vs. transformator

Transformer juga banyak digunakan untuk tugas-tugas berurutan. Mereka dapat menggunakan bagian mana pun dari masukan untuk mengontekstualisasikan masukan baru, menjadikannya populer untuk tugas pemrosesan bahasa alami (NLP). Namun, trafo juga telah diterapkan pada gambar baru-baru ini, dalam bentuk trafo penglihatan. Model ini mengambil gambar, memecahnya menjadi beberapa bagian, menjalankan perhatian (mekanisme inti dalam arsitektur transformator) pada bagian tersebut, dan kemudian mengklasifikasikan gambar tersebut. Transformator visi dapat mengungguli CNN pada kumpulan data besar, namun mereka tidak memiliki invarian translasi yang melekat pada CNN. Invariansi translasi dalam CNN memungkinkan model untuk mengenali objek terlepas dari posisinya dalam gambar, menjadikan CNN sangat efektif untuk tugas-tugas yang mengutamakan hubungan spasial fitur.

Penerapan CNN

CNN sering digunakan dengan gambar karena invariansi translasi dan fitur spasialnya. Namun, dengan pemrosesan yang cerdas, CNN dapat bekerja di domain lain (seringkali dengan mengonversinya menjadi gambar terlebih dahulu).

Klasifikasi gambar

Klasifikasi gambar adalah penggunaan utama CNN. CNN besar yang terlatih dapat mengenali jutaan objek berbeda dan dapat bekerja pada hampir semua gambar yang diberikan. Meskipun transformator semakin meningkat, efisiensi komputasi CNN menjadikannya pilihan yang tepat.

Pengenalan ucapan

Rekaman audio dapat diubah menjadi data spasial melalui spektogram, yang merupakan representasi visual dari audio. CNN dapat menggunakan spektogram sebagai masukan dan belajar memetakan bentuk gelombang yang berbeda ke kata-kata yang berbeda. Demikian pula, CNN dapat mengenali ketukan dan sampel musik.

Segmentasi gambar

Segmentasi gambar melibatkan identifikasi dan menggambar batas di sekitar objek berbeda dalam sebuah gambar. CNN populer untuk tugas ini karena kinerjanya yang kuat dalam mengenali berbagai objek. Setelah gambar disegmentasi, kita dapat lebih memahami isinya. Misalnya, model pembelajaran mendalam lainnya dapat menganalisis segmen dan mendeskripsikan pemandangan berikut: “Dua orang sedang berjalan di taman. Ada tiang lampu di sebelah kanan mereka dan sebuah mobil di depan mereka.” Dalam bidang medis, segmentasi gambar dapat membedakan tumor dari sel normal dalam pemindaian. Untuk kendaraan otonom dapat mengidentifikasi marka jalur, rambu jalan, dan kendaraan lainnya.

Keuntungan CNN

CNN banyak digunakan di industri karena beberapa alasan.

Performa gambar yang kuat

Dengan banyaknya data gambar yang tersedia, diperlukan model yang memiliki performa baik pada berbagai jenis gambar. CNN sangat cocok untuk tujuan ini. Invariansi translasi dan kemampuannya untuk membuat fitur yang lebih besar dari fitur yang lebih kecil memungkinkan mereka mendeteksi fitur di seluruh gambar. Arsitektur yang berbeda tidak diperlukan untuk jenis gambar yang berbeda, karena CNN dasar dapat diterapkan pada semua jenis data gambar.

Tidak ada rekayasa fitur manual

Sebelum CNN, model gambar dengan performa terbaik memerlukan upaya manual yang signifikan. Pakar domain harus membuat modul untuk mendeteksi jenis fitur tertentu (misalnya, filter untuk tepian), sebuah proses yang memakan waktu dan kurang fleksibel untuk beragam gambar. Setiap kumpulan gambar memerlukan kumpulan fiturnya sendiri. Sebaliknya, CNN pertama yang terkenal (AlexNet) dapat mengkategorikan 20.000 jenis gambar secara otomatis, sehingga mengurangi kebutuhan rekayasa fitur manual.

Kekurangan CNN

Tentu saja, ada kerugian dalam penggunaan CNN.

Banyak hyperparameter

Melatih CNN melibatkan pemilihan banyak hyperparameter. Seperti jaringan saraf lainnya, terdapat hyperparameter seperti jumlah lapisan, ukuran batch, dan kecepatan pembelajaran. Selain itu, setiap filter memerlukan kumpulan hyperparameternya sendiri: ukuran filter (misalnya, 3×3, 5×5) dan langkah (jumlah piksel yang akan dipindahkan setelah setiap langkah). Hyperparameter tidak dapat disetel dengan mudah selama proses pelatihan. Sebaliknya, Anda perlu melatih beberapa model dengan kumpulan hyperparameter berbeda (misalnya, kumpulan A dan kumpulan B) dan membandingkan performanya untuk menentukan pilihan terbaik.

Sensitivitas terhadap ukuran masukan

Setiap CNN dilatih untuk menerima gambar dengan ukuran tertentu (misalnya 256×256 piksel). Banyak gambar yang ingin Anda proses mungkin tidak cocok dengan ukuran ini. Untuk mengatasi hal ini, Anda dapat meningkatkan atau menurunkan skala gambar Anda. Namun, perubahan ukuran ini dapat mengakibatkan hilangnya informasi berharga dan dapat menurunkan performa model.