Sinir ağlarında tren, validasyon ve test seti arasındaki fark nedir?


155

Bu kütüphaneyi bir öğrenme ajanı uygulamak için kullanıyorum .

Eğitim vakalarını oluşturdum, ancak doğrulama ve test setlerinin ne olduğundan emin değilim.
Öğretmen diyor ki:

% 70'i tren vakası,% 10'u test vakası ve geri kalan% 20'si validasyon vakası olmalıdır.

Düzenle

Eğitim için bu kod var, ancak eğitimi ne zaman durduracağım konusunda hiçbir fikrim yok .

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

Düzenle

Doğrulama verileriyle ortalama 0,2 hatası alabilirim, belki 20 eğitim tekrarından sonra% 80 olmalı?

ortalama hata = doğrulama verileri girişi / doğrulama verilerinin boyutu göz önüne alındığında, doğrulama hedefi ve çıkışı arasındaki mutlak farkın toplamı.

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

1
“... bu% 80 olmalı?” Hayır, ortalama hata ve yüzde doğru iki farklı şeydir. Hedef değerinin 5,0 olduğunu ve nöronunuzun 4,8 (yani 0,2 hatası) döndürdüğünü varsayalım. Verilere bağlı olarak, 0,2'lik bir hata kabul edilebilir, bu nedenle hata yeterince küçükse, o örneğin doğru şekilde belirtildiğini düşünebilirsiniz. Dolayısıyla, 10 hedefiniz varsa ve bunlardan 7'si için sınıflandırma hatanız kabul edilebilir aralıktaysa, verilerin% 70'ini doğru bir şekilde sınıflandırırdınız.
Kiril

Öğretmeniniz için gerekli olan fesih kriterleri nelerdir?
Kiril

Yanıtlar:


292

Eğitim ve geçerlilik setleri eğitim sırasında kullanılır.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

Eğitimi tamamladıktan sonra, test setinize karşı koşarsınız ve doğruluğun yeterli olduğunu doğrularsınız.

Eğitim Seti : Bu veri seti sinir ağı üzerindeki ağırlıkları ayarlamak için kullanılır.

Doğrulama Kümesi : bu veri kümesi aşırı takmayı en aza indirmek için kullanılır. Bu veri seti ile ağın ağırlıklarını ayarlamıyorsunuz, sadece eğitim veri setindeki doğruluktaki herhangi bir artışın, daha önce ağa gösterilmeyen bir veri setine göre doğrulukta bir artış sağladığını doğrulıyorsunuz, veya en azından ağ bu konuda eğitim almamışsa (yani doğrulama veri kümesi). Egzersiz veri setindeki doğruluk artar, ancak doğrulama veri setindeki doğruluk aynı kalır veya azalırsa, sinir ağınıza fazla takarsınız ve eğitimi durdurmanız gerekir.

Test Seti : Bu veri seti yalnızca ağın gerçek tahmini gücünü onaylamak için nihai çözümü test etmek için kullanılır.


onun python: xi sadece bir dur kriterleri alamıyorum .. değerleri yakınsama .. ama her zaman bazı flutuation ile ..
Daniel

@Daniel, eğitim doğruluğu dalgalanıyor mu yoksa doğrulama doğruluğu dalgalanıyor mu? Doğrulama hassasiyetinizin dalgalanması mümkündür, ancak eğitim doğruluğunun dalgalanma olasılığı daha düşüktür. "İnput, target = p" demek, her ikisini de p olarak ayarladığınız anlamına mı geliyor?
Kiril

Python ile çok iyi değilim, bu yüzden kod benim için biraz kafa karıştırıcı görünüyor ... genel olarak, doğrulama doğruluğunuz belirli bir eşikle (% 70 veya% 90), etki alanı için mantıklı ne olursa olsun, eğitimi durdurmak istediğinizde verin.
Kiril

5
Doğrulama seti eğitim sürecinde kullanılır. Test seti değil. Test seti, 1) eğitim setinin yeterli olup olmadığını ve 2) doğrulama setinin aşırı takmayı önleme işini yapıp yapmadığını görmenizi sağlar. Test setini eğitim sürecinde kullanırsanız, bu sadece başka bir doğrulama seti olacaktır ve ağda yeni veriler beslendiğinde ne olacağını göstermez.
Anton Andreev

