Yeni gözlemler mevcutsa, bir model yeniden eğitilmeli mi?


28

Bu yüzden, bu konuda herhangi bir literatür bulamamıştım, ancak düşünce vermeye değer bir şey gibi görünüyor:

  • Yeni gözlemler mevcutsa model eğitimi ve optimizasyondaki en iyi uygulamalar nelerdir?

  • Tahminler bozulmaya başlamadan önce bir modelin yeniden eğitim süresi / sıklığını belirlemenin bir yolu var mı?

  • Parametreler toplanmış veriler için yeniden optimize edilmişse aşırı uygun mu?

Öğrenmenin mutlaka çevrimiçi olmadığına dikkat edin . Daha yakın tahminlerde önemli farklılıklar gözlemlendikten sonra mevcut bir modeli yükseltmek istenebilir.


Cevap, iş alanına ve özel model uygulamasına oldukça bağlıdır.
Pete

Yanıtlar:


16
  1. Bir model eğitildiğinde ve eğitim için kullanılabilecek yeni veriler aldığınızda, önceki modeli yükleyebilir ve üzerine eğitim alabilirsiniz. Örneğin, modelinizi bir .pickledosya olarak kaydedebilir ve yükleyebilir ve yeni veriler mevcut olduğunda daha fazla eğitebilirsiniz. Modelin doğru bir şekilde tahmin edebildiğini unutmayın the new training data should have a similar distribution as the past data.
  2. Tahminler, kullandığınız veri kümesine bağlı olarak bozulma eğilimindedir. Örneğin, twitter verilerini kullanarak eğitim almaya çalışıyorsanız ve o gün geniş çapta tweetlenen bir ürünle ilgili veri topladıysanız. Ancak, bu ürünün tartışılmadığı birkaç gün sonra tweet kullanırsanız, önyargılı olabilir. The frequency will be dependent on datasetve böyle belirtmek için belirli bir zaman yoktur. If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model.
  3. Toplanan verilerdeki parametreleri optimize etmek fazla uygun değildir. Büyük veri, çok fazla uydurma anlamına gelmez. Fazla uyumu kontrol etmek için çapraz doğrulama kullanın.

Öyleyse, girilen veri setinin doğası boyunca tutarlı kalırsa, modelin öğrenebileceği yeni bir şey yok mu?
user140323,

Veriler değişmezse ve mevcut modelin doğruluğundan memnunsanız, onu yeniden değerlendirmenin bir anlamı yok.
Hima Varsha,

@Aayush, Belki gelen verileri doğrulama seti olarak kullanabilir ve mevcut modelinizi kontrol edebilirsiniz.
Hima Varsha,

Hala kabul etmek için çok erken, ama kabul edeceğim. Teşekkürler!
user140323

Merhaba @ tktktk0711, Şu anda size gösterecek kodum yok. Ama sadece koddan geçen başka bir bağlantıya işaret eden bir şeyden geçin. github.com/tflearn/tflearn/issues/39
Hima Varsha

20

Yeni gözlemler mevcut olduğunda, modelinizi yeniden eğitmenin üç yolu vardır:

  1. Çevrimiçi: yeni bir gözlem her mevcut olduğunda, bu tek veri noktasını modelinizi daha da geliştirmek için kullanırsınız (örneğin, şu anki modelinizi yükleyin ve bu tek gözlem ile geri yayını yaparak onu daha fazla eğitin). Bu yöntemle, modeliniz sıralı bir şekilde öğrenir ve verilerinize yerel olarak adapte olur, çünkü bu son gözlemlerden daha eski gözlemlerden daha fazla etkilenir. Bu, modelinizin verideki yeni kalıplara dinamik olarak adapte olması gereken durumlarda faydalı olabilir. Aynı zamanda bunların hepsinin üzerinde bir eğitim almanın imkansız olduğu çok büyük veri setleriyle uğraşırken de faydalıdır.
  2. Çevrimdışı: yeni gözlemleri mevcut veri setinize ekler ve bu yeni, daha büyük veri setinde modelinizi tamamen yeniden gözden geçirirsiniz. Bu genellikle hedef fonksiyonun daha iyi bir küresel yaklaşımına yol açar ve sabit bir veri kümeniz varsa veya sık sık yeni gözlemleriniz yoksa çok popülerdir. Ancak büyük veri kümeleri için pratik değildir.
  3. nn

