Обучение на практике: эпохи, батчи и скорость обучения
Вы уже знакомы с мыслью о том, что нейронная сеть учится, разглядывая примеры, делая предположение, проверяя, насколько сильно она ошиблась, и слегка подправляя свои числа. Это вся суть в одном предложении. Этот урок — та же суть, но во всех подробностях: как на самом деле устроен настоящий прогон обучения, что означает каждое слово на экране с прогрессом, как читать графики, которые подсказывают, всё ли идёт хорошо, и как не дать сети хитрить, попросту заучивая примеры. К концу урока вы сможете взглянуть на настоящий журнал обучения и сказать, как врач, читающий кардиограмму: «здоров», «болен» или «вот в чём именно проблема».
- Дать определение понятиям батч (batch), итерация (шаг, iteration/step) и эпоха (epoch) и подсчитывать, сколько каждого из них содержит один прогон.
- Объяснять, почему мы обучаем мини-батчами (mini-batch), а не по одному примеру за раз и не на всех данных сразу.
- Читать цикл обучения (training loop) как простой псевдокод.
- Ставить диагноз прогону по его кривым обучения (training curves): здоровое обучение, недообучение, переобучение или слишком высокая скорость обучения.
- Правильно разбивать данные на обучающую / валидационную / тестовую (train / validation / test) выборки и понимать, почему к тестовой выборке обращаются лишь один раз.
- Применять раннюю остановку (early stopping), dropout, затухание весов (weight decay) и аугментацию данных (data augmentation), чтобы бороться с переобучением.
- Выбирать разумные стартовые гиперпараметры (hyperparameters) и настраивать их по одному изменению за раз.