Jaringan Saraf Tiruan dan Deep Learning

Jaringan Saraf Tiruan (JST) adalah sebuah model pada bidang machine learning yang dibuat (dengan asumsi) menyerupai cara kerja otak manusia. Saya tambahkan di sini “dengan asumsi” karena pada nyatanya kita tidak benar-benar paham bagaimana cara kerja otak manusia.

Sebelum masuk ke detail tentang apa yang dilakukan jaringan saraf tiruan, kita flashback dulu tentang machine learning. Jadi, sama dengan algoritma machine learning pada umumnya, secara ringkas pada jaringan saraf tiruan akan terdapat tiga nilai atau variabel utama:

  • Nilai Input $X$: berisi fitur / ciri
  • Nilai Target $T$: nilai yang diharapkan pengguna
  • Nilai Prediksi $Y$: nilai yang dihasilkan JST

Machine learning bekerja dengan membuat mesin yang mampu memprediksi nilai $T$ diketahui $X$. Sebagai contoh, kita kasih $X$ adalah spesifikasi (fitur) dari suatu rumah {banyak kamar, luas, warna, dsb.} dan kita berharap machine learning dapat memprediksi harganya ($T$).

Bagaimana caranya machine learning khususnya JST dapat memprediksi harga rumah dari fitur-fiturnya? dengan belajar 🙂 JST akan melihat pola dari data-data yang dimiliki dan menggunakannya untuk menebak harganya. Sebagai contoh, kalau kita telah melihat banyak daftar spesifikasi rumah yang diketahui harganya, kita akan paham bahwa jumlah kamar dapat mempengaruhi harga, namun warna tidak. Bahkan kita bisa mengira-ngira misalnya kalau kamarnya 4-5 kira-kira harganya Rp 800jt-1M.

Pada saat proses belajar, JST akan menerima banyak nilai $X$ (spesifikasi rumah) lalu akan menebak harganya ($Y$, nilai prediksi). Tentunya awalnya nilai $Y$ ini akan bernilai acak jika dibanding harga aslinya $T$, ini karena model JST kita belum pintar. Dengan proses pembelajaran (mengenali pola), model JST akan terus memperbaiki diri agar dapat menghasilkan nilai prediksi $Y$ yang sedekat (semirip) mungkin dengan nilai target $T$.

Bagaimana JST bisa menebak harga? bagaimana JST bisa belajar?

kita mulai dari …

Neuron

jaringan saraf tiruan neuron

Di atas adalah contoh sebuah neuron (elemen terkecil pada jaringan saraf tiruan) yang menerima input $X$ dan menghasilkan nilai $Y$. Sebuah neuron adalah visualisasi dari perhitungan sederhana berikut:

$$ Y = \sigma ( X . W+ b) $$

Dengan $W$ adalah suatu nilai “bobot” (weight) dan $b$ adalah bias. Bobot dan bias ini adalah koefisien yang tidak diketahui nilainya. Biasanya akan diberi nilai awal random. Nah, yang terjadi ketika model JST belajar adalah model JST akan mengubah-ubah nilai $W$ dan $b$ sehingga menghasilkan nilai Y yang diharapkan.

Notasi $\sigma$ (sigma) menunjukkan suatu fungsi aktivasi atau disebut juga fungsi non-linear. Ada banyak fungsi aktivasi yang dapat dipilih, salah satunya fungsi aktivasi “sigmoid” yang bentuknya seperti ini:

$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$

Continue reading
flowchart

Belajar dasar Algoritma dengan Flowchart

Jika diminta mengajar pemrograman dasar, langkah pertama yang saya ajarkan bukanlah mulai langsung membuat program di depan komputer, melainkan mulai dengan pembiasaan menyusun suatu algoritma. Menurut saya pribadi, pembiasaan menyusun algoritma ini penting untuk mengenalkan proses Computational Thinking ke calon-calon programmer. Dan proses penyusunan algoritma bisa dilakukan menggunakan flowchart tanpa harus mengerti program komputer.

Apa itu Algoritma?

Algoritma itu mirip resep masakan. Apa isi dari resep masakan? isinya menceritakan langkah per langkah suatu proses se-spesifik mungkin sehingga suatu bahan masakan menjadi masakan jadi. Perlu digaris bawahi bagian “se-spesifik mungkin”. Tidak mungkin di resep hanya tertulis “masukkan telur”, karena bisa memunculkan pertanyaan: telur ayam atau bebek? berapa buah? putihnya atau kuningnya?

