Jaringan Saraf Tiruan Sederhana Menggunakan Tensorflow 2.x

Ini adalah artikel “versi lain” dari tulisan sebelumnya di sini. Sebagian besar artikel akan sama, namun pada artikel ini kita akan coba membuat jaringan saraf tiruan sederhana menggunakan Tensorflow 2.x. Tensorflow 2.x atau tensorflow versi 2, merupakan tensorflow versi terbaru yang membawa konsep yang berbeda dengan Tensorflow versi sebelumnya. Bagi yang masih bingung tentang JST dan mau memahami bagaimana JST bekerja bisa buka artikel berikut.

Dataset

Kita akan menggunakan dataset Iris yang sudah cukup populer. Dataset ini berisi data dari 150 Bunga Iris yang berasa dari 3 spesies berbeda. Diberikan 4 buah fitur / ciri, yakni panjang kelopak (sepal length), lebar kelopak (sepal width), panjang mahkota (petal length), dan lebar mahkota (petal width), lalu kita akan mencoba untuk mengklasifikasikan bunga tersebut adalah spesies apa.

iris set

Saya telah memisahkan dataset aslinya menjadi dua file, satu untuk training, dan satu untuk testing. File csv dataset tersebut dapat di download di sini: training set dan test set.

Implementasi Jaringan Saraf Tiruan

Arsitektur

Melihat dataset yang ada, dapat kita simpulkan untuk arsitektur jaringan saraf tiruan kita membutuhkan 4 buah neuron input (fitur) dan 3 buah neuron output (spesies). Kita akan coba menggunakan sebuah hidden layer dengan jumlah neuron hidden layer sebanyak 3. Ilustrasinya tampak sebagai berikut:

Continue reading

Implementasi Jaringan Saraf Tiruan menggunakan PyTorch

Pada artikel ini kita akan coba melakukan implementasi Jaringan Saraf Tiruan / JST / Artificial Neural Network untuk kasus klasifikasi menggunakan PyTorch. Bagi yang belum tahu PyTorch bisa membaca artikel sebelumnya di sini atau bagi yang mau memahami bagaimana JST bekerja bisa buka artikel berikut.

Dataset

Kita akan menggunakan dataset Iris yang sudah cukup populer. Dataset ini berisi data dari 150 Bunga Iris yang berasa dari 3 spesies berbeda. Diberikan 4 buah fitur / ciri, yakni panjang kelopak (sepal length), lebar kelopak (sepal width), panjang mahkota (petal length), dan lebar mahkota (petal width), lalu kita akan mencoba untuk mengklasifikasikan bunga tersebut adalah spesies apa.

iris set

Saya telah memisahkan dataset aslinya menjadi dua file, satu untuk training, dan satu untuk testing. File csv dataset tersebut dapat di download di sini: training set dan test set.

Implementasi Jaringan Saraf Tiruan

Arsitektur

Melihat dataset yang ada, dapat kita simpulkan untuk arsitektur jaringan saraf tiruan kita membutuhkan 4 buah neuron input (fitur) dan 3 buah neuron output (spesies). Kita akan coba menggunakan sebuah hidden layer dengan jumlah neuron hidden layer sebanyak 3. Ilustrasinya tampak sebagai berikut:

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-2021 ini Alhamdulillah saya dapat kesempatan untuk mengikuti beberapa course online premium yang berbayar dengan topik AI, machine learning, atau deep learning. 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

Belajar Machine Learning via StackExchange

Salah satu yang menantang menurut saya untuk belajar Artificial Intelligence/Machine Learning/Data Mining adalah untuk belajar saja, kadang kita perlu menuliskan sintaks kode yang lumayan panjang dan kompleks. Mulai dari merapikan data, preprocessing, feature extraction, sampai proses utamanya sendiri. Kadang hal ini yang bikin jadi down dulu sebelum memulai belajar, apalagi bagi kita yang kesulitan meluangkan banyak waktu untuk sekadar latihan.

Nah, salah satu solusi belajar yang saya temui cukup membantu saya adalah dengan aktif di ruang diskusi yang membahas Machine Learning di internet. Salah satu forum diskusi yang cukup baik menurut saya adalah forum-forum terbitan StackExchange, seperti Stackoverflow, CrossValidated, atau AIStackExchange. Bagi kita programmer, saya yakin nama-nama itu bukanlah nama yang asing. Walau bukan benar-benar “forum diskusi” (situs StackExchange adalah situs tanya jawab atau QA site) situs-situs tersebut cukup baik untuk digunakan sebagai sarana belajar.

Salah satu sisi positif yang saya rasakan dari aktif di StackExchange kita bisa belajar dengan memperdalam logika dan teori dengan waktu yang relatif lebih singkat, tanpa harus membuat kode yang cukup panjang.

