Istilah penting di Neural Network dan Deep Learning (bagian 2)

Artikel ini adalah kelanjutan dari artikel sebelumnya tentang istilah-istilah di neural network ataupun deep learning bagian kedua. Sama seperti artikel sebelumnya, artikel ini bertujuan untuk menjelaskan istilah-istilah penting di neural network.

Error vs Akurasi

Error dan akurasi adalah 2 metode pengukuran performa model machine learning. Model machine learning pada umumnya akan menggunakan fungsi error (atau sering disebut juga loss/cost function) sebagai acuan untuk memperbaiki modelnya (a.k.a belajar). Hampir kebanyakan model machine learning termasuk deep learning menggunakan algoritma optimasi untuk meminimalkan error yang dihasilkan. Artinya, semakin kecil error yang dihasilkan akan semakin baik.

Pada proses training yang benar, grafik eror akan turun dan grafik akurasi akan naik

Sedangkan akurasi adalah pengukuran yang lebih “mudah” dipahami manusia. Biasanya akurasi tidak digunakan untuk acuan model belajar melainkan hanya untuk membantu manusia memahami sebaik apa model yang telah dihasilkan. Misalnya jika diketahui ada model yang mampu mendeteksi suatu penyakit dengan akurasi 90%, maka kita langsung bisa paham artinya dalam 100 kali percobaan ada kemungkinan sekitar 10 percobaan akan gagal. Hal tersebut lebih mudah dipahami oleh manusia ketimbang kita bliang: suatu model memiliki error 0.002 ._. Dari definisi tersebut, dapat dilihat semakin tinggi nilai akurasi akan semakin baik.

Juga perlu diketahui, ketika kita bilang “akurasi”, sebenarnya kita merujuk ke suatu rumus yang spesifik. Sedangkan istilah “error” adalah istilah yang lebih lebih umum, rumusnya ada banyak, misalnya log-likelihood. Metode pengukuran lain yang mudah dipahami selain akurasi adalah F1-Score yang biasa digunakan untuk mengevaluasi model dengan data yang classnya tidak seimbang (imbalance)

oh ya, saya juga dulu pernah bertanya di AI.SE tentang pemilihan model berdasar akurasi atau error di sini

Continue reading
memahami istilah-istilah deep learning

Istilah-Istilah di Neural Network ataupun Deep Learning (bagian 1)

Semester ini saya dapat kesempatan mengajar kelas Deep Learning di Program Studi S1 Informatika UII. Selama mengajari mahasiswa yang mayoritas masih awam dengan Deep Learning, bahkan Neural Network, saya merasakan ternyata banyak sekali istilah-istilah di Neural Network ataupun Deep Learning yang mungkin sulit untuk dipahami.

Karenanya, artikel ini saya buat dengan harapan dapat membantu teman-teman yang sedang belajar Neural Network ataupun Deep Learning untuk memahami istilah-istilah tersebut. Jika ada istilah-istilah yang belum tersampaikan / kurang jelas / malah salah maknanya silakan tulis di komentar ya 🙂

AI vs Machine Learning vs Neural Network vs Deep Learning

Kalau di kelas, saya menggambarkan diagram venn hubungan keempatnya seperti berikut ini.

John McCarthy, orang pertama yang memunculkan istilah Artificial Intelligence (AI) memberi definisi AI adalah “Science and engineering of making intelligent machines”1 atau saya sering mendefinisikan sendiri sebagai sekumpulan metode yang digunakan agar komputer dapat meniru atau bahkan melampaui kecerdasan manusia2.

Nah, Machine Learning merupakan salah satu teknik di bidang AI untuk membuat mesin mampu belajar dari data tanpa perlu diprogram secara eksplisit. Salah satu algoritma machine learning yang bisa digunakan adalah Neural Network (jaringan saraf tiruan). Suatu program yang memiliki banyak if-else, dapat meniru kecerdasan manusia (AI), namun bukan termasuk machine learning karena program tidak belajar dari data, melainkan dengan ditulis secara ekspliti oleh programmer.

Neural Network (NN) mencerdaskan mesin dengan membangun model matematika yang (berusaha) meniru bagaimana sel saraf bekerja. Pada NN bagian-bagian kecil (sel saraf) dirangkai untuk menciptakan arsitektur jaringan saraf yang sesuai untuk suatu masalah.

Continue reading

Parameter Tuning Model Secara Otomatis dengan Optuna

Apa itu Tuning Parameter

