Pengaturan dan penskalaan fitur dalam pembelajaran online?

15

Katakanlah saya memiliki penggolong regresi logistik. Dalam pembelajaran batch normal, saya akan memiliki istilah regularizer untuk mencegah overfitting dan menjaga bobot saya kecil. Saya juga akan menormalkan dan memperbesar fitur saya.

Dalam pengaturan pembelajaran online, saya mendapatkan aliran data yang berkelanjutan. Saya melakukan pembaruan gradient descent dengan setiap contoh dan kemudian membuangnya. Apakah saya harus menggunakan penskalaan fitur dan istilah regularisasi dalam pembelajaran online? Jika ya, bagaimana saya bisa melakukan itu? Sebagai contoh, saya tidak memiliki satu set data pelatihan untuk dibandingkan. Saya juga tidak memiliki set validasi untuk menyetel parameter regularisasi saya. Jika tidak, mengapa tidak?

Dalam pembelajaran online saya, saya mendapatkan aliran contoh terus menerus. Untuk setiap contoh baru, saya melakukan prediksi. Kemudian pada langkah waktu berikutnya, saya mendapatkan target aktual dan melakukan pembaruan gradient descent.

siamii
sumber

Jawaban:

9

Proyek open-source vowpal wabbit mencakup penerapan SGD online yang ditingkatkan dengan perhitungan on the fly (online) dari 3 faktor tambahan yang memengaruhi pembaruan bobot. Faktor-faktor ini dapat diaktifkan / dinonaktifkan oleh opsi baris perintah masing-masing (secara default ketiganya diaktifkan, --sgdopsi, mematikan semuanya, yaitu: mundur pada SGD "klasik").

3 opsi peningkatan SGD adalah:

  • --normalized pembaruan disesuaikan untuk skala setiap fitur
  • --adaptive menggunakan gradien adaptif (AdaGrad) (Duchi, Hazan, Singer)
  • --invariant pembaruan yang menyadari pentingnya (Karampatziakis, Langford)

Bersama-sama, mereka memastikan bahwa proses pembelajaran online melakukan kompensasi / penyesuaian 3 arah otomatis untuk:

  • penskalaan per-fitur (nilai besar vs kecil)
  • peluruhan tingkat pembelajaran per-fitur berdasarkan pada pentingnya fitur
  • per fitur penyesuaian tingkat pembelajaran adaptif untuk prevalensi fitur / kelangkaan dalam contoh

Hasilnya adalah bahwa tidak perlu melakukan pra-normalisasi atau menskalakan fitur yang berbeda untuk membuat pembelajar kurang bias dan lebih efektif.

Selain itu, vowpal wabbit juga mengimplementasikan regularisasi online melalui penurunan gradient terpotong dengan opsi regularisasi:

  • --l1 (Norma-1)
  • --l2 (Norma L2)

Pengalaman saya dengan peningkatan ini pada beberapa set data, adalah bahwa mereka secara signifikan meningkatkan akurasi model dan konvergensi yang lebih halus ketika masing-masing dimasukkan ke dalam kode.

Berikut adalah beberapa makalah akademis untuk detail lebih lanjut terkait dengan perangkat tambahan ini:

diri sendiri
sumber
Arielf - Jika Anda mematikan ketiga perangkat tambahan (melalui --sgd) adalah sgd yang sedang dilakukan ditampilkan pada slide 11 dari github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf sehingga power_t dan initial_t menjadi relevan ?
B_Miner
1
B_miner: sejauh yang saya mengerti --power_tdan --initial_tmerupakan opsi independen global (bukan per fitur). --sgdhanya kembali ke SGD "klasik". TKI: --sgdhanya membatalkan --invariant,, ( --normalizeddan --adaptiveyang menyiratkan tingkat pembelajaran terpisah per fitur)
arielf
Apakah Anda tahu jika ada cara untuk melakukan pembaruan ini secara paralel asinkron (seperti yang dilakukan dalam SGD asinkron)? Tampaknya VW dengan banyak pekerja rata-rata model masing-masing pekerja di akhir setiap lulus. Adakah makalah / petunjuk perangkat lunak tentang cara melakukan ini?
JC1
1

ya Anda tentu perlu regularisasi ... itu juga membantu gradient descent (dan inisialisasi laju pembelajaran ke 1 / C)

lihat misalnya kertas SGD-QN http://leon.bottou.org/papers bottou's papers

Anda belum benar-benar menjelaskan apa yang Anda maksud dengan pembelajaran online: mis. untuk setiap poin apakah Anda mendapatkan nilai target? Saya tidak tahu bagaimana Anda akan menggabungkan ... mencari C ... Saya kira Anda akan memiliki beberapa pengklasifikasi dengan ketentuan regularisasi yang berbeda dan melacak kesalahan prediksi (sebelum Anda memperbarui bobot)

seanv507
sumber
Dengan pembelajaran online, saya mendapatkan satu contoh dan melakukan prediksi. Pada langkah waktu berikutnya, saya mendapatkan target aktual untuk contoh saya dan melakukan pembaruan gradient descent.
siamii
baik maka itu harus seperti yang saya sarankan - Anda menjalankan sekelompok classifier dengan parameter regularisasi yang berbeda dan melacak kesalahan prediksi masing-masing classifier.
seanv507
Saya tidak yakin apa yang Anda maksud dengan menginisialisasi tingkat belajar ke 1 / C. Apa itu C? Apakah Anda berbicara tentang mesin dukungan vektor? Saya berbicara tentang regresi logistik di mana regulator memiliki koefisien lambda. Saya tidak tahu apa hubungannya dengan tingkat belajar.
siamii
ya parameter regularisasi l2, C, lambda, atau apa pun. itu sesuatu yang disebutkan di samping di kertas sgdqn bottou, dan saya kira menjelaskan lebih baik di tempat lain. pada dasarnya tingkat pembelajaran Anda harus 1 / kelengkungan (kebalikan dari Hessian) dari permukaan kesalahan Anda .. sekarang jika permukaan kesalahan Anda adalah
seanv507
1
Apakah saya juga perlu melakukan penskalaan fitur? Bagaimana cara melakukannya dalam pengaturan online?
siamii