Apa perbedaan antara zaman dan iterasi saat melatih perceptron multi-layer?
413
Apa perbedaan antara zaman dan iterasi saat melatih perceptron multi-layer?
Dalam terminologi jaringan saraf:
Contoh: jika Anda memiliki 1000 contoh pelatihan, dan ukuran batch Anda adalah 500, maka akan dibutuhkan 2 iterasi untuk menyelesaikan 1 zaman.
FYI: Ukuran batch tradeoff vs jumlah iterasi untuk melatih jaringan saraf
Istilah "kumpulan" bersifat ambigu: beberapa orang menggunakannya untuk menunjuk seluruh rangkaian pelatihan, dan beberapa orang menggunakannya untuk merujuk pada jumlah contoh pelatihan dalam satu gerakan maju / mundur (seperti yang saya lakukan dalam jawaban ini). Untuk menghindari ambiguitas itu dan memperjelas bahwa batch terkait dengan jumlah contoh pelatihan dalam satu pass maju / mundur, seseorang dapat menggunakan istilah mini-batch .
Zaman dan iterasi menggambarkan hal-hal yang berbeda.
Masa
Suatu zaman menjelaskan berapa kali algoritma melihat seluruh kumpulan data. Jadi, setiap kali algoritma telah melihat semua sampel dalam dataset, suatu zaman telah selesai.
Pengulangan
Sebuah iterasi menggambarkan jumlah kali bets data melewati algoritma. Dalam kasus jaringan saraf, itu berarti umpan maju dan mundur . Jadi, setiap kali Anda melewati kumpulan data melalui NN, Anda menyelesaikan iterasi .
Contoh
Contoh mungkin membuatnya lebih jelas.
Katakanlah Anda memiliki dataset 10 contoh (atau sampel). Anda memiliki ukuran kumpulan 2, dan Anda telah menentukan bahwa Anda ingin algoritma berjalan selama 3 zaman.
Oleh karena itu, di setiap zaman, Anda memiliki 5 kumpulan (10/2 = 5). Setiap batch dilewatkan melalui algoritma, oleh karena itu Anda memiliki 5 iterasi per zaman. Karena Anda telah menentukan 3 zaman, Anda memiliki total 15 iterasi (5 * 3 = 15) untuk pelatihan.
sumber
Banyak algoritma pelatihan jaringan saraf melibatkan membuat beberapa presentasi dari seluruh data yang ditetapkan ke jaringan saraf. Seringkali, presentasi tunggal dari seluruh kumpulan data disebut sebagai "zaman". Sebaliknya, beberapa algoritma menyajikan data ke jaringan saraf satu kasus pada satu waktu.
"Iterasi" adalah istilah yang jauh lebih umum, tetapi karena Anda bertanya tentang itu bersama-sama dengan "zaman", saya berasumsi bahwa sumber Anda merujuk pada presentasi kasus tunggal ke jaringan saraf.
sumber
Untuk memahami perbedaan antara ini, Anda harus memahami Algoritma Keturunan Gradien dan variannya .
Sebelum saya mulai dengan jawaban yang sebenarnya, saya ingin membangun beberapa latar belakang.
Sebuah batch yang adalah dataset lengkap. Ukurannya adalah jumlah total contoh pelatihan dalam dataset yang tersedia.
Ukuran mini-batch adalah jumlah contoh proses algoritma pembelajaran dalam satu lintasan (maju dan mundur).
Sebuah Mini-batch adalah bagian kecil dari dataset dari yang diberikan ukurannya yang mini-batch .
Iterasi adalah jumlah kumpulan data yang telah dilihat algoritma (atau hanya jumlah lintasan yang dilakukan algoritma pada dataset).
Zaman adalah berapa kali algoritma pembelajaran melihat dataset lengkap. Sekarang, ini mungkin tidak sama dengan jumlah iterasi , karena dataset juga dapat diproses dalam mini-batch, pada dasarnya, satu pass dapat memproses hanya sebagian dari dataset. Dalam kasus seperti itu, jumlah iterasi tidak sama dengan jumlah zaman .
Dalam kasus keturunan gradien Batch, seluruh batch diproses pada setiap pass pelatihan. Oleh karena itu, pengoptimal gradient descent menghasilkan konvergensi yang lebih halus daripada gradient gradient batch-mini, tetapi membutuhkan lebih banyak waktu. Turunan gradien batch dijamin untuk menemukan yang optimal jika ada.
Stochastic gradient descent adalah kasus khusus dari mini-batch gradient descent di mana ukuran mini-batch adalah 1 .
sumber
Anda memiliki data pelatihan yang Anda kocok dan ambil mini-batch dari itu. Saat Anda menyesuaikan bobot dan bias menggunakan satu mini-batch, Anda telah menyelesaikan satu iterasi. Setelah kehabisan mini-batch Anda, Anda telah menyelesaikan zaman. Kemudian Anda mengocok lagi data pelatihan Anda, mengambil mini-batch Anda lagi, dan mengulanginya kembali. Itu akan menjadi zaman kedua Anda.
sumber
Biasanya, Anda akan membagi set tes Anda menjadi kumpulan-kumpulan kecil untuk dipelajari jaringan, dan membuat pelatihan dilakukan selangkah demi selangkah melalui jumlah layer Anda, menerapkan penurunan gradien sepanjang jalan. Semua langkah kecil ini bisa disebut iterasi .
Suatu zaman berhubungan dengan seluruh rangkaian pelatihan yang melalui seluruh jaringan satu kali. Dapat bermanfaat untuk membatasi ini, misalnya untuk melawan overfitting.
sumber
Sebuah zaman mengandung beberapa iterasi. Itulah sebenarnya 'zaman' ini. Mari kita mendefinisikan 'zaman' sebagai jumlah iterasi atas set data untuk melatih jaringan saraf.
sumber
Untuk pemahaman saya, ketika Anda perlu melatih NN, Anda membutuhkan dataset besar yang melibatkan banyak item data. ketika NN sedang dilatih, item data masuk ke NN satu per satu, yang disebut iterasi; Ketika seluruh dataset melewati, itu disebut zaman.
sumber
Saya percaya iterasi setara dengan maju batch tunggal + backprop dalam batch SGD. Epoch akan melalui seluruh dataset sekali (seperti orang lain sebutkan).
sumber
Saya kira dalam konteks terminologi jaringan saraf:
Untuk mendefinisikan iterasi ( langkah alias ), Anda harus terlebih dahulu tahu tentang ukuran batch :
Ukuran kumpulan: Anda mungkin tidak ingin memproses seluruh pelatihan secara bersamaan karena tidak efisien dan membutuhkan banyak memori. Jadi yang biasa dilakukan adalah membagi instance pelatihan ke dalam himpunan bagian (yaitu, batch), melakukan satu pass pada subset yang dipilih (yaitu, batch), dan kemudian mengoptimalkan jaringan melalui backpropagation. Jumlah instance pelatihan dalam subset (yaitu, batch) disebut batch_size .
Iteration: (alias langkah pelatihan) Anda tahu bahwa jaringan Anda harus memeriksa semua instance pelatihan dalam satu pass untuk menyelesaikan satu zaman. Tapi tunggu! ketika Anda membagi instance pelatihan Anda menjadi batch, itu berarti Anda hanya dapat memproses satu batch (subset instance pelatihan) dalam satu umpan maju, jadi bagaimana dengan batch lainnya? Di sinilah istilah Iterasi berperan:
Misalnya, ketika Anda memiliki 1000 instance pelatihan dan Anda ingin melakukan batching dengan ukuran 10; Anda harus melakukan 10000/10 = 1000 iterasi untuk menyelesaikan satu zaman.
Semoga ini bisa menjawab pertanyaan Anda!
sumber
epoch adalah iterasi dari subset sampel untuk pelatihan, misalnya, algoritma gradient descent di jaringan netral. Referensi yang baik adalah: http://neuralnetworksanddeeplearning.com/chap1.html
Perhatikan bahwa halaman tersebut memiliki kode untuk algoritma gradient descent yang menggunakan zaman
Lihatlah kodenya. Untuk setiap zaman, kami secara acak menghasilkan subset input untuk algoritma gradient descent. Mengapa zaman efektif juga dijelaskan di halaman. Silakan lihat.
sumber
sebagai bonus:
sumber: https://developers.google.com/machine-learning/glossary/
sumber
1.Epoch adalah 1 siklus lengkap di mana jaringan Neural telah melihat semua datanya.
2. Orang mungkin mengatakan 100.000 gambar untuk melatih model, namun ruang memori mungkin tidak cukup untuk memproses semua gambar sekaligus, maka kami membagi pelatihan model pada potongan data yang lebih kecil yang disebut batch. mis. ukuran bets adalah 100.
3. Kita harus menutupi semua gambar menggunakan banyak batch. Jadi kita akan membutuhkan 1000 iterasi untuk mencakup semua 100.000 gambar. (Ukuran 100 batch * 1000 iterasi)
4. Setelah Neural Network melihat seluruh data itu disebut 1 Epoch (Poin 1). Orang mungkin perlu beberapa zaman untuk melatih model. (mari kita katakan 10 zaman).
sumber