4 faktor untuk menguji aplikasi pembelajaran mesin

Sistem pembelajaran mesin tampak seperti masalah matematika. Cari tahu algoritme, masukkan data, dan jawaban keluar.

Tapi bagaimana Anda tahu jawabannya benar?

Saat Anda mencoba memprediksi film atau buku yang disukai orang-orang, itu bisa menjadi sangat penting, perbedaan antara peningkatan pendapatan dan reputasi populer yang muncul di mediabuzz.com. Namun pengujian jarang menjadi prioritas kami saat kami mencoba mengembangkan dan menerapkan sistem berdasarkan algoritme pembelajaran mesin. Cukup membangun seperangkat algoritme yang baik yang memodelkan ruang masalah sudah cukup sulit. Tetapi pengujian adalah bagian dari pengembangan perangkat lunak dan proses penerapan, dan kita perlu melihat secara serius bagaimana sistem ini akan diuji.

Jenis pengujian pertama yang lebih umum adalah saat aplikasi diuji unit oleh pengembang, "diuji secara asap" oleh otomatisasi selama proses pembuatan dan integrasi, dan diuji secara manual oleh penguji. Proses ini terkenal, meskipun akan bervariasi tergantung pada jenis sistem yang dikembangkan.

Jenis pengujian kedua didasarkan pada input dunia nyata, yang bervariasi berdasarkan data yang diteruskan. Misalnya, salah satu pelanggan Matt menulis perangkat lunak untuk membatasi risiko dalam transaksi keuangan. Perangkat lunak ini akan menganalisis pasar dan perlahan melepas blok saham selama beberapa hari, dirancang untuk tidak memulai peringatan sisi jual. Input pertama adalah blok untuk menjual, tetapi input kedua, real-time adalah pasar keuangan, yang bervariasi dari waktu ke waktu, sehingga penjualan yang diuji tidak akan cocok dengan penjualan dalam produksi. Di sinilah pengujian menjadi lebih bermasalah. Bagaimana kami menguji sistem yang mungkin mengembalikan hasil yang berbeda ke data yang sama dari waktu ke waktu? Teknik pengujian tradisional tidak memiliki cara untuk memperhitungkan hasil seperti itu. Jadi apa yang harus dilakukan penguji?

Menguji sistem pembelajaran mesin secara kualitatif tidak sama dengan menguji jenis perangkat lunak lainnya. Dalam kebanyakan situasi pengujian, Anda berusaha untuk memastikan bahwa keluaran aktual sesuai dengan yang diharapkan. Dengan sistem pembelajaran mesin, mencari hasil yang benar-benar tepat adalah pendekatan yang salah. Kemungkinan besar Anda bahkan tidak dapat menghitung "keluaran yang benar" tanpa menulis perangkat lunak dua kali. Meski begitu, itu mungkin tidak mungkin.

Penguji perlu fokus pada aplikasi pembelajaran mesin:

1. Memiliki kriteria penerimaan yang obyektif dan terukur. Ketahuilah deviasi standar yang dapat Anda terima di ruang masalah Anda. Ini membutuhkan beberapa informasi kuantitatif, dan kemampuan untuk memastikan bahwa Anda memahami dan menafsirkan pengukuran tersebut.

2. Uji dengan data baru, bukan data pelatihan asli. Jika perlu, bagi set pelatihan Anda menjadi dua kelompok: satu kelompok pelatihan, dan satu kelompok melakukan pengujian. Lebih baik, dapatkan dan gunakan data baru jika Anda bisa.

3. Jangan mengandalkan semua hasil menjadi tepat; menganggapnya sebagai tebakan terbaik berdasarkan data yang tersedia. Jika itu tidak cukup baik, masalahnya mungkin alogirthmn atau, lebih mungkin, kumpulan data. Dalam beberapa kasus, "mengubah" kumpulan data untuk mendapatkan masukan yang bersih dapat menjadi perbaikan tercepat untuk masalah ini. 

4. Memahami arsitektur jaringan sebagai bagian dari proses pengujian. Penguji belum tentu memahami bagaimana jaringan neural dibangun, tetapi perlu memahami apakah jaringan tersebut memenuhi persyaratan. Dan berdasarkan pengukuran yang mereka uji, mereka mungkin harus merekomendasikan pendekatan yang sangat berbeda, atau mengakui bahwa perangkat lunak tersebut tidak mampu melakukan apa yang diminta untuk dilakukan dengan percaya diri.

Garis bawah

Kunci untuk menguji sistem adalah untuk memahami persyaratan hasil produksi dan batasan algoritme. Persyaratan perlu diterjemahkan ke dalam pengukuran obyektif; Idealnya, deviasi standar dari hasil mean, dengan asumsi bahwa hasil mean terkait erat dengan hasil aktual yang ditemukan dalam data pelatihan. Anda harus dapat menilai hasil Anda dari sudut pandang statistik, bukan dari sudut pandang ya-tidak.

Jangan mengandalkan jawaban yang benar-benar tepat sepanjang waktu, atau bahkan sebagian besar waktu. Bagaimana Anda menguji, dan bagaimana Anda mengevaluasi, sepenuhnya bergantung pada tujuan sistem. Untuk pengujian awal, sangat berharga untuk memiliki platform seperti Intel Parallel Studio XE untuk mengembangkan dan menguji kode dan algoritme.

Sekarang lebih mudah dari sebelumnya untuk menulis kode Anda untuk dijalankan secara paralel - Coba Intel® Parallel Studio XE gratis selama 30 hari