Відповіді:
У термінології нейронної мережі:
Приклад: якщо у вас є 1000 прикладів тренувань, а розмір вашої партії становить 500, то для завершення 1 епохи знадобиться 2 повторення.
FYI: Розмір партії компромісу порівняно з кількістю ітерацій для тренування нейронної мережі
Термін "партія" неоднозначний: деякі люди використовують його для позначення всього навчального набору, а деякі використовують його для позначення кількості прикладів тренувань в одному проході вперед / назад (як я це робив у цій відповіді). Щоб уникнути цієї неоднозначності та уточнити, що партія відповідає кількості прикладів тренувань в одному проході вперед / назад, можна використовувати термін міні-пакет .
Епоха та ітерація описують різні речі.
Епоха описує кількість разів алгоритм бачить весь набір даних. Отже, щоразу, коли алгоритм бачив усі вибірки в наборі даних, епоха завершується.
Ітерації описують кількість разів в партію даних , переданих через алгоритм. Що стосується нейронних мереж, то це означає прохід вперед і назад . Отже, кожного разу, коли ви передаєте пакет даних через мережу NN, ви виконуєте ітерацію .
Приклад може зробити це зрозумілішим.
Скажімо, у вас є набір даних з 10 прикладів (або зразків). У вас розмір партії 2, і ви вказали, що хочете, щоб алгоритм працював протягом 3 епох.
Тому в кожну епоху у вас 5 партій (10/2 = 5). Кожна партія передається через алгоритм, тому у вас є 5 ітерацій за епоху. Оскільки ви вказали 3 епохи, у вас є 15 ітерацій (5 * 3 = 15) для тренувань.
Багато алгоритмів навчання нейронної мережі передбачають проведення декількох презентацій всього набору даних у нейронній мережі. Часто одиничне представлення всього набору даних називають "епохою". На відміну від цього, деякі алгоритми представляють дані нейронної мережі одночасно.
"Ітерація" - набагато більш загальний термін, але оскільки ви запитали про це разом з "епохою", я припускаю, що ваше джерело має на увазі представлення одного випадку в нейронній мережі.
Щоб зрозуміти різницю між ними, ви повинні зрозуміти алгоритм спуску градієнта та його варіанти .
Перш ніж розпочати з фактичної відповіді, я хотів би побудувати деякі передумови.
Партія повний набір даних. Її розмір - це загальна кількість прикладів тренувань у доступному наборі даних.
Міні-пакетний розмір - це кількість прикладів, які алгоритм навчання обробляє за один прохід (вперед і назад).
Міні-партія невелика частина набору даних даного міні-розміру партії .
Ітерації - це кількість партій даних, які бачив алгоритм (або просто кількість проходів, які алгоритм здійснив у наборі даних).
Епохи - це кількість разів, коли алгоритм навчання бачить повний набір даних. Тепер це може не дорівнювати кількості ітерацій , оскільки набір даних також може бути оброблений міні-партіями, по суті, один прохід може обробити лише частину набору даних. У таких випадках кількість ітерацій не дорівнює кількості епох .
У випадку спуску градієнта партії вся партія обробляється на кожному тренувальному проході. Тому оптимізатор градієнтного спуску призводить до більш плавної конвергенції, ніж міні-пакетний градієнт, але це потребує більше часу. Падіння градієнта партії гарантовано знайде оптимум, якщо він існує.
Стохастичний градієнтний спуск - це окремий випадок міні-пакетного градієнтного спуску, в якому розмір міні-партії дорівнює 1 .
У вас є дані про тренування, які ви переміщуєте та вибираєте з них міні-партії. Коли ви регулюєте ваги та ухили за допомогою однієї міні-партії, ви виконали одну ітерацію. Як тільки ви закінчите свої міні-партії, ви закінчили епоху. Потім ви знову перетасуєте свої дані тренувань, знову вибираєте міні-партії та повторіть повторення. Це була б ваша друга епоха.
Як правило, ви розділите свій тестовий набір на невеликі партії для того, щоб мережа вчилася, і змушувати навчання проходити крок за кроком через вашу кількість шарів, застосовуючи градієнтний спуск увесь вниз. Всі ці маленькі кроки можна назвати ітераціями .
An епоха відповідає всій підготовки пущений по всій мережі один раз. Це може бути корисним для обмеження цього, наприклад, для боротьби з надмірною обробкою.
Епоха містить кілька ітерацій. Це насправді така «епоха». Давайте визначимо «епоху» як кількість ітерацій над набором даних для тренування нейронної мережі.
Я вважаю, що ітерація еквівалентна одній партії вперед + задній хід у пакетному SGD. Епоха проходить через весь набір даних один раз (як хтось ще згадував).
Я здогадуюсь у контексті термінології нейронної мережі:
Для того щоб визначити ітерацію (він же кроки ), спочатку потрібно знати про розмір партії :
Розмір партії: Ви, мабуть, не хотіли б обробляти цілі навчальні екземпляри за один перехід вперед, оскільки це неефективно і потребує величезної кількості пам'яті. Отже, що зазвичай робиться - це розділити навчальні екземпляри на підмножини (тобто партії), виконати один прохід по вибраному підмножині (тобто пакетному), а потім оптимізувати мережу за допомогою зворотного розповсюдження. Кількість навчальних екземплярів у підмножині (тобто пакетній) називається batch_size .
Ітерація: (інакше навчальні етапи) Ви знаєте, що ваша мережа повинна пройти всі навчальні екземпляри за один прохід, щоб завершити одну епоху. Але зачекайте! коли ви розбиваєте свої навчальні екземпляри на партії, це означає, що ви можете обробити лише одну партію (підмножину тренувальних екземплярів) за один перехід, тому що з іншими партіями? Тут грає термін Ітерація :
Наприклад, якщо у вас є 1000 навчальних екземпляри , і ви хочете зробити дозування з розміром 10; вам потрібно зробити 10000/10 = 1000 ітерацій, щоб завершити одну епоху.
Сподіваюся, що це може відповісти на ваше запитання!
епоха - це ітерація підмножини зразків для навчання, наприклад, алгоритм спуску градієнта в нейтральній мережі. Хороша довідка: http://neuralnetworksanddeeplearning.com/chap1.html
Зауважте, що на сторінці є код алгоритму спуску градієнта, який використовує епоху
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)
Подивіться на код. Для кожної епохи ми випадково генеруємо підмножину входів для алгоритму спуску градієнта. Чому епоха ефективна, також пояснено на сторінці. Будь ласка, подивіться.
Повний навчальний пропуск по всьому набору даних таким чином, щоб кожен приклад був бачений один раз. Таким чином, епоха представляє навчальні ітерації з розміром партії , де N - загальна кількість прикладів.
Одночасне оновлення ваг моделі під час тренувань. Ітерація складається з обчислення градієнтів параметрів щодо втрат на одній партії даних.
як бонус:
Сукупність прикладів, що використовуються в одній ітерації (тобто в одному оновленні градієнта ) навчальної моделі .
Дивіться також розмір партії .
джерело: https://developers.google.com/machine-learning/glossary/
1.Епоха - це 1 повний цикл, де Нейронна мережа бачила всі його дані.
2. Можна сказати 100 000 зображень для тренування моделі, однак простору пам’яті може бути недостатньо для опрацювання всіх зображень одночасно, отже, ми розділили навчання моделі на менші шматки даних, що називаються партіями. наприклад, розмір партії становить 100.
3. Нам потрібно охопити всі зображення за допомогою декількох партій. Тож нам знадобиться 1000 ітерацій, щоб охопити всі 100 000 зображень. (100 розмір партії * 1000 ітерацій)
4. Після того, як Нейромережа перегляне цілі дані, вона називається 1 Епоха (Точка 1). Можливо, для навчання моделі може знадобитися кілька епох. (скажемо 10 епох).