Как понять Gradient Descent, самый популярный алгоритм ML

kak ponyat gradient descent samyj populyarnyj algoritm ml?v=1656595331

автор Кешав Дхандхания

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

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

Например, если предсказание сцель есть та наша метрика ошибки – это квадрат ошибки, а затем функция стоимости J(W) = (p – t)².

Обратите внимание, что предусмотренное значение с зависит от введения X а также модель машинного обучения и (текущие) значения параметров В. Во время обучения наша цель – найти набор ценностей для В такой, что (p — t)² является небольшим. Это означает наш прогноз с будет близко к цели т.

e3K6cr03JGW1Lg2OaO8k5uWDvZRb4HhC6mnZ
Иллюстрация градиентного спуска для линейной регрессии

Градиентный спуск является итерационным способом. Мы начинаем с некоторого набора значений для параметров нашей модели (веса и смещения) и постепенно улучшаем их.

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

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

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

Градиентный спуск используется для минимизации функции затрат J(W) параметризированные параметрами модели В.

Градиент (или производная) сообщает нам наклон или наклон функции стоимости. Итак, чтобы минимизировать функцию стоимости, мы двигаемся в направлении, противоположном градиенту.

  1. Инициализация весы В случайно.
  2. Вычислите градиенты Г параметров функции стоимости Это делается с помощью частичного дифференцирования: G = ∂J(W)/∂W. Значение градиента Г зависит от входных данных, текущих значений параметров модели и функции стоимости. Возможно, вам придется вернуться к теме дифференциации, если вы рассчитываете вручную градиент.
  3. Обновите весы на величину, пропорциональную G, т.е. В = W – ηG
  4. Повторяйтесь к стоимости Дж(w) прекращает сокращение или какой-то другой заранее определенный критерии прекращения встречается.

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

Популярным выбором критериев прекращения является стоимость Дж(w) прекращает сокращение набора данных проверки.

Интуиция для градиентного спуска

Представьте, что вам завязаны глаза на пересеченной местности, и ваша цель – достичь самой низкой высоты.

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

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

N0IZ9olG1n4CmlzSTFF4XUmb5aS9CRsbMBo7
Источник: Лекция 3 курса Стэнфордского курса Андрея Карпаты

Пересеченная местность аналогична функции стоимости, а минимизация функции затрат аналогична попытке достичь меньших высот.

Вы не вправе оценивать (или видеть) значение функции для каждого возможного набора параметров.

Ощущение наклона местности вокруг вас аналогично вычислению градиента, а шаг аналогичен одной итерации обновления параметров.

Кстати, как небольшое, это руководство является частью бесплатного курса Data Science и бесплатного курса машинного обучения на Commonlounge. Курсы включают в себя многие практические задачи и проекты. Если вы заинтересованы в обучении Data Science/ML, однозначно рекомендуем проверить это.

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

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

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

  • Пакетный градиентный спуск вычисляет градиент функции стоимости в соответствии с параметром В для все данные обучения. Поскольку нам нужно вычислить градиенты для всего набора данных для выполнения обновления одного параметра, пакетный градиентный спуск может быть очень медленным.
  • Стохастический градиентный спуск (SGD) вычисляет градиент для каждого обновления с помощью a единая тренировочная точка данных x_i (выбран наугад). Идея состоит в том, что градиент, рассчитанный таким образом, является стохастическим приближением к градиенту, рассчитанному с использованием всех обучающих данных. Каждое обновление теперь рассчитывается гораздо быстрее, чем при пакетном градиентном спуске, и в течение многих обновлений мы будем двигаться в том же общем направлении.
  • в мини-пакетный градиентный спуск, мы вычисляем градиент для каждой небольшой мини-пакеты обучающих данных. То есть сначала мы делим обучающие данные на небольшие пакеты (скажем М образцы на партию). Мы производим одно обновление на мини-пакет. М обычно находится в диапазоне 30–500 в зависимости от проблемы. Обычно используется мини-пакетный GD, поскольку вычислительная инфраструктура – ​​компиляторы, центральные процессоры, графические процессоры – часто оптимизирована для выполнения векторного сложения и векторного умножения.

Из них большей популярностью пользуются СГД и мини-партийные ТД.

В типичном сценарии мы делаем несколько проходов над обучающими данными, прежде чем критерий завершения будет выполнен. Каждый проход называется an эпоха. Кроме того, обратите внимание, что поскольку этап обновления намного эффективнее в вычислительной части в SGD и мини-пакетных GD, мы обычно выполняем 100-1000 обновлений между проверками на соответствие критериям завершения.

Выбор скорости обучения

Как правило, значение скорости обучения выбирается вручную. Обычно мы начинаем с небольшого значения, например 0,1, 0,01 или 0,001 и адаптируем его в зависимости от того, уменьшается ли функция затрат очень медленно (увеличение скорости обучения) или взрывается/нестабильна (уменьшает скорость обучения).

Хотя ручной выбор скорости обучения по-прежнему является наиболее распространенной практикой, несколько методов, таких как оптимизатор Адама, AdaGrad и RMSProp, были предложены для автоматического выбора соответствующей скорости обучения.

В соавторстве Кешав Дхандхания и Саван Висальпара.

Первоначально опубликован как часть бесплатного курса машинного обучения и бесплатного курса науки о данных на www.commonlounge.com.

Добавить комментарий

Ваш адрес email не будет опубликован.