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

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

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

Предполагая линейную связь между двумя переменными, мы используем модель уравнения прямой y = mx + c. Итак, для простой линейной модели вы могли бы сказать, что:

PredictionOutput = SomeNumber + SomeOtherNumber умножить на SomeDescriptiveFeature

Мы можем представить это с помощью простых обозначений:

Используя это уравнение, теперь мы можем выполнить некоторую регрессию (т.е.прогнозировать некоторое непрерывное значение).

Почему SomeNumber и SomeOtherNumber становятся w [0] и w [1]? Потому что мы будем манипулировать этими числами вместе, и для этого наша модель будет рассматривать их как вектор 'w', который равен ‹w [0], w [1]›, где параметры w [0] и w [ 1] называются весами.

У нас есть одна описательная функция, поэтому d [1] на самом деле является одним числом, мы могли бы написать d. Однако позже мы превратим эту описательную функцию также в вектор для захвата нескольких функций, поэтому мы используем вектор, предлагая обозначение d [1].

Теперь мы знаем, что стандартная ошибка регрессии представляет собой среднее расстояние, на которое наблюдаемые значения падают от линии регрессии, и для каждой возможной комбинации весов, w [0] и w [1], существует соответствующая сумма квадратов ошибок. которые можно объединить, чтобы создать поверхность ошибки.

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

Здесь функция ошибок или, можно сказать, функция потерь, может быть обозначена как:

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

Для этого мы будем использовать алгоритм градиентного спуска.

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

Мы повторяем этот процесс снова и снова, пока не сможем исправить ошибку
дальше.

На рисунке ниже показан путь градиентного спуска с 4 различными отправными точками для достижения глобального минимума.

Самая важная часть алгоритма градиентного спуска - это обновление весов. Каждый вес рассматривается независимо, и для каждого из них выполняется небольшая корректировка путем добавления небольшого значения дельты к текущему весу, w [j]. Эта регулировка гарантирует, что изменение веса приведет к смещению поверхности ошибки вниз.

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

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