2
@AntonAndreev Anlamıyorum. Cevabınıza göre , sinir ağının ağırlıklarını ayarlamak için ne ne de validation setne test setkullanılır. Neden validation setve gibi ağırlıkları eğitmek için kullanılmayan aynı veri kümesini kullanamıyorsunuz test set? Onları ayrı tutarak ne kazanılır?
Gili

77

Eğitim seti : Öğrenme için kullanılan, yani sınıflandırıcının parametrelerine [yani ağırlıkları] uygun bir dizi örnek.

Doğrulama seti : Bir sınıflandırıcının parametrelerini (yani, ağırlıkları değil mimariyi) ayarlamak için, örneğin bir sinir ağındaki gizli birimlerin sayısını seçmek için kullanılan bir dizi örnek.

Test seti : Sadece tam olarak tanımlanmış bir sınıflandırıcının performansını [genelleme] değerlendirmek için kullanılan bir dizi örnek.

Gönderen ftp://ftp.sas.com/pub/neural/FAQ1.txt bölümünde " evren, örneklem nelerdir, eğitim seti, tasarım seti, doğrulama "

Hata yüzeyi, veri kümenizdeki farklı veri kümeleri için farklı olacaktır (toplu öğrenme). Bu nedenle, test seti verileriniz için çok iyi bir yerel minima bulursanız, bu çok iyi bir nokta olmayabilir ve aynı sorun için başka bir veri kümesi tarafından üretilen yüzeyde çok kötü bir nokta olabilir. Bu nedenle, sadece eğitim seti için iyi bir ağırlık konfigürasyonu bulmakla kalmayıp aynı zamanda yeni verileri (eğitim setinde olmayan) iyi bir hata ile tahmin edebilen böyle bir modeli hesaplamanız gerekir. Başka bir deyişle ağ , verileri öğrenmesi ve eğitim verilerinin üzerine sığarak setin oluşturduğu eğitimi hatırlamaması veya yüklememesi için örnekleri genelleştirebilmelidir .

Doğrulama veri seti, ağı eğitmek için doğrudan kullanmadığınız, öğrenmek istediğiniz işlev için bir veri kümesidir. Ağı, eğitim veri kümesi olarak adlandırdığınız bir veri kümesiyle eğitiyorsunuz. Ağı eğitmek için degrade tabanlı algoritma kullanıyorsanız, hata yüzeyi ve bir noktadaki degrade, eğitim veri setine tamamen bağlı olacaktır, bu nedenle eğitim veri seti, ağırlıkları ayarlamak için doğrudan kullanılır. Ağı fazla takmadığınızdan emin olmak için, doğrulama veri kümesini ağa girmeniz ve hatanın belirli bir aralıkta olup olmadığını kontrol etmeniz gerekir. Doğrulama seti, ağın ağırlıklarını ayarlamak için doğrudan kullanılmadığından, doğrulama için iyi bir hata ve ayrıca test seti, ağın tren seti örnekleri için iyi öngördüğünü gösterir,

Erken durma, eğitimi durdurmanın bir yoludur. Farklı varyasyonlar vardır, ana hat, hem tren hem de doğrulama seti hataları izlenir, her yinelemede (backprop ve kardeşler) tren hatası azalır ve ilk önce doğrulama hatası azalır. Doğrulama hatası yükselmeye başladığı anda eğitim durdurulur. Bu noktada ağırlık konfigürasyonu, eğitim verilerini ve ağ tarafından görülmeyen verileri iyi tahmin eden bir modeli gösterir . Ancak doğrulama verileri aslındaağırlık yapılandırmasını seçmek için ağırlık yapılandırmasını dolaylı olarak etkiler. Test seti devreye girer. Bu veri seti asla eğitim sürecinde kullanılmaz. Doğrulama kümesine bağlı olarak bir model seçildiğinde, test kümesi verileri ağ modeline uygulanır ve bu kümenin hatası bulunur. Bu hata, aynı sorun için tamamen yeni verilerden bekleyebileceğimiz hatanın bir temsilcisidir.

DÜZENLE:

Ayrıca, bir doğrulama kümesi için yeterli veriye sahip değilseniz , parametreleri ayarlamak ve test hatasını tahmin etmek için çapraz doğrulamayı kullanabilirsiniz .


11
Bunun gibi anlamsız yorumlar yayınlamam gerektiğini biliyorum, ama bu cevabı çok takdir ettiğimi söylemek istedim :)
Llamageddon

6

Çapraz doğrulama seti model seçimi için kullanılır, örneğin, belirli bir parametre seti için en az miktarda hata içeren polinom modeli seçin. Test seti daha sonra seçilen modeldeki genelleme hatasını bildirmek için kullanılır. Buradan: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
Andrew Ng'in derslerini de alıyorum ve sana katılıyorum. Doğrulama seti eğitimin bir parçası olmalıdır. Sadece hiperparametreleri döndürmek için kullanılmalıdır.
Jack Peng

4

İçin bir doğrulama kümesi oluşturduk

  • Bir modelin eğitim sırasında ne kadar genel olduğunu ölçün
  • Bir modelin eğitimini ne zaman durduracağımızı söyleyin; Doğrulama kaybının azalması durduğunda (ve özellikle doğrulama kaybı artmaya başladığında ve eğitim kaybı hala azaldığında)

Doğrulama kümesi neden kullanıldı :

Doğrulama kümesi neden kullanılır?


3

Bir modeli bir eğitim setinde eğittiğinizi ve ardından bir test setindeki performansını ölçtüğünüzü varsayalım. Hala iyileştirme için yer olduğunu düşünüyorsunuz ve hiper-parametreleri değiştirmeye çalışıyorsunuz (Model Sinir Ağı ise - hiper-parametreler katman veya katmandaki düğüm sayısıdır). Şimdi biraz daha iyi bir performans elde edersiniz. Bununla birlikte, model başka bir verilere maruz kaldığında (test ve eğitim setinde değil) aynı doğruluk seviyesini elde edemeyebilirsiniz. Bunun nedeni, test setinde daha iyi doğruluk elde etmek için hiper parametreleri değiştirirken bazı önyargıların ortaya çıkmasıdır. Temel olarak, modeli ve hiper parametreleri, belirli bir eğitim seti için en iyi modeli üretmek üzere uyarladınız.

Yaygın bir çözüm, bir doğrulama seti oluşturmak için eğitim setini daha fazla bölmektir . Şimdi var

  • Eğitim Seti
  • test seti
  • doğrulama seti

Daha önce olduğu gibi ilerlersiniz ancak bu sefer performansı test etmek ve hiper parametrelerini değiştirmek için doğrulama kümesini kullanırsınız. Daha spesifik olarak, azaltılmış egzersiz setinde çeşitli hiper parametrelere sahip birden fazla modeli eğitirsiniz (yani, tam eğitim seti eksi doğrulama setinden eksi olarak) ve doğrulama setinde en iyi performansı gösteren modeli seçersiniz.

Doğrulama setinde en iyi performansı gösteren modeli seçtikten sonra, en iyi modeli tam eğitim setinde (doğrulama seti dahil) eğitirsiniz ve bu size son modeli verir.

Son olarak, genelleme hatasını tahmin etmek için bu son modeli test setinde değerlendirirsiniz.


0

Eğitim Veri Kümesi : Modele sığdırmak için kullanılan veri örneği.

Doğrulama Veri Kümesi : Model hiperparametreleri ayarlarken eğitim veri kümesine uygun bir modelin tarafsız bir değerlendirmesini sağlamak için kullanılan veri örneği. Validasyon veri setindeki beceri model konfigürasyonuna dahil edildiğinde değerlendirme daha taraflı hale gelir.

Test Veri Kümesi : Eğitim veri kümesine uyan bir son modelin tarafsız bir değerlendirmesini sağlamak için kullanılan veri örneği.


-15

Basit bir deyişle, Eğitim seti, Test seti, Doğrulama setini tanımlayın

Eğitim seti: En yakın komşuları bulmak için kullanılır. Doğrulama seti: Tren setine uygulanan farklı k'yi bulmak içindir. Test seti: İleride maksimum doğruluk ve görünmeyen verileri bulmak için kullanılır.

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.