Ketika kita membuat model machine learning, kita tidak akan terlepas dengan yang namanya parameter tuning, yakni proses menentukan nilai parameter-parameter model ktia. Hampir semua model machine learning punya beberapa parameter (atau variabel) yang harus kita definisikan terlebih dahulu nilainya sebelum proses training. Nilai yang kita berikan pada parameter-parameter tersebut nantinya akan menentukan proses pelatihan model kita.

Sebagai contoh di neural network, kita harus menentukan parameter-parameter arsitektur kita, yang bisa meliputi: banyak hidden layer, banyak neuron di setiap layer, jenis fungsi aktivasi dan lain-lain. Penentuan angka-angka tersebut akan menentukan kualitas model kita. Misalkan, untuk tiga parameter yang disebutkan tadi kita menggunakan neural network dengan 2 layer, masing-masingnya 100 neuron, dan menggunakan fungsi aktivasi sigmoid. Itu berarti kita telah memilih nilai untuk tiga parameter yang disebutkan di atas dari banyak kemungkinan nilai. kenapa kok tidak 1 layer? atau 3 layer? kenapa tidak 50 neuron? atau 10 neuron? kenapa tidak pakai fungsi aktivasi lain? dan sebagainya.

Tentu pemilihan parameter harusnya memiliki suatu “dasar”. Biasanya parameter-parameter tersebut dipilih setelah melalui beberapa eksperimen dan merupakan parameter yang menghasilkan model terbaik untuk kasus yang digunakan.

Parameter Tuning model Neural Network

Pada contoh ini kita akan coba membuat model neural network sekaligus melakukan parameter tuning untuk kasus binary classification menggunakan data Sonar. Data tersebut berisikan ~200 pola sinyal sonar yang mendeteksi antara batu (kode “R”) atau besi (kode “M”). Dataset yang telah di-split dapat didownload di sini, contoh code dapat dilihat di Google Colab di sini

Langkah pertama, kita perlu load package dan dataset lalu ubah kode kelas “R”/”M” menjadi 1 dan 0.

Continue reading

Pengenalan Autoencoder : neural network untuk kompresi data

Autoencoder

Autoencoder adalah salah satu varian dari jaringan saraf tiruan (JST) yang secara umum digunakan untuk meng-“encode” suatu data. Berbeda dengan arsitektur JST pada umumnya yang dilatih untuk mengklasifikasi atau menghitung nilai regresi dari masukan, autoencoder dilatih untuk dapat menghasilkan output yang sama dengan inputnya. Autoencoder termasuk pada kategori Unsupervised Learning karena dilatih dengan menerima data tanpa label.

Traditional Neural Network vs Autoencoder

Pada ilustrasi tersebut, arsitektur di bagian atas adalah arsiktektur JST yang digunakan untuk mengklasifikasi citra bahan makanan di supermarket. Pada bagian bawah merupakan arsitektur autoencoder.

Lalu apa tujuannya sebuah model dilatih untuk menghasilkan citra yang sama?

Jika diperhatikan pada ilustrasi di atas, bagian yang menarik adalah bagian tengah autoencoder yang berupa sebuah vektor kumpulan neuron (ditandai dengan kotak warna kuning). Bagian tengah ini biasanya memiliki jumlah neuron yang lebih kecil dibanding layer di kanan atau kirinya (termasuk layer input dan outputnya). Sehingga jika model dapat dilatih dengan baik, bisa dikatakan bagian tengah ini merupakan representasi sederhana dari citra yang menjadi input. Apa maksud representasi sederhana? Karena vektor ini diperoleh dari citra input melalui arsitektur jaringan saraf tiruan (Encode), lalu dari vektor yang kecil ini bisa dibuat kembali citra yang serupa dengan inputnya (Decode).

Continue reading
backpropagation step by step

Contoh Perhitungan Algoritma Backpropagation

Beberapa waktu lalu saya dapat kesempatan untuk mengasisteni kegiatan kemkominfo di UGM seputar AI. Salah satu topik yang dibicarakan adalah Backpropagation pada Jaringan Saraf Tiruan (JST). Di postingan ini saya akan mencontohkan perhitungan Backpropagation langkah per langkah, menggunakan arsitektur yang sederhana dan dilanjutkan implementasi menggunakan Python.

Artikel ini diupdate pada 8 Agustus 2020

Sebelum memulai, sebaiknya kita mengerti terlebih dahulu dasar-dasar untuk:

Jika masih dirasa banyak yang lupa, silakan refresh kembali materi tersebut.

Overview

model / arsitektur JST sederhana

Sebelum kita mulai, kita ingat kembali beberapa poin penting dalam JST pada ilustrasi di atas.

Continue reading