Apa perbedaan antara kereta, validasi dan set tes, dalam jaringan saraf?

155

Saya menggunakan perpustakaan ini untuk mengimplementasikan agen pembelajaran.

Saya telah membuat kasus pelatihan, tetapi saya tidak tahu pasti apa validasi dan set tes.
Sang guru berkata:

70% harus menjadi kasus kereta api, 10% akan menjadi kasus uji dan sisanya 20% harus menjadi kasus validasi.

sunting

Saya memiliki kode ini untuk pelatihan, tetapi saya tidak tahu kapan harus berhenti pelatihan.

  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

sunting

Saya bisa mendapatkan kesalahan rata-rata 0,2 dengan data validasi, setelah mungkin 20 kali pelatihan, seharusnya 80%?

rata-rata kesalahan = jumlah perbedaan absolut antara target validasi dan output, mengingat input data validasi / ukuran data validasi.

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
Daniel
sumber
1
"... itu seharusnya 80%?" Tidak, kesalahan rata-rata dan persen benar adalah dua hal yang berbeda. Misalkan nilai target Anda adalah 5,0 dan neuron Anda kembali 4,8 (yaitu kesalahan 0,2). Tergantung pada data kesalahan 0,2 mungkin dapat diterima, jadi jika kesalahan cukup kecil maka Anda dapat mempertimbangkan contoh yang ditentukan dengan benar. Jadi jika Anda memiliki 10 target dan kesalahan klasifikasi Anda untuk 7 di antaranya berada dalam kisaran yang dapat diterima, maka Anda akan mengklasifikasikan 70% dari data dengan benar.
Kiril
Apa kriteria pemutusan yang disyaratkan oleh guru Anda?
Kiril

Jawaban:

292

Set pelatihan dan validasi digunakan selama pelatihan.

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

Setelah Anda selesai pelatihan, maka Anda menjalankan terhadap set pengujian Anda dan memverifikasi bahwa keakuratannya cukup.

Set Pelatihan : set data ini digunakan untuk menyesuaikan bobot pada jaringan saraf.

Set Validasi : set data ini digunakan untuk meminimalkan overfitting. Anda tidak menyesuaikan bobot jaringan dengan set data ini, Anda hanya memverifikasi bahwa setiap peningkatan akurasi atas set data pelatihan benar-benar menghasilkan peningkatan akurasi atas set data yang belum pernah ditampilkan ke jaringan sebelumnya, atau setidaknya jaringan belum dilatih untuk itu (yaitu kumpulan data validasi). Jika akurasi atas set data pelatihan meningkat, tetapi akurasi atas set data validasi tetap sama atau menurun, maka Anda overfitting jaringan saraf Anda dan Anda harus menghentikan pelatihan.

Set Pengujian : set data ini hanya digunakan untuk menguji solusi akhir untuk mengkonfirmasi daya prediksi aktual dari jaringan.

Kiril
sumber
python nya: xi hanya tidak bisa mendapatkan kriteria berhenti .. nilai-nilai konvergen .. tetapi selalu dengan beberapa flutuation ..
Daniel
@Aniel, apakah akurasi pelatihan berfluktuasi atau akurasi validasinya berfluktuasi? Mungkin saja akurasi validasi Anda berfluktuasi, tetapi kecil kemungkinan akurasi pelatihannya berfluktuasi. Ketika Anda mengatakan "input, target = p" apakah itu berarti Anda mengatur keduanya ke p?
Kiril
Saya tidak terlalu mahir dengan python, jadi kodenya terlihat sedikit membingungkan bagi saya ... secara umum Anda ingin menghentikan pelatihan ketika akurasi validasi Anda memenuhi batas tertentu, katakanlah 70% atau 90%, apa pun yang masuk akal untuk domain tersebut dari data Anda.
Kiril
5
Set validasi digunakan dalam proses pelatihan. Set pengujian tidak. Set Pengujian memungkinkan 1) untuk melihat apakah set pelatihan sudah cukup dan 2) apakah set validasi melakukan pekerjaan mencegah overfitting. Jika Anda menggunakan set pengujian dalam proses pelatihan maka itu hanya akan menjadi set validasi lainnya dan itu tidak akan menunjukkan apa yang terjadi ketika data baru dimasukkan dalam jaringan.
Anton Andreev
2
@AntonAndreev Saya tidak mengerti. Menurut jawaban Anda, keduanya validation settidak test setdigunakan untuk mengatur bobot jaringan saraf. Mengapa Anda tidak bisa menggunakan kumpulan data yang sama, tidak digunakan untuk melatih bobot, seperti validation setdan test set? Apa yang diperoleh dengan memisahkan mereka?
Gili
77

