Haruskah model dilatih ulang jika pengamatan baru tersedia?

28

Jadi, saya belum dapat menemukan literatur tentang hal ini tetapi sepertinya ada sesuatu yang layak dipertimbangkan:

  • Apa praktik terbaik dalam pelatihan model dan optimisasi jika pengamatan baru tersedia?

  • Apakah ada cara untuk menentukan periode / frekuensi pelatihan ulang model sebelum prediksi mulai menurun?

  • Apakah terlalu pas jika parameter dioptimalkan kembali untuk data agregat?

Perhatikan bahwa pembelajaran mungkin tidak selalu online. Seseorang mungkin ingin meningkatkan model yang ada setelah mengamati perbedaan yang signifikan dalam prediksi yang lebih baru.

pengguna140323
sumber
Jawabannya sangat tergantung pada domain bisnis dan aplikasi model tertentu.
Pete

Jawaban:

16
  1. Setelah model dilatih dan Anda mendapatkan data baru yang dapat digunakan untuk pelatihan, Anda dapat memuat model sebelumnya dan melatihnya. Misalnya, Anda dapat menyimpan model Anda sebagai .picklefile dan memuatnya dan melatihnya lebih lanjut ketika data baru tersedia. Perhatikan bahwa agar model dapat memprediksi dengan benar the new training data should have a similar distribution as the past data,.
  2. Prediksi cenderung menurun berdasarkan pada dataset yang Anda gunakan. Misalnya, jika Anda mencoba untuk berlatih menggunakan data twitter dan Anda telah mengumpulkan data mengenai produk yang banyak ditweet pada hari itu. Tetapi jika Anda menggunakan tweet setelah beberapa hari ketika produk itu bahkan tidak dibahas, itu mungkin bias. The frequency will be dependent on datasetdan tidak ada waktu khusus untuk menyatakannya. If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model.
  3. Mengoptimalkan parameter pada data agregat tidak terlalu cocok. Data besar tidak menyiratkan overfitting. Gunakan validasi silang untuk memeriksa kecocokan berlebihan.
Hima Varsha
sumber
Jadi jika sifat dari set data yang masuk tetap konsisten di seluruh, tidak ada yang baru bahwa model dapat belajar?
user140323
Jika data tidak berubah dan jika Anda senang dengan keakuratan model saat ini, saya tidak melihat gunanya melatih kembali.
Hima Varsha
@Aayush, Mungkin Anda dapat menggunakan data yang masuk sebagai set validasi dan memeriksa model Anda saat ini.
Hima Varsha
Masih terlalu dini untuk menerimanya, tetapi saya akan menerimanya. Terima kasih!
user140323
Halo @ tktktk0711, saya tidak memiliki kode saat ini untuk menunjukkan kepada Anda. Tapi cukup lakukan ini yang menunjukkan tautan lain dengan kode. github.com/tflearn/tflearn/issues/39
Hima Varsha
20

Ketika pengamatan baru tersedia, ada tiga cara untuk melatih kembali model Anda:

  1. Daring: setiap kali pengamatan baru tersedia, Anda menggunakan titik data tunggal ini untuk lebih lanjut melatih model Anda (misalnya memuat model Anda saat ini dan lebih lanjut melatihnya dengan melakukan backpropagation dengan pengamatan tunggal itu). Dengan metode ini, model Anda belajar secara berurutan dan semacam beradaptasi secara lokal dengan data Anda sehingga akan lebih dipengaruhi oleh pengamatan terbaru dibandingkan dengan pengamatan sebelumnya. Ini mungkin berguna dalam situasi di mana model Anda perlu beradaptasi secara dinamis dengan pola baru dalam data. Ini juga berguna ketika Anda berhadapan dengan set data yang sangat besar yang pelatihannya tidak mungkin dilakukan sekaligus.
  2. Offline: Anda menambahkan pengamatan baru ke set data yang sudah ada dan sepenuhnya melatih ulang model Anda pada set data baru yang lebih besar ini. Ini umumnya mengarah pada perkiraan global yang lebih baik dari fungsi target dan sangat populer jika Anda memiliki kumpulan data tetap, atau jika Anda tidak sering memiliki pengamatan baru. Namun itu tidak taktis untuk set data besar.
  3. nn

Sebagian besar model saat ini akan menggunakan batch / mini batch dan pilihan untuk ukuran batch tergantung pada aplikasi dan model Anda. Memilih kumpulan ukuran yang tepat sama dengan memilih frekuensi yang tepat untuk melatih kembali model Anda. Jika pengamatan baru Anda memiliki varian rendah dengan data yang ada, saya akan menyarankan batch yang lebih besar (mungkin 256-512) dan jika sebaliknya pengamatan baru cenderung sangat bervariasi dengan data yang ada, gunakan batch kecil (8-256). Pada akhirnya, ukuran kumpulan adalah jenis seperti parameter-hiper lainnya yang perlu Anda sesuaikan dan yang spesifik untuk data Anda

tombarti
sumber
Hai, saya ingin bertanya kepada Anda secara online: sebagai online untuk data baru. Apakah metode ini membatasi beberapa Model ML, maksud saya bukan pembelajaran seluruh mesin.
tktktk0711
Apakah Anda tahu ada contoh tensorflow yang menggunakan batch ?
maxisme
1

Masalah Anda ada di bawah payung metode Pembelajaran Online. Dengan asumsi aliran data yang datang, Anda dapat menggunakan metode Stochastic Gradient Descent untuk memperbarui parameter model Anda menggunakan contoh tunggal itu.

Jika fungsi biaya Anda adalah:

minθJ(x,y,θ)

θxsaya,ysaya

θt=θt-1-θJ(xsaya,ysaya)

Ini pada dasarnya SGD dengan ukuran batch 1.

Ada satu trik lain, Anda dapat mengadopsi metode berbasis jendela / buffer, di mana Anda buffer beberapa contoh dari stream dan memperlakukannya sebagai batch dan menggunakan batch SGD. Dalam hal ini persamaan pembaruan akan menjadi:

θt=θt-1-sayaθJ(xsaya,ysaya)

Ini pada dasarnya adalah SGD mini-batch.

SHASHANK GUPTA
sumber
0

Pertanyaannya: HARUS Anda berlatih kembali?

Jawabannya tergantung pada apa yang coba dilakukan oleh model Anda dan dalam lingkungan apa ia diterapkan.

Izinkan saya menjelaskan dengan beberapa contoh:

Misalkan model Anda mencoba untuk memprediksi perilaku pelanggan, misalnya seberapa besar kemungkinan pelanggan untuk membeli produk Anda diberikan penawaran yang disesuaikan untuknya. Jelas, pasar berubah seiring waktu, preferensi pelanggan berubah, dan pesaing Anda menyesuaikan. Anda harus menyesuaikan juga, jadi Anda perlu melatih ulang secara berkala. Dalam kasus seperti itu saya akan merekomendasikan untuk menambahkan data baru, tetapi juga menghilangkan data lama yang tidak relevan lagi. Jika pasar berubah dengan cepat, Anda bahkan harus mempertimbangkan pelatihan ulang secara berkala hanya berdasarkan data baru.

Di sisi lain, jika model Anda mengklasifikasikan beberapa pencitraan (misalnya x-ray atau MRI) ke kondisi medis, dan model berkinerja baik, Anda tidak perlu berlatih ulang jika tidak ada perubahan dalam teknologi atau dalam pengetahuan medis . Menambahkan lebih banyak data tidak akan banyak meningkat.

Yossi Levy
sumber