Понимание основ градиентного спуска

Градиентный спуск — это алгоритм оптимизации, обычно используемый в машинном обучении для минимизации функции стоимости. В контексте машинного обучения функция стоимости часто представляет собой среднеквадратичную ошибку, которая измеряет среднеквадратичную разницу между прогнозируемыми и фактическими значениями зависимой переменной. Градиентный спуск итеративно корректирует параметры модели или системы, чтобы найти минимум функции стоимости.

Представьте, что человек застрял в горах и пытается найти путь вниз (то есть глобальный минимум). Из-за сильного тумана видимость крайне низкая, что делает путь вниз с горы невидимым. Следовательно, они должны полагаться на локальную информацию, чтобы найти минимум. Они могут использовать сложный инструмент для измерения крутизны холма в их текущем положении и двигаться в направлении с самым крутым спуском (то есть вниз по склону). Если бы они пытались найти вершину горы (т. е. максимум), они двигались бы в направлении наибольшего подъема (т. е. в гору).

Используя этот метод, они в конечном итоге спустились с горы. Стоит отметить, что крутизна холма не сразу бросается в глаза и требует для измерения сложного прибора, который в данный момент имеется у человека.

Тот же принцип применим и к градиентному спуску. Мы начинаем со случайной точки в функции стоимости, вычисляем наклон в этой точке, используя частичное дифференцирование ∂𝑗(𝑤)/∂𝑤, а затем умножаем его на шаг, называемый альфа 𝛂, который представляет величину, на которую мы движемся вниз. Наконец, мы вычитаем его из параметра и обновляем параметр.

Мы продолжаем процесс, пока не достигнем функции минимальной стоимости или не выполним определенное количество итераций.

Следующий вопрос, который приходит на ум, заключается в том, насколько большую альфа-версию мы должны выбрать?

Что делать, если альфа слишком велика?
Большая скорость обучения может привести к более быстрой сходимости, поскольку каждая итерация охватывает больший шаг к точке минимума функции стоимости.

Но это также может привести к превышению минимальной точки, что приведет к расхождению. Это происходит, когда предпринимаемые шаги настолько велики, что алгоритм продолжает колебаться или даже отдаляется от оптимального решения.

Что делать, если альфа слишком мала?
Меньшая скорость обучения помогает стабилизировать сходимость алгоритма, уменьшая вероятность превышения или колебаний вокруг точки минимума.

Но алгоритм может сходиться медленно. Для достижения точки минимума может потребоваться больше итераций, особенно в сложных или многомерных задачах оптимизации. Увеличение нагрузки на систему.

Следовательно, важно найти баланс и рассмотреть конкретную проблему, данные и компромисс между скоростью сходимости и риском застревания в локальных оптимумах. Такие методы, как снижение скорости обучения или методы адаптивной скорости обучения, могут использоваться для динамической регулировки скорости обучения во время обучения и смягчения некоторых ограничений, связанных с фиксированной малой скоростью обучения.

Некоторые распространенные типы градиентного спуска:

Пакетный градиентный спуск.
В пакетном градиентном спуске (BGD) весь обучающий набор данных используется для вычисления градиента функции стоимости на каждой итерации. BGD вычисляет средний градиент по всем обучающим примерам и соответствующим образом обновляет параметры модели. Хотя BGD может потребовать значительных вычислительных ресурсов для больших наборов данных, он обеспечивает точные обновления.

Стохастический градиентный спуск.
В отличие от пакетного градиентного спуска, при котором градиент рассчитывается для всего набора данных на каждой итерации, SGD обновляет параметры модели, используя градиент, оцененный на основе одного случайно выбранного обучающего примера на каждой итерации.

Хотя эта случайность может помочь алгоритму выйти из локальных минимумов, когда функция стоимости нерегулярна, она также означает, что алгоритм может не установить глобальный минимум.

Мини-пакетный градиентный спуск:
Мини-пакетный градиентный спуск — это компромисс между BGD и SGD. Он вычисляет градиент и обновляет параметры на основе небольшого подмножества (мини-пакета) обучающих примеров. Размер мини-партии обычно выбирают как компромисс между эффективностью и стабильностью.

Заключение:

Градиентный спуск — мощный инструмент для оптимизации моделей. Его итеративный подход обновляет параметры с использованием градиентов функции стоимости, что дает замечательные результаты. Профессионалы в области машинного обучения, глубокого обучения и оптимизации должны освоить эту фундаментальную технику, учитывая ее широкое применение и постоянные улучшения. Однако это обсуждение лишь поверхностно затрагивает эту обширную тему. Требуется гораздо больше исследований, чтобы полностью понять тонкости и потенциал градиентного спуска.

Использованная литература:

  1. Практическое машинное обучение с помощью Scikit-Learn и Tensorflow, Орельен Жерон
  2. Специализация машинного обучения Эндрю Нг
  3. Наука о данных с нуля, Джоэл Грус