HuggingFace: Ekosistem Open Source untuk Machine Learning

Apa itu HuggingFace 🤗

Bagi teman-teman yang aktif ngikutin perkembangan Machine Learning, khususnya Natural Language Processing, pasti pernah dengar HuggingFace. HuggingFace (HF) ini adalah perusahaan yang awalnya berfokus pada pengembangan aplikasi-aplikasi NLP, tapi sekarang sudah menjelma menjadi suatu “Ekosistem” machine learning yang sangat besar. Saya sebut ekosistem karena HF bukan seperti perusahaan yang hanya menyediakan jasa, atau produk komersil, tapi lebih dari itu!

HF telah berkontribusi banyak dalam perkembangan Machine Learning saat ini, tidak hanya NLP tapi Machine Learning secara umum. Dengan menyediakan Course; platform untuk saling berbagi model, dataset, atau demo; menyediakan library untuk NLP; membangun komunitas yang aktif; yang semua itu gratis!! (HF juga menulis buku tentang NLP di sini, tapi kalau ini berbayar 😁)

Beberapa waktu lalu ikut kegiatan HF yang mau buat platform untuk edukasi di kelas-kelas

Di artikel ini saya akan coba cerita sedikit gambaran umum tentang layanan-layanan HF yang teman-teman bisa gunakan.

HuggingFace Model Hub

Saya ingat beberapa tahun lalu pernah ada yang tanya, baik langsung ke saya atau via online, apakah ada layanan di mana orang-orang bisa upload model machine learning untuk digunakan orang lain, jadi orang lain tidak perlu melakukan train, test, dan sebagainya. HuggingFace Model menjawab itu! Di sini orang-orang bisa mengupload model hasil pelatihan mereka, lalu orang lain bisa tinggal download dan pakai model tersebut.

HuggingFace Model sangat terorganisir, kalian bisa sort berdasarkan task kebutuhan kalian, library yang digunakan, pembuatnya, atau bahasa (untuk NLP). Model-model tersebut nantinya bisa digunakan sebagai pre-trained model yang lalu ditrain ulang (finetuning) atau digunakan apa adanya. Beberapa waktu lalu istri saya pernah menulis tutorial membuat chatbot menggunakan salah satu model yang ada di HF ini.

Menggunakan model-model tersebut kerasa lebih mudah ketimbang harus cari-cari model di internet, karena sudah terintegrasi dengan library HF. Selain itu penjelasan pemakaian juga biasanya didokumentasikan dengan baik pada Model Card (“Readme” nya model di HF).

Oh ya, Jika tidak mau bersentuhan dengan modelnya sama sekali, kita juga bisa menggunakan HF inference API (berbayar) yang memungkinkan kita untuk memanfaatkan model-model secara langsung melalui API. Jadi kita bahkan bisa memanfaatkan model-model machine learning tanpa perlu paham Python!

Continue reading
Carcassonne

Reinforcement Learning, Belajar dari Interaksi

Beberapa minggu ke depan saya lagi coba memperdalam lagi topik Reinforcement Learning (RL) melalui course yang sedang diadakan Hugging Face. Materi minggu pertamanya sudah rilis, dan pembawaannya sangat menarik, mudah dipahami, dan mencakup dengan baik sisi teori sampai teknis implementasi menggunakan package-package terkini. Sangat recommended untuk temen-temen yang mau belajar RL, silakan saja daftar coursenya di http://eepurl.com/h1pElX.

Artikel ini akan jadi pengantar, kombinasi rangkuman course pertama Hugging Face dan materi-materi RL yang selama ini saya pahami sebelum ikut course ini.

Apa itu Reinforcement Learning?

Kita mulai dari Machine Learning: Area ilmu yang mempelajari bagaimana mesin (komputer) bisa belajar dan melakukan aksi seperti manusia menggunakan sekumpulan data (learning). Area ilmu ini cukup luas, ada banyak sub-area di dalamnya dan itupun masih ada ratusan algoritma untuk tiap sub-area itu.

Sub-area yang cukup populer adalah Supervised Learning: komputer belajar dari sekumpulan data yang sudah benar (ground truth), lalu komputer akan menebak output dari data sejenis yang belum pernah dilihat. Misalnya, diberikan sekumpulan contoh foto apel dan nanas, setelah belajar, harapannya di masa depan jika dia melihat foto suatu buah, komputer bisa tahu mana yang apel dan mana yang nanas. Algoritma yang bisa digunakan di sub-area ini: KNN, SVM, Neural Network, dll. (Tutorial klasifikasi citra)

Supervised Learning Illustration

Reinforcement Learning (RL) juga sub-area di machine learning. Pada Reinforcement Learning, komputer belajar untuk mencapai tujuan tertentu dengan cara berinteraksi dengan lingkungannya. Contohnya, kita ingin membuat komputer yang mampu memenangkan game catur, maka kita akan latih komputer dengan cara membuat dia bermain (berinteraksi) dengan game catur berkali-kali hingga dia tahu cara untuk memenangkan suatu permainan. Algoritma yang bisa digunakan di sub-area ini: DQN, PPO, A2C, dll.

RL belajar dari interaksi / percobaan di lingkungannya

Kata kunci yang membedakan RL dengan area machine learning lain adalah: Interaksi dan Tujuan. Dalam permainan catur, tidak bisa kita tentukan satu contoh langkah yang benar (Ground truth) pada suatu kondisi seperti pada Supervised Learning. Semua kembali ke tujuan akhir, apapun caranya yang penting kita bisa menang.

Contoh lain RL adalah self-driving car atau mobil yang bisa mengantar kita sampai ke lokasi secara otomatis. Tujuan dari RL di sini adalah untuk menggerakkan mobil mencapai lokasi tertentu. Ketika dilatih, model RL akan mencoba berinteraksi (mencoba-coba gas, rem, setir) di simulator (bukan pakai mobil beneran karena bisa bahaya). Dan sama seperti contoh catur, tidak ada solusi “benar” dalam berkendara, apapun caranya yang penting bisa sampai di tujuan (tentunya dengan beberapa batasan seperti waktu, bahan bakar, keselamatan penumpang, dll)

Saya lupa dari mana sumbernya, definisi lain yang menarik tentang RL: Reinforcement Learning adalah “delayed” Supervised laerning. Kalau di Supervised learning, ketika model dikasih data, maka jawaban model bisa dinilai benar salah secara langsung. Tapi di mayoritas kasus RL, ketika model dikasih data maka jawaban (aksi yang diberikan) model tidak bisa langsung dinilai benar salah. Penilaian benar atau salah serangkaian aksinya baru bisa dilakukan di akhir interaksi (misal dalam catur berakhir menang atau kalah)

Continue reading