Set Pelatihan : Satu set contoh yang digunakan untuk belajar, yaitu agar sesuai dengan parameter [yaitu, bobot] dari classifier.

Kumpulan Validasi : Seperangkat contoh yang digunakan untuk menyetel parameter [mis. Arsitektur, bukan bobot] dari classifier, misalnya untuk memilih jumlah unit tersembunyi dalam jaringan saraf.

Kumpulan uji : Seperangkat contoh yang hanya digunakan untuk menilai kinerja [generalisasi] dari penggolong penuh yang ditentukan.

Dari ftp://ftp.sas.com/pub/neural/FAQ1.txt bagian " Apa populasi, sampel, set pelatihan, set desain, validasi "

Permukaan kesalahan akan berbeda untuk set data yang berbeda dari set data Anda (pembelajaran batch). Karenanya, jika Anda menemukan minima lokal yang sangat bagus untuk data set pengujian Anda, itu mungkin bukan poin yang sangat baik, dan mungkin merupakan titik yang sangat buruk di permukaan yang dihasilkan oleh beberapa set data lain untuk masalah yang sama. Oleh karena itu Anda perlu menghitung model seperti itu yang tidak hanya menemukan konfigurasi bobot yang baik untuk set pelatihan tetapi juga harus dapat memprediksi data baru (yang tidak ada dalam set pelatihan) dengan kesalahan yang baik. Dengan kata lain jaringan harus dapat menggeneralisasi contoh-contoh sehingga ia mempelajari data dan tidak hanya mengingat atau memuat set pelatihan dengan overfitting data pelatihan.

Set data validasi adalah serangkaian data untuk fungsi yang ingin Anda pelajari, yang tidak Anda gunakan secara langsung untuk melatih jaringan. Anda melatih jaringan dengan satu set data yang Anda sebut kumpulan data pelatihan. Jika Anda menggunakan algoritma berbasis gradien untuk melatih jaringan, maka permukaan kesalahan dan gradien di beberapa titik akan sepenuhnya bergantung pada set data pelatihan sehingga set data pelatihan secara langsung digunakan untuk menyesuaikan bobot. Untuk memastikan Anda tidak overfit jaringan Anda perlu memasukkan dataset validasi ke jaringan dan memeriksa apakah kesalahan itu dalam beberapa rentang. Karena set validasi tidak digunakan secara langsung untuk menyesuaikan bobot netowork, maka kesalahan yang baik untuk validasi dan juga set tes menunjukkan bahwa jaringan memprediksi dengan baik untuk contoh set kereta,

Berhenti lebih awal adalah cara untuk menghentikan pelatihan. Ada variasi berbeda yang tersedia, garis besarnya adalah, baik kesalahan set kereta dan validasi dipantau, kesalahan kereta berkurang pada setiap iterasi (backprop dan saudara) dan pada awalnya kesalahan validasi berkurang. Pelatihan dihentikan pada saat kesalahan validasi mulai meningkat. Konfigurasi bobot pada titik ini menunjukkan model, yang memprediksi data pelatihan dengan baik, serta data yang tidak terlihat oleh jaringan . Tetapi karena data validasi sebenarnyamempengaruhi konfigurasi bobot secara tidak langsung untuk memilih konfigurasi bobot. Di sinilah set Tes masuk. Set data ini tidak pernah digunakan dalam proses pelatihan. Setelah model dipilih berdasarkan set validasi, data set uji diterapkan pada model jaringan dan kesalahan untuk set ini ditemukan. Kesalahan ini merupakan perwakilan dari kesalahan yang dapat kita harapkan dari data yang benar-benar baru untuk masalah yang sama.

EDIT:

