В новом видеоуроке от образовательного проекта DeepLearning.AI подробно разбираются механизмы работы алгоритма градиентного спуска по мини-пакетам (Mini-batch Gradient Descent). Автор курса объясняет, почему этот метод стал «золотой серединой» между классическим пакетным и стохастическим подходами, а также дает конкретные рекомендации по выбору гиперпараметров для ускорения обучения нейросетей.
📈 Визуализация стоимости и проблема шума 0:00
При использовании классического пакетного градиентного спуска (Batch Gradient Descent) функция стоимости $J$ должна уменьшаться на каждой итерации . Если на каком-то этапе график идет вверх, это однозначно сигнализирует о проблеме, например, о слишком большой скорости обучения (learning rate) .
Однако в Mini-batch Gradient Descent ситуация иная. Поскольку на каждой итерации обрабатывается не весь набор данных, а лишь его часть ($X^{{t}}$, $Y^{{t}}$), график функции стоимости $J$ становится «шумным» . По мнению автора, такие колебания естественны:
- Один мини-пакет может оказаться «легким» для модели, и стоимость на нем будет низкой .
- Следующий пакет может содержать сложные или неверно размеченные примеры, что вызовет кратковременный рост стоимости .
Несмотря на эти осцилляции, общая тенденция графика должна быть направлена вниз. Если кривая не демонстрирует нисходящего тренда в долгосрочной перспективе, алгоритм требует отладки .
⚖️ Две крайности: Batch против Stochastic 2:14
Размер мини-пакета — это гиперпараметр, который критически влияет на поведение алгоритма. Существуют два экстремальных значения:
- Batch Gradient Descent (Размер пакета = $m$): Весь обучающий набор рассматривается как один гигантский пакет. Главный недостаток — слишком долгое время обработки одной итерации при больших объемах данных .
- Stochastic Gradient Descent (Размер пакета = 1): Каждый обучающий пример становится отдельным пакетом. В этом случае прогресс заметен уже после первого примера, но алгоритм становится чрезвычайно шумным .
Эндрю Ын отмечает, что стохастический градиентный спуск никогда не сходится к истинному минимуму окончательно . Он будет «блуждать» и осциллировать в окрестностях оптимальной точки, но не остановится в ней. Для решения этой проблемы иногда применяют постепенное снижение скорости обучения .
🚀 Почему Mini-batch — оптимальный выбор 5:07
В практических задачах размер мини-пакета выбирается в диапазоне между 1 и $m$. Это позволяет использовать преимущества обоих подходов:
- Скорость векторизации: В отличие от стохастического спуска, обработка мини-пакета (например, из 1000 примеров) позволяет задействовать вычислительную мощь современных библиотек для быстрой векторизации вычислений .
- Частота обновлений: Вам не нужно ждать обработки всего датасета, чтобы сделать шаг к минимуму. Если в датасете 5 миллионов примеров, а размер пакета — 1000, то за одну эпоху вы сделаете 5000 шагов обновления весов .
По словам эксперта, это обеспечивает максимально быстрое обучение на практике . Алгоритм движется к минимуму более уверенно, чем стохастический спуск, хотя и сохраняет небольшие колебания .
🛠 Практические рекомендации по настройке 8:16
Выбор конкретного размера мини-пакета зависит от размера вашего обучающего набора и аппаратного обеспечения. Автор предлагает следующие ориентиры:
- Для малых наборов данных: Если в вашей выборке менее 2000 примеров, нет смысла использовать мини-пакеты. Используйте обычный Batch Gradient Descent .
- Типичные размеры для больших выборок: В индустрии приняты значения от 64 до 512 .
- Магия степеней двойки: Поскольку компьютерная память организована определенным образом, код часто работает быстрее, если размер пакета является степенью двойки: 64, 128, 256 или 512 . Хотя Andrew Ng использовал число 1000 в примерах, на практике он рекомендует 1024 ($2^{10}$) .
Критический фактор: необходимо следить, чтобы весь мини-пакет ($X^{{t}}$, $Y^{{t}}$) полностью помещался в память CPU или GPU . Если данные не влезают в память, производительность алгоритма резко упадет («рухнет с обрыва»), так как системе придется обращаться к диску или использовать неэффективные методы подкачки .
В завершение автор подчеркивает, что размер мини-пакета — это такой же гиперпараметр, как и скорость обучения. Его стоит подбирать экспериментально, пробуя несколько значений (степеней двойки) и выбирая то, которое наиболее эффективно снижает функцию стоимости .