Bagaimana cara meningkatkan pengembangan algoritma?

18

Dalam mengerjakan analisis data eksplorasi, dan mengembangkan algoritma, saya menemukan bahwa sebagian besar waktu saya dihabiskan dalam siklus visualisasi, menulis beberapa kode, berjalan pada dataset kecil, ulangi. Data yang saya miliki cenderung pada jenis visi komputer / jenis sensor fusi, dan algoritme yang berat untuk visi (misalnya deteksi dan pelacakan objek, dll), dan algoritma yang tidak berfungsi dalam konteks ini tidak berfungsi. Saya menemukan bahwa ini membutuhkan banyak iterasi (misalnya, untuk memanggil jenis algoritma atau menyetel parameter dalam algoritma, atau untuk mendapatkan visualisasi yang tepat) dan juga waktu menjalankan bahkan pada dataset kecil cukup panjang, jadi semua bersama-sama butuh waktu.

Bagaimana pengembangan algoritma itu sendiri dipercepat dan dibuat lebih skalabel?

Beberapa tantangan spesifik:

Bagaimana jumlah iterasi dapat dikurangi? (Terutama ketika jenis algoritme apa, apalagi spesifikasinya, tampaknya tidak mudah diprediksi tanpa mencoba versi yang berbeda dan memeriksa perilakunya)

Bagaimana cara menjalankan dataset yang lebih besar selama pengembangan? (Seringkali berpindah dari dataset kecil ke besar adalah ketika sekelompok perilaku baru dan masalah baru terlihat)

Bagaimana parameter algoritma dapat disetel lebih cepat?

Bagaimana cara menerapkan alat jenis pembelajaran mesin untuk pengembangan algoritma itu sendiri? (Misalnya, alih-alih menulis algoritma dengan tangan, tulis beberapa blok penyusun sederhana dan gabungkan dengan cara yang dipelajari dari masalah, dll.)

Alex I
sumber

Jawaban:

7

Pertama, jika data Anda memiliki banyak variasi (dalam fungsi waktu, konteks, dan lain-lain) sehingga menyulitkan untuk menerapkan strategi tunggal untuk mengatasinya, Anda mungkin tertarik untuk melakukan temporal / kontekstual / sebelumnya. karakterisasi dataset. Mengkarakterisasi data, yaitu, mengekstraksi informasi tentang bagaimana volume atau spesifikasi konten bervariasi sesuai dengan beberapa kriteria, biasanya memberikan pemahaman yang lebih baik (lebih ringkas dan tepat) daripada hanya menyimpulkan algoritma pada mode brute-force.

Jadi, jawab setiap pertanyaan:

  1. karakterisasi jelas merupakan cara mengurangi jumlah iterasi saat mencoba memilih algoritma yang tepat untuk data tertentu;
  2. jika Anda memiliki seperangkat kriteria yang berbeda di mana data Anda bervariasi, akan lebih mudah untuk meningkatkan solusi, karena akan tahu informasi apa yang akan Anda dapatkan / kehilangan jika solusi sederhana / spesifik diterapkan;
  3. setelah karakterisasi, Anda juga harus lebih mudah memilih parameter, karena Anda akan tahu jenis data spesifik apa yang akan Anda tangani;
  4. akhirnya, Anda dapat menggunakan algoritma penambangan data / pembelajaran mesin untuk mendukung karakterisasi ini. Ini termasuk menggunakan:
    • algoritma pengelompokan, untuk mengurangi dimensi data;
    • algoritme klasifikasi, untuk membantu menentukan sifat-sifat tertentu, data dalam fungsi waktu / konteks / ... dapat ditampilkan;
    • aturan asosiasi, untuk memprediksi pengetahuan tertentu dari dataset, sementara juga meningkatkan / menyempurnakan data yang digunakan untuk analisis nanti;
    • dan kemungkinan strategi dan analisis lainnya.

Dan di sini adalah daftar beberapa kriteria untuk menganalisis data, yang mungkin bermanfaat bagi Anda.

Rubens
sumber
5

Dua hal yang mungkin berguna bagi Anda:

  1. meta-learning untuk mempercepat pencarian model yang tepat dan parameter optimal. Pembelajaran meta mencakup penerapan alat pembelajaran mesin untuk masalah menemukan alat / parameter pembelajaran mesin yang tepat untuk masalah yang dihadapi. Ini misalnya makalah ini untuk contoh praktis;

  2. gpucomputing untuk mempercepat algoritma pada dataset yang lebih besar. Misalnya, OpenCV dapat menggunakan GPU , yang sangat efektif dalam memproses gambar / video dan dapat membawa 10 hingga 100 speedup sehubungan dengan CPU. Karena komputer Anda kemungkinan besar memiliki GPU yang mendukung gpucomputing, Anda bisa mendapatkan banyak waktu menggunakannya.

damienfrancois
sumber
4

Sepertinya Anda telah melihat demo YouTube ini dan Google Tech Talk terkait, yang terkait dengan makalah ini:

Dan serangkaian kode ini di GitHub untuk OpenTLD . Jika Anda memeriksa "baca saya" di GitHub di sini, Anda akan melihat bahwa email penulis (Zdenek Kalal) terdaftar, jadi mungkin ada baiknya mengiriminya email tentang pertanyaan Anda, atau bahkan mengundangnya untuk membalas pertanyaan ini juga.

kesalahan besar
sumber