Deep learning (tidak hanya) terbagi menjadi dua cabang algoritma besar: CNN (Convolutional NN) dan RNN (Recurrent NN). Masih banyak metode lainnya, namun seolah tenggelam oleh dua algoritma tersebut. Perbedaan utama CNN dan RNN adalah sebagai berikut.
CNN:
- Input berupa tensor dengan ukuran tetap (e.g: image)
- Output juga berupa vector dengan ukuran tetap (e.g. probablitias dari beberapa kelas berbeda)
- Beroperasi pada sekuen vector atau tensor
- Contoh aplikasi: Text translation, speech to text, speech recognition, text to speech.
Sederhanya, jika input bisa diubah dalam bentuk "image", kita pakai CNN, jika data berupa vektor kita pakai RNN. Contoh, data ujaran (speech) juga bisa ditraining dengan metode CNN dengan memberi input jaringan berupa "image" spectrogram.
Kembali ke CNN. Masalah terbesar JST/NN.
Jika sebuah image berukuran 50 x 50 pixel sebagai input, dan JST memiliki konfigurasi 2 hidden layer dengan layer pertama berisi 7500 neuron (node) dan layer kedua berisi 2000 node dan 2 ouput, maka jumlah weight (bobot) pada arsitektur JST tersebut:
$$ (7500 \times 2000) + (2000 \times 2) = 15004000 $$
Jumlah yang cukup "berat" untuk dijalankan dengan komputer spek standar. Sebagai solusinya, ditawarkan arsitektur JST yakni CNN yang bisa bekerja dengan mempelajari pola pada skala yang lebih kecil, dan menggunakannya untuk mengidentifikasi gambar yang lebih besar. Contohnya adalah apakah gambar input merupakan gambar singa atau macan. Dengan mempelajari sebagian kecil bagian gambar (misal: bagian mulut), maka informasi tersebut dapat digunakan untuk menentukan gambar yang diinputkan adalah singa atau macan.
Ilustrasi CNN untuk deteksi gambar macan/singa |