Sinir ağlarını eğitirken dönem ve yineleme


Yanıtlar:


574

Sinir ağı terminolojisinde:

  • bir dönem = tüm eğitim örneklerinin bir ileri ve bir geri geçişi
  • toplu iş boyutu = bir ileri / geri geçişteki egzersiz örneği sayısı. Toplu iş boyutu ne kadar yüksek olursa, daha fazla bellek alanına ihtiyacınız olur.
  • sayısı iterasyon = geçiş sayısı, her bir geçiş örneklerin [parti boyutu] numarasını kullanarak. Açık olmak gerekirse, bir geçiş = bir ileri geçiş + bir geri geçiş (ileri geçiş ve geri geçişi iki farklı geçiş olarak saymayız).

Örnek: 1000 eğitim örneğiniz varsa ve toplu iş boyutunuz 500 ise, 1 dönemi tamamlamak için 2 yineleme gerekir.

Bilginize: Sinirsel bir ağı eğitmek için kullanılan yığın boyutu ve yineleme sayısı


"Parti" terimi belirsizdir: bazı insanlar tüm eğitim setini belirtmek için kullanır ve bazı insanlar bunu bir ileri / geri geçişteki eğitim örneklerinin sayısını ifade etmek için kullanır (bu cevapta yaptığım gibi). Bu belirsizliği önlemek ve partinin bir ileri / geri geçişteki eğitim örneklerinin sayısına karşılık geldiğini açıklığa kavuşturmak için, mini parti terimini kullanabilirsiniz .


37
Kafam karıştı. Neden birden fazla dönem için - tüm veriler üzerinde birden fazla kez - antrenman yapasınız? Bu aşırı takmaya neden olmaz mı?
Soubriquet

29
@Soubriquet Sinir ağları tipik olarak, iyi sonuçlar elde etmek için genellikle eğitim setinde birkaç geçiş yapmak zorunda olan yinelemeli bir optimizasyon yöntemi (çoğu zaman gradyan iniş) kullanılarak eğitilir.
Franck Dernoncourt

6
Ancak, 1 milyon dolar gibi çok fazla eğitim örneği varsa, sadece bir çağ yeterli olur mu? Eğitim seti çok büyükse insanlar genellikle ne yapar? Eğitim setini gruplara ayırın ve sadece bir dönem mi yaptınız?
pikachuchameleon

5
@pikachuchameleon Bu, görevin karmaşıklığına bağlıdır: bazı durumlarda bir çağ gerçekten yeterli olabilir.
Franck Dernoncourt

9
@MaxPower - tipik olarak adım, her sonra çekilir yineleme Franck Dernoncourt cevabı ima olarak; geriye doğru geçiş bilgisiyle bunu yaparız. Dönem başına m yinelemeleri olan bir mini-toplu degrade inişte , parametreleri dönem başına m kez güncelleriz .
dan mackinlay

142

Dönem ve yineleme farklı şeyleri tanımlar.


çağ

Bir çağ , algoritmanın tüm veri kümesini kaç kez gördüğünü açıklar . Dolayısıyla, algoritma veri kümesindeki tüm örnekleri her gördüğünde, bir dönem tamamlanmıştır.

tekrarlama

Bir yineleme sayısı bir tarif toplu algoritması geçirildi veri. Sinir ağlarında bu, ileri geçiş ve geri geçiş anlamına gelir . Böylece, bir grup veriyi NN üzerinden her ilettiğinizde, bir yinelemeyi tamamladınız .


Misal

Bir örnek daha net olabilir.

Diyelim ki 10 örnek (veya örnek) veri kümeniz var. Toplu iş boyutunuz 2'dir ve algoritmanın 3 dönem çalışmasını istediğinizi belirttiniz.

Bu nedenle, her çağda 5 partiniz var (10/2 = 5). Her parti algoritmadan geçirilir, bu nedenle dönem başına 5 yineleme vardır. 3 dönem belirttiğiniz için, eğitim için toplam 15 tekrarınız (5 * 3 = 15) vardır.


15
Ağırlıkların her çağdan sonra mı yoksa her yinelemeden sonra mı güncellendiğini açıklayabilir misiniz?
Miras Geek

7
@InheritedGeek, her partiden sonra dönem veya yineleme yapılmadan güncellenir.
thisisbhavin

2
@bhavindhedhi 1 toplu iş = 1 yineleme, değil mi?
Arı

2
@Hayır Hayır, örneğin 10000 eğitim numunesi ve her parti için 1000 numune alın, sonra 1 dönemi tamamlamak için 10 tekrar gerekir.
thisisbhavin