Günümüzde çoğu model parti / mini seri kullanır ve partinin boyutu için seçim uygulamanıza ve modelinize bağlıdır. Doğru boyuttaki partiyi seçmek, modelinizi yeniden eğitmek için doğru frekansı seçmeye eşdeğerdir. Yeni gözleminiz mevcut verilerinizle düşük bir farklılık gösteriyorsa, daha büyük gruplar (belki de 256-512) öneririm, aksine yeni gözlemler mevcut verilerinizle büyük ölçüde farklılık gösterirse, küçük gruplar kullanın (8-256). Günün sonunda parti büyüklüğü ayarlamanız gereken ve verilerinize özgü olan başka bir hiper-parametresi gibidir


Merhaba, çevrimiçi olarak sormak istiyorum: yeni veriler için çevrimiçi olarak. Bu yöntem bazı ML Modellerini sınırlandırıyor mu, tüm makine öğrenmesini kastetmiyorum.
tktktk0711

Toplu iş kullanan herhangi bir tensorflow örneği biliyor musunuz ?
maks.

1

Sorununuz Çevrimiçi Öğrenim metodları şemsiyesi altında geliyor. Bir veri akışının geldiğini varsayarsak, bu tek örneği kullanarak model parametrelerinizi güncellemek için Stokastik Degrade İniş yöntemini kullanabilirsiniz.

Maliyet fonksiyonunuz şuysa:

minθJ(x,y,θ)

θxben,yben

θt=θt-1-θJ(xben,yben)

Bu, esasen parti büyüklüğü 1 olan SGD'dir.

Başka bir numara var, akıştan bazı örnekleri tamponladığınız ve toplu iş olarak kullanıp toplu SGD kullandığınız bir pencere / tampon tabanlı yöntemi benimseyebilirsiniz. Bu durumda güncelleme denklemi şöyle olacaktır:

θt=θt-1-ΣbenθJ(xben,yben)

Bu aslında mini parti SGD'dir.


0

Soru: Tekrar eğitmelisin?

Cevap, modelinizin ne yapmaya çalıştığına ve hangi ortamda uygulandığına bağlıdır.

Birkaç örnekle açıklayayım:

Modelinizin müşterilerin davranışlarını tahmin etmeye çalıştığını varsayalım; örneğin, müşterinin, kendisine özel bir teklif vererek ürününüzü satın alma olasılığının düşük olduğunu varsayalım. Açıkça görüldüğü üzere piyasa zaman içinde değişmekte, müşterilerin tercihleri ​​değişmekte ve rakipleriniz uyum göstermektedir. Siz de ayarlamalısınız, bu yüzden periyodik olarak yeniden eğitmeniz gerekir. Böyle bir durumda, yeni veri eklemeyi tavsiye ederim, fakat artık alakalı olmayan eski verileri de ihmal ettim. Pazar hızlı değişiyorsa, sadece yeni verilere dayanarak periyodik olarak yeniden eğitim almayı düşünmelisiniz.

Öte yandan, modeliniz tıbbi görüntüleme koşullarına göre bazı görüntülemeleri (örn. Röntgen veya MRI) sınıflandırıyorsa ve model iyi performans gösteriyorsa, teknolojide veya tıbbi teknik bilgide bir değişiklik yoksa yeniden eğitmenize gerek yoktur . Daha fazla veri eklemek çok fazla iyileşmeyecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.