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

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

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

Чтобы правильно объяснить градиентный спуск, я дам краткое объяснение некоторых фундаментальных концепций. Я объясню градиентный спуск применительно к линейной регрессии.

Линейная регрессия

Линейная регрессия моделирует взаимосвязь между независимой переменной (ПРИЧИНА; (x), например, размер дома в метрах) и зависимой переменной (ЭФФЕКТ; (y), например, цена дома в долларах). Для каждого значения y существует значение x. Они нанесены на график, как показано ниже.

Линейная регрессия моделирует эту взаимосвязь, подгоняя линейное уравнение (или прямую линию) к доступным (наблюдаемым) данным.

Это линейное уравнение представлено как;

y’ = m*x + c

Где y 'представляет собой прогнозируемое значение независимой переменной, m представляет наклон (или, в более описательных терминах, «как наклоняется линия»), а c представляет точку пересечения (где линия пересекает ось y, т. Е. Значение y, когда x = 0).

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

Но как вообще проводится линия?

Сначала рисуется линия со случайными значениями этих коэффициентов (m и c). И затем он обновляется в зависимости от того, насколько верна или неверна линия при прогнозировании значений текущих (доступных / наблюдаемых) данных, то есть как значения y 'прогнозируются, когда значение x вставлен в приведенное выше линейное уравнение (с подключенными коэффициентами) по сравнению с фактическими (наблюдаемыми / доступными) значениями y для тех же значений x.

Как линейная регрессия определяет, насколько правильная или неправильная линия?

Именно здесь на помощь приходит функция ошибки / стоимости (или потерь). Функция стоимости представляет собой представление о том, насколько хорошо (или плохо) модель предсказывает «y» на основе ее текущих коэффициентов. Он измеряет разницу между фактическим выходом «y» и прогнозируемым выходом «y» модели. В машинном обучении используется много различных типов функций затрат. Одна из наиболее распространенных - среднеквадратичная ошибка.

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

Где n представляет количество обучающих примеров, а y представляет фактические значения, а y 'представляет собой предсказанные значения (которые получены из линейного уравнения ... y' = mx + b ... 'm' и 'b' - коэффициенты конкретной линии, для которой вычисляется функция потерь). Функция стоимости может быть представлена ​​как J (m, b), где m и b - параметры линейного уравнения.

Мы знаем, насколько плохо работает модель, и что теперь?

Теперь на помощь приходит градиентный спуск. Как было определено ранее, градиентный спуск минимизирует эту функцию стоимости. Почему? Потому что, когда значение функции затрат минимально (минимально), модель (то есть линия) прогнозирует значения с максимальной точностью.

Как же тогда работает градиентный спуск?

На приведенном ниже графике показана функция стоимости (J) в сравнении с параметром «m», который представляет собой наклон линии (в данном случае используется только наклон, чтобы сделать его как можно более простым), представленного как w (вес).

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

Градиент рассматриваемой точки является частной производной функции стоимости по обновляемому параметру.

Этот процесс (в данном случае линейной регрессии с одной переменной) представлен в формуле, показанной ниже:

Где {∂ / ∂m J (m, c) и ∂ / ∂c J (m, c)} - частные производные функции стоимости по коэффициентам линейного уравнения (также могут называться характеристиками или весом и bias), ': =' - это оператор присваивания или «обновления», а «alpha 𝛼» - скорость обучения.

Процесс должен повторяться одновременно (т.е. значения должны вычисляться и обновляться одновременно) до сходимости (точка, в которой градиентный спуск делает ОЧЕНЬ небольшие изменения параметров функции, что означает, что она очень близка к минимуму, если не находится на нем).

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

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

Вкратце

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

Некоторые примечания, на которые следует обратить внимание:

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

  1. Пакетный градиентный спуск
  2. Стохастический градиентный спуск
  3. Мини-пакетный градиентный спуск

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

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

А также посмотрите на график зависимости затрат от времени, чтобы оценить скорость обучения.

Ссылки

  1. Курс Эндрю Нг по машинному обучению на Coursera
  2. Среда машинного обучения - градиентный спуск
  3. Концепции градиентного спуска KD-самородков
  4. КД-самородки - Простой градиентный спуск
  5. Youtube - Градиентный спуск
  6. Ашрен Средний - Градиентный спуск
  7. Мастерство машинного обучения - линейная регрессия для машинного обучения