4
@bhavindhedhi Arıların sorduğu şey, parti başına 1000 olan 10000 toplam örnek örneğinizde, 10 yinelemeye eşit olan toplam 10 partiniz var. Bunun mantıklı olduğunu düşünüyorum, ancak bunun doğru bir şekilde yorumlanıp yorumlanmadığından emin değilim.
Michael Du

24

Birçok sinir ağı eğitim algoritması, sinir ağına tüm veri kümesinin birden fazla sunumunu içerir. Genellikle, tüm veri kümesinin tek bir sunumuna "çağ" denir. Aksine, bazı algoritmalar sinir ağına her seferinde tek bir durum için veri sunar.

"Yineleme" çok daha genel bir terimdir, ancak "epoch" ile birlikte sorduğunuzdan, kaynağınızın tek bir vakanın sinir ağına sunumuna atıfta bulunduğunu varsayıyorum.


3
harika, bunun ayrıntılı olduğu bir yayına başvurabilir misiniz?
Alex

17

Bunlar arasındaki farkı anlamak için Gradient Descent Algorithm ve Varyantlarını anlamalısınız .

Asıl cevapla başlamadan önce, biraz arka plan oluşturmak istiyorum.

Bir toplu iş , tam veri kümesidir. Büyüklüğü, mevcut veri kümesindeki toplam eğitim örneği sayısıdır.

Mini parti boyutu , öğrenme algoritmasının tek bir geçişte (ileri ve geri) işlediği örnek sayısıdır.

Bir Mini toplu verilen bir veri kümesi küçük bir parçası olan mini seri boyutu .

Yinelemeler , algoritmanın gördüğü veri kümelerinin sayısıdır (veya algoritmanın veri kümesinde yaptığı geçişlerin sayısıdır).

Dönemler , bir öğrenme algoritmasının veri kümesinin tamamını görme sayısıdır. Şimdi, bu yineleme sayısına eşit olmayabilir , çünkü veri kümesi mini partiler halinde de işlenebilir, özünde, tek bir geçiş veri kümesinin yalnızca bir bölümünü işleyebilir. Bu gibi durumlarda, yineleme sayısı dönem sayısına eşit değildir .

Parti gradyanı inişi durumunda, tüm grup her bir eğitim geçişinde işlenir. Bu nedenle, gradyan iniş optimizatörü Mini-toplu gradyan inişinden daha yumuşak yakınsama ile sonuçlanır, ancak daha fazla zaman alır. Parti gradyanı inişi varsa bir optimum bulması garanti edilir.

Stokastik gradyan inişi, mini seri boyutunun 1 olduğu özel bir mini-parti degrade iniş durumudur .

Toplu degrade iniş vs Mini toplu degrade iniş

Kesikli, stokastik ve mini kesikli gradyan inişlerinin karşılaştırılması.


12

Mini gruplar halinde karıştırıp ondan aldığınız bir eğitim verisine sahipsiniz. Bir mini parti kullanarak ağırlıklarınızı ve önyargılarınızı ayarladığınızda, bir yinelemeyi tamamladınız. Mini partileriniz bittiğinde bir dönemi tamamladınız. Daha sonra egzersiz verilerinizi tekrar karıştırın, mini partilerinizi tekrar seçin ve tekrar tekrar tekrarlayın. Bu senin ikinci çağın olurdu.


Çapraz doğrulamaya bağlanabilir mi?
sk

8

Genellikle, test setinizi ağın öğrenmesi için küçük gruplara böler ve eğitimin katman sayınız boyunca adım adım ilerlemesini sağlar ve degrade iniş uygular. Tüm bu küçük adımlara yineleme denilebilir .

Bir çağ , tüm ağ boyunca bir kez geçen tüm eğitim setine karşılık gelir. Bunu sınırlamak yararlı olabilir, örneğin aşırı sığdırma ile mücadele etmek.


7

Bir dönem birkaç yineleme içerir. Aslında bu 'çağ' budur. Sinir ağını eğitmek için 'çağı' veri kümesi üzerindeki yineleme sayısı olarak tanımlayalım.


4
çağ bir sayı değil ... bu durumun yeniden ifade ile ilgili olduğunu düşünüyorum.
Nikana Reklawyks

Bu yanlış olduğu için indirildi: Bir dönem, modelin tüm eğitim verilerini bir kez göreceği şekilde bölüm veya parti sayısıdır.
JohnAllen

7

