Odpowiedzi:
W terminologii sieci neuronowej:
Przykład: jeśli masz 1000 przykładów treningu, a twoja partia to 500, to zajmie 2 iteracje, aby ukończyć 1 epokę.
FYI: Kompromis między wielkością partii a liczbą iteracji w celu wyszkolenia sieci neuronowej
Termin „partia” jest niejednoznaczny: niektórzy używają go do oznaczania całego zestawu treningowego, a niektórzy odnoszą się do liczby przykładów treningowych w jednym przejściu do przodu / do tyłu (tak jak zrobiłem w tej odpowiedzi). Aby uniknąć tej dwuznaczności i wyjaśnić, że partia odpowiada liczbie przykładów treningu w jednym przejściu do przodu / do tyłu, można użyć terminu mini-partia .
Epoka i iteracja opisują różne rzeczy.
Epoka opisuje liczbę razy algorytm widzi cały zestaw danych. Tak więc za każdym razem, gdy algorytm widział wszystkie próbki w zbiorze danych, epoka się kończyła.
Iteracja opisuje liczbę razy partię danych przekazywanych przez algorytm. W przypadku sieci neuronowych oznacza to przejście do przodu i przejście do tyłu . Tak więc, za każdym razem, gdy przesyłasz partię danych przez NN, przeprowadzałeś iterację .
Przykład może to wyjaśnić.
Załóżmy, że masz zestaw danych zawierający 10 przykładów (lub próbek). Masz wielkość partii 2 i określiłeś, że chcesz, aby algorytm działał przez 3 epoki.
Dlatego w każdej epoce masz 5 partii (10/2 = 5). Każda partia przechodzi przez algorytm, dlatego masz 5 iteracji na epokę. Ponieważ określiłeś 3 epoki, masz w sumie 15 iteracji (5 * 3 = 15) na trening.
Wiele algorytmów uczących sieci neuronowej wymaga wykonywania wielu prezentacji całego zestawu danych w sieci neuronowej. Często pojedyncza prezentacja całego zestawu danych nazywana jest „epoką”. Natomiast niektóre algorytmy prezentują dane sieci neuronowej pojedynczo w jednym przypadku.
„Iteracja” jest terminem znacznie bardziej ogólnym, ale skoro pytasz o nią wraz z „epoką”, zakładam, że twoje źródło odnosi się do prezentacji pojedynczego przypadku sieci neuronowej.
Aby zrozumieć różnicę między nimi, musisz zrozumieć algorytm zniżania gradientu i jego warianty .
Zanim zacznę od właściwej odpowiedzi, chciałbym zbudować trochę tła.
Partia pełna zestawu danych. Jego rozmiar to łączna liczba przykładów szkoleń w dostępnym zestawie danych.
Rozmiar mini-partii to liczba przykładów, które algorytm uczący przetwarza w jednym przebiegu (do przodu i do tyłu).
Mini-partia jest mała część zbioru danych o danym rozmiarze mini-serii .
Iteracje to liczba partii danych, które widział algorytm (lub po prostu liczba przejść, które algorytm wykonał na zbiorze danych).
Epoki to liczba, gdy algorytm uczenia widzi pełny zestaw danych. Teraz może to nie być równe liczbie iteracji , ponieważ zestaw danych można również przetwarzać w mini-partiach, w zasadzie pojedyncze przejście może przetwarzać tylko część zbioru danych. W takich przypadkach liczba iteracji nie jest równa liczbie epok .
W przypadku opadania gradientu partii cała partia jest przetwarzana przy każdym przejściu szkoleniowym. Dlatego optymalizator opadania gradientu zapewnia płynniejszą zbieżność niż opadanie gradientu Mini-wsadowego, ale zajmuje więcej czasu. Opadanie gradientem partii jest gwarantowane, aby znaleźć optymalne, jeśli istnieje.
Stochastyczne zejście gradientowe jest specjalnym przypadkiem zejścia gradientowego w małych partiach, w którym wielkość mini-partii wynosi 1 .
Masz dane treningowe, które tasujesz i wybierasz z nich mini-partie. Kiedy dostosowujesz swoje wagi i odchylenia za pomocą jednej mini-partii, ukończyłeś jedną iterację. Gdy zabraknie ci mini-partii, ukończyłeś epokę. Następnie ponownie przetasujesz dane treningowe, ponownie wybierzesz swoje mini-partie i powtórzysz je wszystkie ponownie. To byłaby twoja druga epoka.
Zazwyczaj dzielisz zestaw testowy na małe partie, z których sieć może się uczyć, a trening przechodzi krok po kroku przez liczbę warstw, stosując obniżanie gradientu do samego końca. Wszystkie te małe kroki można nazwać iteracjami .
An epoki odpowiada cały zestaw przechodzi szkolenia w całej sieci jednocześnie. Przydatne może być ograniczenie tego, np. W walce z nadmiernym dopasowaniem.
Epoka zawiera kilka iteracji. Właśnie taka jest ta „epoka”. Zdefiniujmy „epokę” jako liczbę iteracji w zbiorze danych w celu wyszkolenia sieci neuronowej.
Uważam, że iteracja jest równoważna pojedynczej partii do przodu + backprop w partii SGD. Epoka przegląda cały zestaw danych jeden raz (jak ktoś wspomniał).
Myślę, że w kontekście terminologii sieci neuronowej:
Aby zdefiniować iterację (aka kroki ), najpierw musisz wiedzieć o wielkości partii :
Wielkość partii: Prawdopodobnie nie chciałbyś przetwarzać wszystkich instancji treningowych za jednym przejściem do przodu, ponieważ jest nieefektywna i wymaga dużej ilości pamięci. Często więc dzieli się instancje szkoleniowe na podzbiory (tj. Partie), wykonując jedno przejście przez wybrany podzbiór (tj. Partię), a następnie optymalizując sieć poprzez propagację wsteczną. Liczba instancji szkoleniowych w ramach podzbioru (tj. Partii ) jest nazywana wielkością partii .
Iteracja: (inaczej etapy szkolenia) Wiesz, że twoja sieć musi przejść wszystkie instancje szkolenia w jednym przejściu, aby ukończyć jedną epokę. Ale poczekaj! kiedy dzielisz instancje treningowe na partie, oznacza to, że możesz przetwarzać tylko jedną partię (podzbiór instancji treningowych) w jednym przebiegu do przodu, a co z innymi partiami? Tutaj pojawia się termin Iteracja :
Na przykład, jeśli masz 1000 instancji treningowych i chcesz wykonać partię o wielkości 10; musisz wykonać 10000/10 = 1000 iteracji, aby ukończyć jedną epokę.
Mam nadzieję, że to może odpowiedzieć na twoje pytanie!
epoka jest iteracją podzbioru próbek do treningu, na przykład algorytm spadku gradientu w sieci neutralnej. Dobrym źródłem informacji jest: http://neuralnetworksanddeeplearning.com/chap1.html
Zauważ, że strona ma kod algorytmu spadku gradientu, który używa epoki
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)
Spójrz na kod. Dla każdej epoki losowo generujemy podzbiór danych wejściowych dla algorytmu spadku gradientu. Dlaczego epoka jest skuteczna, wyjaśniono również na stronie. Proszę spojrzeć.
Pełne szkolenie przechodzi przez cały zestaw danych, dzięki czemu każdy przykład był widziany raz. Zatem epoka reprezentuje iteracje treningowe wielkości N / partii , gdzie N jest całkowitą liczbą przykładów.
Pojedyncza aktualizacja ciężarów modelu podczas treningu. Iteracja polega na obliczeniu gradientów parametrów w odniesieniu do utraty na pojedynczej partii danych.
jako bonus:
Zbiór przykładów użytych w jednej iteracji (to znaczy jednej aktualizacji gradientu ) szkolenia modelu .
Zobacz także wielkość partii .
źródło: https://developers.google.com/machine-learning/glossary/
1.Epoch to 1 pełny cykl, w którym sieć neuronowa widziała wszystkie dane.
2. Można by powiedzieć 100 000 obrazów do trenowania modelu, jednak przestrzeń pamięci może nie być wystarczająca do przetworzenia wszystkich obrazów jednocześnie, dlatego podzieliliśmy szkolenie modelu na mniejsze porcje danych zwane partiami. np. wielkość partii wynosi 100.
3. Musimy pokryć wszystkie obrazy przy użyciu wielu partii. Potrzebujemy więc 1000 iteracji, aby objąć wszystkie 100 000 zdjęć. (100 partii * 1000 iteracji)
4. Gdy sieć neuronowa spojrzy na całe dane, nazywa się to 1 epoką (punkt 1). Może być potrzebne wiele epok, aby wyszkolić model. (powiedzmy 10 epok).