2016-05-10 36 views
7

Ben öğrenme ve sinir ağları ile deneme ve aşağıdaki konuda daha deneyimli birinden fikir sahibi istiyoruz am:Erken durdurma metriği olarak kayıp mı yoksa doğruluk mu kullanmalıyım?

Ben keras bir Autoencoder tren ('mean_squared_error' kayıp fonksiyonu ve SGD optimize edici), doğrulama kayıp yavaş yavaş azalır. ve doğrulama doğruluğu yükseliyor. Çok uzak çok iyi. Bununla birlikte, bir süre sonra, kayıp azalmaya devam eder, ancak doğruluk aniden daha düşük bir düşük seviyeye düşer.

  • 'Normal' ya da beklenen davranış, doğruluk çok hızlı artıyor ve aniden geri düşmek için yüksek kalıyor mu?
  • Doğrulama kaybı hala azalsa bile, eğitimi maksimum doğrulukta durdurmalı mıyım? Diğer bir deyişle, erken durdurmayı izlemek için metrik olarak val_acc veya val_loss'u kullanın.

Bkz görüntüleri:

Kaybı: (yeşil = val, mavi = tren] enter image description here

Doğruluk: (yeşil = val, mavi = tren] enter image description here

GÜNCELLEME: Aşağıdaki yorumlar beni doğru yöne işaret etti ve sanırım şimdi daha iyi anladım: Birinin aşağıdakileri doğrulayabileceğinin doğru olması güzel olurdu:

  • doğruluk metrik önlemler == Y_true y_pred% 'si ve böylece sadece sınıflandırma için mantıklı. Verilerim gerçek ve ikili özelliklerin birleşimidir. Doğruluk grafiğinin çok dik ve ardından geri düşmesinin nedeni, kaybın azalmaya devam etmesine neden olurken, devre 5000 civarında olduğu için, ağ muhtemelen ikili özelliklerin% + 50'sini doğru olarak tahmin ediyordu. Antrenman devam ederken, 12000 civarında, gerçek ve ikili özelliklerin birlikte tahminleri gelişti, dolayısıyla azalan kayıp, ancak ikili özelliklerin tek başına tahmin edilmesi biraz daha az doğrudur. Kayıp azalırken, doğruluk düşer. öngörü gerçek zamanlı ya da veri doğrusu ayrık daha sonra MSE kullanmak sürekli ise

+0

Sınıflandırma görevi için MSE kullanıyor musunuz? –

+0

Bu ilginç bir olaydır. Oto-kodlayıcılarla hiç deneyimim olmasa da, bunun aşırı derecede aşırı takılma durumu olup olmadığını merak ediyorum. Ağ karmaşıklığınızı azaltmayı denediniz mi (daha küçük veya daha fazla regülizasyon) (belki de artan bir doğrulama altkümesiyle kontrol edin?) Hayal edebiliyorum, farklı görünecektir. – sascha

+0

@ MarcinMożejko: Mse kullanıyorum, ama sınıflandırma değil, otomatik kodlayıcı. – Mark

cevap

1

Eğer kaybını veya doğruluğunu kullanılıp kullanılmayacağını soruyorsan ... o zaman burada (Mean cevap

olduğunu Kare Hatası) çünkü değerler gerçek zamanlı. Ancak Ayrık değerler durumunda (yani) sınıflandırma veya kümeleme, doğruluk değerini kullanır, çünkü verilen değerler yalnızca 0 veya 1'dir. Dolayısıyla, burada MSE kavramı uygulanmayacaktır, doğruluk kullanımı doğruluk = hata değerleri yok/toplam değerler * 100.

+0

nasıl hesaplandığını öğrenmek gerekir – Naren

+0

https://stackoverflow.com/questions/47859737/keras-error-in-fit-method-beklenen-model-2-to-have-shape-none-252-252-1-b herhangi bir öneriniz? –