Ada banyak bukti empiris bahwa jaringan saraf yang cukup dalam dapat menghafal label acak pada set data besar (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, "Memahami pembelajaran yang dalam membutuhkan memikirkan kembali generalisasi"). Jadi pada prinsipnya dengan mendapatkan NN yang cukup besar kita selalu dapat mengurangi kesalahan pelatihan menjadi nilai yang sangat kecil, terbatas dalam praktik dengan akurasi numerik, tidak peduli seberapa tidak berarti tugas itu.
Berbagai hal sangat berbeda untuk kesalahan generalisasi . Kami tidak dapat memastikan bahwa untuk setiap masalah pembelajaran, ada model NN yang dapat dipelajari yang dapat menghasilkan kesalahan generalisasi serendah yang diinginkan. Untuk alasan ini langkah pertama adalah
1. Tetapkan harapan Anda dengan benar
Temukan referensi yang memiliki reputasi baik yang memberitahu Anda bahwa ada arsitektur yang dapat mencapai kesalahan generalisasi yang Anda cari, pada kumpulan data Anda atau pada yang paling mirip yang Anda dapat menemukan referensi. Sebagai contoh, lihat di sini
Apa jaringan saraf convolutional state-of-the-art saat ini?
untuk menemukan kinerja terkini (pada saat jawaban) SOTA (State Of The Art) untuk CNN pada berbagai tugas. Sebaiknya Anda mencoba mereproduksi hasil seperti itu pada set data referensi ini, sebelum Anda berlatih menggunakan set data Anda sendiri, sebagai tes bahwa semua infrastruktur Anda sudah terpasang dengan benar.
2. Pastikan prosedur pelatihan Anda sempurna
Semua cek dijelaskan dalam jawaban pertanyaan
Apa yang harus saya lakukan ketika jaringan saraf saya tidak belajar?
untuk memastikan bahwa prosedur pelatihan Anda baik-baik saja, merupakan prasyarat untuk berhasil mengurangi kesalahan generalisasi (jika NN Anda tidak belajar, itu tidak bisa belajar untuk menggeneralisasi). Cek ini termasuk, di antara hal-hal lain:
- tes unit
- pemeriksaan dataset (lihat beberapa sampel input / label acak untuk set pelatihan dan set tes dan periksa apakah labelnya benar; periksa lebar dan ukuran gambar input; kocokan sampel dalam pelatihan / set tes dan lihat apakah itu mempengaruhi hasil; dll.)
- tes pengacakan
- standarisasi versi preprocessing dan paket Anda
- menyimpan buku catatan percobaan numerik
3. Cobalah untuk mendapatkan superconvergence
“Super-Konvergensi: Pelatihan Jaringan Neural yang Sangat Cepat Menggunakan Tarif Belajar Besar” oleh Leslie N. Smith dan Nicholay Topin menunjukkan bahwa dalam beberapa kasus kombinasi angka belajar besar dengan metode tingkat pembelajaran siklus Leslie N. Smith bertindak sebagai pengatur , mempercepat konvergensi dengan urutan besarnya dan mengurangi kebutuhan akan regularisasi yang luas. Jadi ini adalah hal yang baik untuk dicoba sebelumnya
4. Pengaturan regularisasi Anda ke MAXXX
Regularisasi sering meningkatkan waktu pelatihan (buruk), meningkatkan kesalahan pelatihan dan mengurangi kesalahan generalisasi (baik), tetapi terlalu banyak regularisasi sebenarnya dapat meningkatkan kedua kesalahan (kurang fit). Karena alasan ini, dan karena peningkatan waktu pelatihan, sering kali lebih baik untuk memperkenalkan berbagai teknik regularisasi satu per satu, setelah Anda berhasil mengatur setelan pelatihan. Perhatikan bahwa regularisasi dengan sendirinya tidak selalu menyiratkan kesalahan generalisasi Anda akan menjadi lebih kecil: model harus memiliki kapasitas yang cukup besar untuk mencapai sifat generalisasi yang baik. Ini sering berarti bahwa Anda memerlukan jaringan yang cukup dalam, sebelum Anda dapat melihat manfaat dari regularisasi.
Metode regularisasi tertua mungkin adalah penghentian dini dan penurunan berat badan. Beberapa yang lain:
- mengurangi ukuran batch: ukuran batch yang lebih kecil biasanya dikaitkan dengan kesalahan generalisasi yang lebih kecil, jadi ini adalah sesuatu yang harus dicoba. Namun, perhatikan bahwa beberapa orang membantah kegunaan minibatch: menurut pengalaman saya, mereka membantu (selama Anda tidak harus menggunakan ukuran kecil yang gila sepertim = 16), tetapi Elad Hoffer, Itay Hubara, Daniel Soudry Train lebih lama, menggeneralisasi lebih baik: menutup kesenjangan generalisasi dalam pelatihan batch besar jaringan saraf tidak setuju. Perhatikan bahwa jika Anda menggunakan norma batch (lihat di bawah), minibatch yang terlalu kecil akan sangat berbahaya.
- gunakan SGD daripada pengoptimal adaptif: ini sudah dicakup oleh @shimao, jadi saya hanya menyebutkannya demi kelengkapan
- gunakan dropout: jika Anda menggunakan LSTM, gunakan dropout standar hanya untuk unit input dan output dari layer LSTM. Untuk unit berulang (gerbang) gunakan dropout berulang, seperti yang pertama kali ditunjukkan oleh Yarin Gal di Ph.D. tesis . Namun, jika Anda menggunakan CNN, dropout lebih jarang digunakan sekarang. Sebaliknya, Anda cenderung ...
- ... gunakan normalisasi batch: arsitektur CNN terbaru menghindari dropout demi normalisasi batch. Ini bisa jadi hanya iseng saja, atau bisa jadi karena fakta bahwa ternyata dropout dan normalisasi batch tidak bermain baik bersama (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, Memahami Ketidakharmonisan antara Dropout dan Normalisasi Batch oleh Variance) Pergeseran ). Karena norma batch lebih efektif daripada dropout ketika Anda memiliki kumpulan data besar, ini bisa menjadi alasan mengapa dropout tidak disukai oleh arsitektur CNN. Jika Anda menggunakan normalisasi bets, verifikasi bahwa distribusi bobot dan bias untuk setiap lapisan terlihat mendekati standar normal. Untuk RNNs, menerapkan norma batch sangat rumit: normalisasi berat badan (Tim Salimans, Diederik P. Kingma,Normalisasi Berat: Reparameterisasi Sederhana untuk Mempercepat Pelatihan Deep Neural Networks ) adalah alternatif yang layak.
- gunakan augmentasi data: ini juga memiliki efek regularisasi.
5. Pencarian Hyperparameter / arsitektur
Jika tidak ada yang membantu, Anda harus menguji beberapa pengaturan hyperparameter yang berbeda (Bayesian Optimization dapat membantu di sini) atau beberapa perubahan arsitektur yang berbeda (mis. Mungkin dalam arsitektur GAN Anda dan untuk kumpulan data yang sedang Anda kerjakan, norma batch hanya berfungsi di generator, tetapi ketika ditambahkan ke diskriminator juga akan memperburuk keadaan). Pastikan untuk melacak hasil percobaan yang panjang dan membosankan ini di buku catatan yang tertata dengan baik.
PS untuk GAN tidak masuk akal untuk berbicara tentang kesalahan generalisasi: contoh di atas hanya dimaksudkan sebagai indikasi bahwa masih ada banyak alkimia dalam Pembelajaran Jauh, dan hal-hal yang Anda harapkan berfungsi dengan baik, kadang-kadang tidak , atau sebaliknya sesuatu yang berfungsi baik berkali-kali, tiba-tiba jatuh pada Anda untuk kumpulan data baru.