Eksperimen

Eksperimen mendorong project menuju kelayakan. Mereka merupakan hipotesis yang dapat diuji dan direproduksi. Saat menjalankan eksperimen, tujuannya adalah melakukan peningkatan secara bertahap dan berkelanjutan dengan mengevaluasi berbagai fitur dan arsitektur model. Saat bereksperimen, Anda perlu melakukan hal berikut:

  • Tentukan performa dasar pengukuran. Mulailah dengan menetapkan metrik dasar pengukuran. Dasar pengukuran berfungsi sebagai tongkat ukur untuk membandingkan eksperimen.

    Dalam beberapa kasus, solusi non-ML saat ini dapat memberikan metrik dasar pengukuran yang pertama. Jika saat ini belum ada solusi, buat model ML dengan arsitektur sederhana, beberapa fitur, dan gunakan metriknya sebagai dasar pengukuran.

  • Buat satu perubahan kecil. Hanya buat satu perubahan kecil pada satu waktu, misalnya, pada hyperparameter, arsitektur, atau fitur. Jika perubahan tersebut meningkatkan kualitas model, metrik model tersebut akan menjadi dasar pengukuran baru untuk dibandingkan dengan eksperimen di masa mendatang.

    Berikut adalah contoh eksperimen yang membuat satu perubahan kecil:

    • sertakan fitur X.
    • gunakan 0,5 dropout pada lapisan tersembunyi pertama.
    • ambil transformasi log fitur Y.
    • ubah kecepatan pemelajaran menjadi 0,001.
  • Catat progres eksperimen. Anda kemungkinan besar harus melakukan banyak eksperimen. Eksperimen dengan kualitas prediksi yang buruk (atau netral) dibandingkan dengan dasar pengukuran masih berguna untuk pelacakan. Mereka memberi sinyal pendekatan mana yang tidak akan berhasil. Karena progres biasanya tidak linear, penting untuk menunjukkan bahwa Anda sedang mengatasi masalah dengan menyoroti semua cara yang menurut Anda tidak berhasil—selain progres Anda dalam meningkatkan kualitas dasar pengukuran.

Karena setiap pelatihan lengkap pada set data dunia nyata dapat memerlukan waktu berjam-jam (atau berhari-hari), sebaiknya jalankan beberapa eksperimen independen secara serentak untuk menjelajahi ruangan dengan cepat. Saat Anda terus melakukan iterasi, Anda akan semakin dekat dengan tingkat kualitas yang diperlukan untuk produksi.

Derau dalam hasil eksperimental

Perhatikan bahwa Anda mungkin menemukan derau dalam hasil eksperimental yang bukan berasal dari perubahan pada model atau data, sehingga sulit untuk menentukan apakah perubahan yang Anda buat benar-benar meningkatkan model. Berikut adalah contoh hal yang dapat menghasilkan derau dalam hasil eksperimental:

  • Pengacakan data: Urutan penyajian data pada model dapat memengaruhi performa model.

  • Inisialisasi variabel: Cara variabel model diinisialisasi juga dapat memengaruhi performanya.

  • Paralelisme asinkron: Jika model dilatih menggunakan paralelisme asinkron, urutan pembaruan berbagai bagian model juga dapat memengaruhi performanya.

  • Set evaluasi kecil: Jika set evaluasi terlalu kecil, set evaluasi mungkin tidak mewakili performa model secara keseluruhan, sehingga menghasilkan variasi kualitas model yang tidak merata.

Menjalankan eksperimen beberapa kali membantu mengonfirmasi hasil eksperimental.

Menyelaraskan praktik eksperimen

Tim Anda harus memiliki pemahaman yang jelas tentang apa sebenarnya yang dimaksud dengan "eksperimen", dengan serangkaian praktik dan artefak yang ditentukan. Anda memerlukan dokumentasi yang menjelaskan hal-hal berikut:

  • Artefak. Apa saja artefak untuk eksperimen? Pada umumnya, eksperimen adalah hipotesis teruji yang dapat direproduksi, biasanya dengan mencatat metadata (seperti fitur dan hyperparameter) yang menunjukkan perubahan antara eksperimen dan pengaruhnya terhadap kualitas model.

  • Praktik coding. Apakah semua orang akan menggunakan lingkungan eksperimental mereka sendiri? Seberapa mudah (atau mudah) menyatukan karya semua orang ke dalam galeri foto bersama?

  • Reproduksi dan pelacakan. Apa standar untuk reproduksi? Misalnya, apakah tim harus menggunakan pipeline data dan praktik pembuatan versi yang sama, atau apakah tidak masalah jika hanya menampilkan plot? Bagaimana data eksperimental akan disimpan: sebagai kueri SQL atau sebagai snapshot model? Di mana log dari setiap eksperimen didokumentasikan: dalam dokumen, spreadsheet, atau CMS untuk mengelola eksperimen?

