Merencanakan project ML berbeda dengan merencanakan project rekayasa software biasa. Project ML secara karakteristik bersifat non-linear dan memiliki tingkat ketidakpastian yang bervariasi. Hal ini memerlukan pendekatan iteratif dan pola pikir eksperimental.
Ketidakpastian project
Perencanaan tahap awal bisa jadi sulit karena pendekatan terbaik biasanya tidak jelas saat memulai project. Ketidakpastian yang melekat ini membuat estimasi linimasa menjadi sulit.
Kompetisi Kaggle terbaru menggambarkan ketidakpastian project ML. Dalam beberapa minggu pertama kompetisi, 350 tim berpartisipasi. Tim teratas dapat meningkatkan kualitas prediksi benchmark dari 35% menjadi 65%. Selama dua minggu ke depan, jumlah tim yang mengerjakan masalah tersebut meningkat dari 350 menjadi 1.400. Namun, model terbaik hanya mencapai kualitas prediksi 68%.
Gambar 3 mengilustrasikan ketidakpastian dalam pengembangan ML dengan menunjukkan peningkatan upaya yang signifikan, tetapi hanya mendapatkan peningkatan kualitas model yang minimal.
Gambar 3. Selama periode dua minggu, jumlah tim yang menangani masalah tersebut meningkat sebesar 4 kali lipat, tetapi kualitas model tetap hampir sama, sehingga menyoroti kesulitan dalam memperkirakan upaya solusi ML.
Dengan kata lain, lebih dari seribu tim—masing-masing bereksperimen dengan berbagai transformasi data, arsitektur, dan hyperparameter—hanya berhasil memproduksi model dengan kualitas prediksi 68%.
Contoh dari industri mengilustrasikan non-linearitas project ML, dengan output yang tidak sebanding dengan input. Dua tim memerlukan waktu beberapa bulan untuk melatih model hingga kualitas prediksi 90%. Namun, perlu waktu lebih dari lima tahun bagi beberapa tim untuk menyiapkan model untuk produksi dengan kualitas prediksi 99,9%.
Contoh-contoh ini menyoroti bahwa ML yang siap produksi adalah proses eksplorasi, yang memerlukan pola pikir ilmiah dan rekayasa.
Pendekatan eksperimental
Dalam sebagian besar kasus, pengembangan ML lebih mirip dengan melakukan eksperimen daripada mempraktikkan software engineering tradisional. ML memerlukan pengujian berbagai fitur, mencoba beberapa arsitektur, dan menyesuaikan hyperparameter dengan tepat. Menurut definisinya, eksperimen tidak dijamin akan berhasil. Oleh karena itu, sebaiknya rencanakan menggunakan framework eksperimental.
Mari kita lihat rencana rekayasa software standar untuk melihat perbedaannya dengan rencana project ML.
Merencanakan project software engineering
Dalam rencana rekayasa software standar, Anda menentukan persyaratan, menguraikan komponen, memperkirakan upaya, dan menjadwalkan pekerjaan. Ada jalur yang jelas menuju solusi. Misalnya, engineer sering kali mengetahui dengan tingkat kepastian yang tinggi tugas yang perlu mereka selesaikan untuk mem-build aplikasi yang memenuhi spec desain.
Saat memprediksi waktu yang diperlukan untuk menyelesaikan tugas, mereka dapat memperkirakan pekerjaan berdasarkan project serupa. Meskipun tantangan selalu terjadi—seperti dependensi yang tidak diketahui atau persyaratan yang berubah—yang terkadang dapat mempersulit estimasi, biasanya ada jalur yang jelas menuju solusi.
Sebaliknya, project ML biasanya tidak memiliki satu jalur yang jelas menuju kesuksesan.
Merencanakan project ML
Untuk sebagian besar project ML, Anda akan menemukan solusi terbaik dengan bereksperimen dengan beberapa pendekatan dalam proses coba-coba. Anda biasanya tidak akan mengetahui solusi optimal untuk masalah Anda sebelum mencoba menyelesaikannya. Misalnya, arsitektur solusi optimal mungkin berupa model linear sederhana, atau jaringan saraf, atau mungkin pohon keputusan. Hanya dengan mencoba setiap pendekatan, Anda dapat menemukan solusi terbaik.
Ambiguitas ini membuat perencanaan menjadi sulit. Seperti yang telah dibahas sebelumnya, memprediksi upaya yang diperlukan project ML tidaklah mudah. Hanya dengan mencoba memecahkan masalah, Anda dapat memahami dengan lebih baik jumlah waktu dan resource yang mungkin diperlukan solusi.
Berikut adalah strategi yang direkomendasikan untuk merencanakan pekerjaan ML:
Buat jadwal kerja. Tetapkan jangka waktu yang jelas untuk menyelesaikan tugas atau mencoba solusi tertentu. Misalnya, Anda dapat mengalokasikan waktu dua minggu untuk menentukan apakah Anda bisa mendapatkan akses ke jenis data yang tepat. Jika Anda bisa mendapatkan data, Anda dapat menetapkan dua minggu lagi untuk melihat apakah model sederhana menunjukkan bahwa solusi ML dapat dilakukan. Jika model sederhana gagal, Anda dapat menetapkan dua minggu lagi untuk mencoba jaringan saraf. Di akhir setiap jangka waktu, Anda akan memiliki lebih banyak informasi untuk menentukan apakah terus menerapkan resource untuk masalah tersebut bermanfaat.
Persempit cakupan persyaratan project. Jika solusi ML tampak menjanjikan, tetapi bukan fitur penting untuk produk atau layanan Anda, cakup kembali persyaratannya. Misalnya, saat merencanakan pekerjaan kuartal berikutnya, Anda mungkin berencana untuk mencoba solusi yang sangat sederhana. Kemudian, pada kuartal berikutnya, Anda mungkin berencana untuk meningkatkan solusi secara iteratif. Mengimplementasikan solusi ML dengan melakukan peningkatan inkremental selama jangka waktu yang lebih lama adalah cara yang digunakan banyak tim untuk mendapatkan solusi ML yang berdampak.
Project magang atau karyawan baru. Memberi arahan dan memandu karyawan magang atau karyawan baru untuk mencoba solusi ML dapat menjadi cara yang baik untuk mulai menjelajahi ruang baru dengan hasil yang tidak diketahui. Setelah project selesai, Anda akan memiliki pemahaman yang lebih baik tentang upaya yang diperlukan solusi ML dan pendekatan yang berpotensi menjanjikan untuk dilakukan—atau apakah resource harus ditempatkan di tempat lain.
Dengan strategi apa pun, sebaiknya gagal dengan cepat. Coba pendekatan dengan biaya terendah, tetapi berpotensi memberikan hasil tertinggi, terlebih dahulu. Jika pendekatan tersebut berhasil, berarti Anda telah menemukan solusi yang baik. Jika tidak, Anda tidak akan membuang banyak waktu dan resource.
Seiring tim mendapatkan pengalaman dan eksposur untuk menjalankan eksperimen, mereka akan dapat memperkirakan upaya yang mungkin diperlukan eksperimen dengan lebih baik, sehingga perencanaan menjadi lebih dapat diprediksi. Namun, hasil eksperimen hampir selalu tidak diketahui, sehingga jumlah eksperimen yang diperlukan untuk menemukan solusi terbaik tidak dapat diperkirakan sebelumnya.
Merencanakan pendekatan dengan pola pikir eksperimental akan membantu tim Anda meraih kesuksesan. Saat suatu pendekatan menemui jalan buntu, anggota tim akan memahami bahwa hal itu adalah bagian dari proses dalam menemukan solusi ML, bukan berkecil hati. Yang lebih penting, dengan mendiskusikan ketidakpastian yang melekat dalam pengembangan ML dengan pemangku kepentingan, Anda dapat menetapkan ekspektasi yang lebih realistis.
Memeriksa Pemahaman Anda
Perhatikan
Mempelajari cara merencanakan beberapa pendekatan ML secara probabilistik memerlukan waktu dan pengalaman. Rencana project Anda mungkin perlu sering diperbarui. Anggaplah sebagai dokumen dinamis yang terus berkembang saat tim Anda bereksperimen dengan beberapa pendekatan. Dengan berfokus pada ide utama berikut, Anda akan meningkatkan peluang keberhasilan:
- Estimasi biaya dan peluang keberhasilan untuk setiap pendekatan.
- Mencoba portofolio pendekatan.
- Identifikasi pelajaran yang didapat dan coba tingkatkan sistem satu per satu.
- Buat rencana antisipasi kegagalan.
Terkadang pendekatan awal menghasilkan terobosan. Seseorang mungkin menemukan bug dalam pipeline pembuatan data atau pemisahan pelatihan-validasi. Dengan perencanaan yang baik dan dokumentasi yang menyeluruh, Anda akan meningkatkan kemungkinan menemukan model yang dapat menyelesaikan masalah bisnis lebih cepat dari yang diperkirakan.