Epoch vs Iteration ketika melatih jaringan saraf

Jawaban:

574

Dalam terminologi jaringan saraf:

  • satu zaman = satu umpan maju dan satu umpan mundur dari semua contoh pelatihan
  • ukuran kumpulan = jumlah contoh pelatihan dalam satu gerakan maju / mundur. Semakin tinggi ukuran batch, semakin banyak ruang memori yang Anda butuhkan.
  • jumlah iterasi = jumlah lintasan, setiap lintasan menggunakan jumlah contoh [ukuran batch]. Untuk menjadi jelas, satu pass = satu pass maju + satu pass mundur (kami tidak menghitung forward pass dan backward pass sebagai dua pass yang berbeda).

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 .

Franck Dernoncourt
sumber
37
Saya bingung. Mengapa Anda berlatih selama lebih dari satu zaman - pada semua data lebih dari sekali? Bukankah itu mengarah ke overfitting?
Soubriquet
29
@Soubriquet Jaringan saraf biasanya dilatih menggunakan metode optimisasi berulang (sebagian besar waktu, gradient descent), yang seringkali perlu melakukan beberapa lintasan pada set pelatihan untuk mendapatkan hasil yang baik.
Franck Dernoncourt
6
Tetapi jika ada banyak sampel pelatihan, katakanlah $ 1 $ juta, apakah hanya satu zaman saja yang cukup? Apa yang biasanya dilakukan orang jika perangkat pelatihan sangat besar? Hanya membagi set pelatihan menjadi beberapa batch dan hanya melakukan satu zaman?
pikachuchameleon
5
@pikachuchameleon Ini tergantung pada kompleksitas tugas: satu zaman memang bisa cukup dalam beberapa kasus.
Franck Dernoncourt
9
@ MaxPower - biasanya, langkah ini diambil setelah setiap iterasi , seperti jawaban Franck Dernoncourt; itulah yang kami lakukan dengan informasi dari backwards pass. Dalam mini-batch gradient descent dengan m iterasi per epoch, kami memperbarui parameter m kali per epoch.
dan mackinlay
142

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.

Khon
sumber
15
Bisakah Anda jelaskan jika bobot diperbarui setelah setiap zaman atau setelah setiap iterasi?
Warisan Geek
7
@InheritedGeek bobot diperbarui setelah setiap batch bukan zaman atau iterasi.
thisisbhavin
2
@ bhavindhedhi 1 kumpulan = 1 iterasi, bukan?
Lebah
2
@ Bee Tidak, ambil contoh 10.000 sampel pelatihan dan 1000 sampel per batch maka akan dibutuhkan 10 iterasi untuk menyelesaikan 1 zaman.
thisisbhavin
4
@ Bhavindhedhi Saya pikir apa yang diminta Bee adalah bahwa dalam contoh Anda dari total 10.000 sampel dengan 1000 per batch, Anda secara efektif memiliki 10 total batch, yang sama dengan 10 iterasi. Saya pikir itu masuk akal, tetapi tidak yakin apakah itu cara yang tepat untuk menafsirkannya.
Michael Du
24

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.

Prediktor
sumber
3
hebat, dapatkah Anda merujuk pada publikasi yang detailnya?
Alex
17

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 .

Keturunan gradien batch vs Keturunan gradien bets-mini

Perbandingan penurunan gradien batch, stochastic, dan mini-batch.

nikhilbalwani
sumber
12

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.

Milad P.
sumber
Apakah ini dapat dikaitkan dengan validasi silang?
sk
8

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.

Nikana Reklawyks
sumber
7

Sebuah zaman mengandung beberapa iterasi. Itulah sebenarnya 'zaman' ini. Mari kita mendefinisikan 'zaman' sebagai jumlah iterasi atas set data untuk melatih jaringan saraf.

Elijah Saounkine
sumber
4
zaman bukan angka ... ini bisa dilakukan dengan pengulangan kata-kata, saya pikir.
Nikana Reklawyks
Diturunkan karena ini salah: zaman adalah jumlah episode atau kumpulan sehingga model telah melihat semua data pelatihan satu kali.
JohnAllen
7

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.

36rb
sumber
6

Saya percaya iterasi setara dengan maju batch tunggal + backprop dalam batch SGD. Epoch akan melalui seluruh dataset sekali (seperti orang lain sebutkan).

Andrei Pokrovsky
sumber
5

Saya kira dalam konteks terminologi jaringan saraf:

  • Epoch: Ketika jaringan Anda berakhir memeriksa seluruh set pelatihan (yaitu, satu kali untuk setiap instance pelatihan), itu menyelesaikan satu zaman .

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:

    • Definisi: Jumlah lintasan maju (Jumlah bets yang telah Anda buat) yang harus dilakukan jaringan Anda untuk menyelesaikan satu zaman (yaitu, mempelajari semua instance pelatihan) disebut Iteration .

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!

inverted_index
sumber
3

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

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

Lihatlah kodenya. Untuk setiap zaman, kami secara acak menghasilkan subset input untuk algoritma gradient descent. Mengapa zaman efektif juga dijelaskan di halaman. Silakan lihat.

Halo Dunia
sumber
1

masa

Pelatihan penuh melewati seluruh dataset sehingga setiap contoh telah terlihat sekali. Jadi, suatu zaman mewakili iterasi pelatihan ukuran N / batch , di mana N adalah jumlah total contoh.

pengulangan

Pembaruan tunggal dari bobot model selama pelatihan. Iterasi terdiri dari komputasi gradien parameter sehubungan dengan kerugian pada satu batch data.

sebagai bonus:

batch

Himpunan contoh yang digunakan dalam satu iterasi (yaitu, satu pembaruan gradien ) dari pelatihan model .

Lihat juga ukuran bets .

sumber: https://developers.google.com/machine-learning/glossary/

Mathieu Gemard
sumber
0

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).

rishi jain
sumber