algoritma nasi goreng

Dalam dunia pemrograman, dari analogi di atas bisa diartikan bahwa algoritma adalah sekumpulan perintah (resep) yang digunakan untuk memproses input (bahan masakan) menjadi output yang sesuai harapan (masakan). BTW, bicara tentang algoritma selalu mengingatkan saya dengan video seru ini 🙂

Continue reading
implementasi jaringan saraf tiruan

Implementasi Jaringan Saraf Tiruan Dalam 4 Baris Kode

Perhatikan kode implementasi jaringan saraf tiruan di bawah:

from sklearn.neural_network import MLPClassifier

mlp = MLPClassifier(hidden_layer_sizes=(10),solver='sgd',
                      learning_rate_init=0.01,max_iter=500)

mlp.fit(X_train, y_train)

print mlp.score(X_test,y_test)

Yups, Implementasi Jaringan Saraf Tiruan kini tidaklah sulit lagi. Cukup dengan empat baris di atas kita telah membuat melatih dan mengevaluasi jaringan saraf tiruan yang memiliki sebuah hidden layer (Multi Layer Perceptron)

Scikit-learn merilis fitur `MLPClassifier` ini sejak di versi 0.18. Saya salah seorang yang termasuk menunggu fitur ini rilis saat itu. Karena sebelumnya, untuk implementasi jaringan saraf tiruan, saya harus coding dari scratch. Meskipun ini hanya sebuah fungsi library, tapi menurut saya fungsi ini sudah cukup bagus untuk kasus-kasus sederhana.

Continue reading

Review Course Online Premium AI, ML, dan Deep Learning

Tahun 2018-2020 ini alhamdulillah saya dapat kesempatan untuk merasakan tiga course online premium yang (seharusnya) berbayar dengan topik AI, machine learning, atau deep learning. Alhamdulillah saya mendapatkan kesempatan mengikuti ketiga course online ini secara gratis, melalui program beasiswa dan bantuan kampus. Saya akan coba review singkat ketiga course tersebut, semoga bisa jadi pertimbangan jika ada yang tertarik mengikutinya.

Datacamp

Datacamp Course Online

Course online pertama yang saya dapat adalah Datacamp, saya dapat premium student plan-nya berkat bantuan kerja sama Pak Widiawan, dosen UGM, sekitar pertengahan tahun 2018. Course tersebut berlangsung sekitar 4 bulan.

Di Datacamp, tersedia beberapa jalur belajar dengan fokus tujuan tertentu yang disebut “track”, misalnya Track “Machine Learning with Python” atau “Python Programmer”. Sebuah track akan terdiri dari beberapa course yang harus diselesaikan, dan sebuah course terdiri dari beberapa chapter. Dengan akun premium kita bisa mengambil course manapun dengan urutan manapun, “track” hanyalah fasilitas tidak wajib. Sedangkan dengan akun gratis kita hanya bisa mengakses chapter pertama setiap course.

Setiap course materi selalu disampaikan dengan dua metode: video penjelasan teori terlebih dahulu lalu dilanjut praktik dengan menggunakan interaktif window. Kita juga akan mendapatkan slide yang digunakan di video dan “catatan” saat menggunakan interaktif window.

Continue reading
tutorial fasttext bahasa indonesia

Membuat Model Word Embedding Fasttext Bahasa Indonesia

Artikel ini adalah kelanjutan dari dua artikel sebelumnya, word embedding dengan Fasttext bagian 1 dan word embedding dengan Fasttext bagian 1.5. Pada artikel sebelumnya kita berfokus menggunakan pretrained model Fasttext Bahasa Indonesia menggunakan package gensim dan package Fasttext Python. Kali ini kita akan mencoba membuat model word embedding Fasttext Bahasa Indonesia sendiri menggunakan package Fasttext python.

Apa yang dibutuhkan?

Dalam membuat model word embedding Fasttext Bahasa Indonesia, yang kita butuhkan pertama adalah dataset. Untuk menghasilkan model yang baik, diperlukan dataset yang cukup besar. Karena ukuran dataset yang bisa sangat besar, disarankan menggunakan komputer dengan RAM berkapasitas besar, atau kalau saya pribadi menggunakan Google Colab.

Continue reading