Prediksi salah

Tidak ada model di dunia nyata yang sempurna. Bagaimana sistem Anda akan menangani prediksi yang salah? Mulailah berpikir sejak awal tentang bagaimana menghadapi mereka.

Strategi praktik terbaik mendorong pengguna untuk memberi label pada prediksi yang salah dengan benar. Misalnya, aplikasi email menangkap email yang salah diklasifikasikan dengan mencatat email yang dipindahkan ke folder spam ke dalam log, dan sebaliknya. Dengan mengambil label kebenaran dasar dari pengguna, Anda dapat mendesain feedback loop otomatis untuk pengumpulan data dan pelatihan ulang model.

Perhatikan bahwa meskipun survei yang disematkan UI menangkap masukan pengguna, data tersebut biasanya kualitatif dan tidak dapat dimasukkan ke dalam data pelatihan ulang.

Mengimplementasikan solusi menyeluruh

Selagi tim Anda bereksperimen menggunakan model ini, sebaiknya mulai bangun bagian-bagian dari pipeline akhir (jika Anda memiliki sumber daya untuk melakukannya).

Menetapkan bagian pipeline yang berbeda—seperti pemasukan data dan pelatihan ulang model—memudahkan pemindahan model akhir ke produksi. Misalnya, mendapatkan pipeline end-to-end untuk menyerap data dan inferensi prediksi dapat membantu tim mulai mengintegrasikan model ke dalam produk dan untuk mulai melakukan pengujian pengguna tahap awal.

Memecahkan masalah proyek yang terhenti

Anda mungkin berada dalam skenario di mana kemajuan proyek terhenti. Mungkin tim Anda telah mengerjakan eksperimen yang menjanjikan, tetapi belum berhasil meningkatkan kualitas model selama berminggu-minggu. Apa yang perlu Anda lakukan? Berikut adalah beberapa kemungkinan pendekatan:

  • Strategis. Anda mungkin perlu membingkai ulang masalah. Setelah menghabiskan waktu dalam fase eksperimen, Anda mungkin lebih memahami masalah, data, dan kemungkinan solusinya. Dengan pengetahuan yang lebih dalam tentang domain, Anda mungkin dapat membingkai masalah dengan lebih tepat.

    Misalnya, mungkin Anda awalnya ingin menggunakan regresi linear untuk memprediksi nilai numerik. Sayangnya, datanya tidak cukup baik untuk melatih model regresi linear yang valid. Mungkin analisis lebih lanjut akan mengungkapkan bahwa masalah ini dapat diselesaikan dengan memprediksi apakah suatu contoh berada di atas atau di bawah nilai tertentu. Hal ini memungkinkan Anda membingkai ulang masalah sebagai masalah klasifikasi biner.

    Jika progres lebih lambat dari yang diharapkan, jangan menyerah. Peningkatan inkremental dari waktu ke waktu mungkin satu-satunya cara untuk menyelesaikan masalah. Seperti disebutkan sebelumnya, jangan mengharapkan jumlah kemajuan yang sama dari minggu ke minggu. Sering kali, mendapatkan versi model yang siap produksi memerlukan waktu yang lama. Peningkatan kualitas model dapat terjadi secara tidak teratur dan tidak dapat diprediksi. Periode progres lambat dapat diikuti dengan lonjakan peningkatan, atau sebaliknya.

  • Teknis. Luangkan waktu untuk mendiagnosis dan menganalisis prediksi yang salah. Dalam beberapa kasus, Anda dapat menemukan masalah dengan mengisolasi beberapa prediksi yang salah dan mendiagnosis perilaku model dalam kasus tersebut. Misalnya, Anda mungkin menemukan masalah dengan arsitektur atau data. Dalam kasus lain, mendapatkan lebih banyak data dapat membantu. Anda mungkin mendapatkan sinyal yang lebih jelas yang menunjukkan Anda berada di jalur yang benar, atau mungkin menghasilkan lebih banyak derau, yang menunjukkan masalah lain ada dalam pendekatan tersebut.

    Jika Anda menangani masalah yang memerlukan set data berlabel manusia, mendapatkan set data berlabel untuk evaluasi model mungkin sulit diperoleh. Temukan resource untuk mendapatkan set data yang Anda perlukan untuk evaluasi.

Mungkin tidak ada solusi yang mungkin. Batasi waktu pendekatan Anda, berhenti jika Anda belum membuat progres dalam jangka waktu tersebut. Namun, jika Anda memiliki rumusan masalah yang kuat, maka itu mungkin adalah sebuah solusi.