Anladığım kadarıyla, bir NN eğitmeniz gerektiğinde, birçok veri öğesini içeren büyük bir veri kümesine ihtiyacınız var. NN eğitilirken, veri öğeleri NN'ye tek tek girilir, buna yineleme denir; Tüm veri kümesi geçtiğinde buna çağ denir.


6

Yinelemenin toplu SGD'deki tek bir toplu ileri + backprop ile eşdeğer olduğuna inanıyorum. Epoch, tüm veri kümesini bir kez geçiyor (başka birinin belirttiği gibi).


5

Sinir ağı terminolojisi bağlamında sanırım:

  • Epoch: Ağınız tüm eğitim setini (yani her eğitim örneği için bir kez) ele geçirdiğinde bir dönemi tamamlar .

Yinelemeyi tanımlamak için (aka adımlar ), önce toplu iş boyutu hakkında bilmeniz gerekir :

  • Parti büyüklüğü: Verimsiz olduğu ve çok fazla belleğe ihtiyaç duyduğu için muhtemelen tüm eğitim örneklerini bir ileri geçişte işlemek istemezsiniz. Bu yüzden yaygın olarak yapılan, eğitim örneklerini alt kümelere (yani gruplar) ayırmak, seçilen alt kümeden (yani toplu iş) bir geçiş yapmak ve ardından ağı geri yayılım yoluyla optimize etmektir. Bir alt kümedeki (örn. Toplu iş) eğitim örneği sayısına batch_size adı verilir .

  • Yineleme: (eğitim adımları olarak da bilinir) Ağınızın bir geçişi tamamlamak için tüm eğitim örneklerini tek geçişte geçirmesi gerektiğini bilirsiniz. Fakat bekle! eğitim örneklerinizi toplu olarak böldüğünüzde, bu , bir ileri geçişte yalnızca bir toplu işi (eğitim örneklerinin bir alt kümesi) işleyebileceğiniz anlamına gelir , peki ya diğer partiler? Yineleme terimi burada devreye girer:

    • Tanım: Ağınızın bir dönemi (yani, tüm eğitim örneklerini gözden geçirmek) tamamlamak için yapması gereken ileri geçiş sayısına (oluşturduğunuz toplu iş sayısı) Yineleme denir .

Örneğin, 1000 eğitim örneğiniz varsa ve 10 büyüklüğünde bir gruplama yapmak istediğinizde ; bir dönemi tamamlamak için 10000/10 = 1000 yineleme yapmanız gerekir .

Umarım bu soruya cevap verebilir!


3

epoch, örneğin nötr ağdaki gradyan iniş algoritması gibi eğitim için örneklerin alt kümesinin tekrarlanmasıdır. İyi bir referans: http://neuralnetworksanddeeplearning.com/chap1.html

Sayfanın, epoch kullanan degrade iniş algoritması için bir kodu olduğunu unutmayın

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)

Koda bak. Her çağ için, gradyan iniş algoritması için girişlerin rastgele bir alt kümesini oluştururuz. Çağın neden etkili olduğu sayfada da açıklanmaktadır. Lütfen bir bak.


1

çağ

Her veri örneğinin bir kez görüleceği şekilde tüm veri kümesinin üzerinden tam bir eğitim geçmesi. Böylece, bir dönem N / parti büyüklüğü eğitim tekrarlarını temsil eder , burada N toplam örnek sayısıdır.

tekrarlama

Eğitim sırasında bir modelin ağırlıklarının tek bir güncellemesi. Bir yineleme tek kayıp ile ilgili parametrelerin gradyanlar işlem oluşur toplu veri.

bonus olarak:

yığın

Model eğitiminin bir yinelemesinde (yani, bir gradyan güncellemesinde) kullanılan örnekler kümesi .

Ayrıca seri boyutuna bakın .

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


0

1.Epoch, Sinir ağının tüm verilerini gördüğü 1 tam döngüdür.
2. Modeli eğitmek için 100.000 görüntü söylenebilir, ancak bellek alanı tüm görüntüleri aynı anda işlemek için yeterli olmayabilir; örn., toplu iş boyutu 100'dür.
3. Birden fazla toplu iş kullanarak tüm görüntüleri kapsamamız gerekir. Bu yüzden 100.000 görüntünün tamamını kapsayacak şekilde 1000 yinelemeye ihtiyacımız olacak. (100 toplu iş boyutu * 1000 yineleme)
4. Sinir Ağı tüm verilere baktığında buna 1 Epoch (Nokta 1) denir. Modeli eğitmek için birden fazla döneme ihtiyaç duyulabilir. (10 dönem diyelim).

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.