Note: aktif di forum hanyalah salah satu alternatif bagi teman-teman yang kesulitan meluangkan waktu banyak tapi tetap ingin belajar. Namun, bagi teman-teman yang ingin serius mendalami bidang ini, saya tetap sangat menyarankan untuk meluangkan waktu khusus untuk belajar untuk menyelesaikan kasus-kasus dan coding dari scratch.

Belajar Machine Learning via StackExchange

Ada beberapa cara bagi yang ingin belajar machine learning via stackexchange. Bisa dengan cara membaca-baca pertanyaan yang telah dijawab, aktif bertanya, ataupun aktif menjawab.

Belajar dari Pertanyaan Orang Lain

Cobalah mencari pertanyaan yang setopik dengan materi yang ingin kalian perlajari. Telusuri satu persatu pertanyaan yang sudah pernah ditanyakan, siapa tahu kalian menemukan pertanyaan atau jawaban yang menarik yang sebenarnya cukup penting untuk ditanyakan tapi kita tidak pernah terpikirkan.

Seperti pertanyaan yang baru-baru ini saya temui: kenapa kita menggunakan istilah “Machine Learning”, bukan “Program Learning” atau Bisakah kita menggunakan Neural Network untuk mendeteksi suatu bilangan ituΒ  prima atau bukan.

Dengan melihat jawaban orang lain kita juga jadi bisa menambah wawasan dengan menemukan solusi solusi menarik bagaimana orang menyelesaikan masalahnya.

Berani Bertanya

Tidak ada salahnya untuk bertanya asal dengan cara yang baik. Ada dua cara untuk kita bertanya di StackExchange, yang pertama kita bisa membuat pertanyaan baru, dan yang kedua adalah bertanya untuk meminta kejelasan jawaban via kolom komentar (ini butuh reputasi).

Untuk membuat pertanyaan baru, pastikan terlebih dahulu pertanyaan itu belum pernah ditanyakan sebelumnya. Untuk lebih yakin, cobalah googling kembali pertanyaan itu, atau bahkan lakukan parafrase jika perlu. Selain itu, pastikan juga kalian sudah membaca aturan singkat di halaman tour yang selalu ada di situs StackExchange manapun.

Contohnya di StackOverflow kalian akan mengenal istilah MVCE (Minimum Veriviable Complete Example), yakni sebuah aturan bagaimana memberikan contoh program kita yang eror secara minimalis. Secara tidak langsung, kita akan belajar bagaimana menjelaskan eror pada program kita secara baik kepada orang lain.

Note: Ingat, jika ingin mendapat jawaban yang baik, maka bertanyalah dengan cara baik.

Mencoba Memberi Jawaban

Selalu ada ilmu yang bisa kita bagi! Cobalah cari pertanyaan-pertanyaan sederhana yang sekiranya bisa kita jawab. Dengan mencoba menjawab beberapa pertanyaan, kita akan belajar untuk memahami lebih dalam materi yang kita pelajari. Kalau ada orang bilang, dengan mengajar ilmu kita bertambah, maka benar saja, dengan mencoba menjawab pertanyaan-pertanyaan di sana kita akan semakin bertambah wawasannya. Kita akan belajar bagaimana menjelaskan dan memberi contoh yang menjawab pertanyaan pengguna lain.

Takut di-downvote πŸ™

Ketika memberi jawaban atau pertanyaan, tentunya kita akan mendapat beragam feedback entah dari pengguna lain atau dari si-penanya. Mulai dari komentar, flag, atau downvote. Jangan minder jika ada feedback negatif, toh, namanya juga belajar dan diskusi πŸ™‚ Manusia tidak ada yang sempurna untuk luput dari kesalahan dan juga tidak semua manusia baik dan ramah untuk berdiskusi. Gunakan hal tersebut sebagai pengalaman untuk menjawab di kemudian hari.

Saya juga masih beberapa kali dapat komentar pedas atau “flag” pada pertanyaan saya karena tidak sesuai topik, tetapi bukan berarti lalu saya akan menghakimi forum tersebut tidak ramah dan melepas kesempatan saya belajar di sana.

Mulai Belajar!

Banyak pengalaman dan ilmu yang saya peroleh dengan aktif di StackExchange. Saya ingat bagaimana StackExchange telah membantu saya tidak hanya menyelesaikan skripsi saya, tetapi juga memahami lebih dalam tools yang saya gunakan. Selain itu semenjak aktif di StackExchange, saya juga merasa banyak terlatih untuk berkomunikasi dengan bahasa inggris secara natural. Jadi, Jangan ragu untuk memulai πŸ˜‰ Semoga Bermanfaat!

Sumber gambar: Pexels