Juga, dalam hal Anda tidak memiliki cukup data untuk set validasi, Anda dapat menggunakan crossvalidation untuk menyesuaikan parameter serta memperkirakan kesalahan pengujian.

phoxis
sumber
11
Saya tahu saya tidak seharusnya memposting komentar yang tidak berarti seperti ini, tetapi ingin memberi tahu Anda bahwa saya sangat menghargai jawaban ini :)
Llamageddon
6

Set validasi silang digunakan untuk pemilihan model, misalnya, pilih model polinomial dengan jumlah kesalahan paling sedikit untuk set parameter yang diberikan. Set tes kemudian digunakan untuk melaporkan kesalahan generalisasi pada model yang dipilih. Dari sini: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets

pengguna2410953
sumber
1
Saya mengambil kelas Andrew Ng juga dan saya setuju dengan Anda. Perangkat validasi harus menjadi bagian dari pelatihan. Seharusnya hanya digunakan untuk mengubah hyperparameters.
Jack Peng
4

Kami membuat set validasi ke

  • Ukur seberapa baik suatu model digeneralisasi, selama pelatihan
  • Beri tahu kami kapan harus berhenti melatih suatu model; Ketika kehilangan validasi berhenti berkurang (dan terutama ketika kehilangan validasi mulai meningkat dan hilangnya pelatihan masih menurun)

Mengapa set validasi digunakan :

Mengapa set validasi digunakan

Nil Akash
sumber
3

Katakanlah Anda melatih model pada set pelatihan dan kemudian mengukur kinerjanya pada set tes. Anda berpikir bahwa masih ada ruang untuk perbaikan dan Anda mencoba mengubah parameter-hiper (Jika model adalah Jaringan Saraf - parameter-hyper adalah jumlah lapisan, atau node dalam lapisan). Sekarang Anda mendapatkan kinerja yang sedikit lebih baik. Namun, ketika model dikenakan data lain (tidak dalam set pengujian dan pelatihan) Anda mungkin tidak mendapatkan tingkat akurasi yang sama. Ini karena Anda memperkenalkan beberapa bias sambil mengubah parameter hiper untuk mendapatkan akurasi yang lebih baik pada set pengujian. Anda pada dasarnya telah mengadaptasi model dan hiper-parameter untuk menghasilkan model terbaik untuk set pelatihan tertentu.

Solusi umum adalah dengan memecah set pelatihan lebih lanjut untuk membuat set validasi . Sekarang kamu punya

  • perlengkapan latihan
  • set pengujian
  • set validasi

Anda melanjutkan seperti sebelumnya tetapi kali ini Anda menggunakan set validasi untuk menguji kinerja dan men-tweak parameter-hiper. Lebih khusus lagi, Anda melatih banyak model dengan berbagai hiper-parameter pada set pelatihan yang dikurangi (yaitu, set pelatihan penuh dikurangi set validasi), dan Anda memilih model yang berkinerja terbaik pada set validasi.

Setelah Anda memilih model dengan kinerja terbaik pada set validasi, Anda melatih model terbaik pada set pelatihan penuh (termasuk set validasi), dan ini memberi Anda model terakhir.

Terakhir, Anda mengevaluasi model akhir ini pada set tes untuk mendapatkan perkiraan kesalahan generalisasi.

Aditya
sumber
0

Pelatihan Dataset : Sampel data yang digunakan agar sesuai dengan model.

Validasi Dataset : Sampel data yang digunakan untuk memberikan evaluasi model yang tidak bias pada dataset pelatihan saat menyetel model hiperparameter. Evaluasi menjadi lebih bias karena keterampilan pada dataset validasi dimasukkan ke dalam konfigurasi model.

Test Dataset : Sampel data yang digunakan untuk memberikan evaluasi yang tidak bias dari model akhir yang sesuai pada dataset pelatihan.

Farzana Khan
sumber
-15

Dengan kata sederhana, tentukan set Pelatihan, set Tes, set Validasi

Set pelatihan: Digunakan untuk menemukan tetangga terdekat. Set validasi: Adalah untuk menemukan k yang berbeda yang berlaku untuk set train. Kumpulan uji: Digunakan untuk menemukan akurasi maksimum dan data yang tidak terlihat di masa mendatang.

Gaurav Pal
sumber