Обычное руководство по контролируемому обучению с помощью scikit-learn — Стохастический градиентный спуск — Обобщенные линейные модели SGD (13)

Это тринадцатая часть из 92 частей обычного руководства по обучению с учителем с помощью scikit-learn, написанного с целью научиться эффективно использовать алгоритмы и объяснить алгоритмическую логику, лежащую в их основе. Ссылки на все части смотрите в первой статье.

Градиентный спуск

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

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

Предположим, мы хотим смоделировать указанный выше набор точек с помощью линии. Для этого мы будем использовать стандартное уравнение линии y = mx + b, где m — это наклон линии, а b — точка пересечения линии по оси Y. Чтобы найти лучшую линию для наших данных, нам нужно найти лучший набор значений наклона m и y-пересечения b.

Стандартный подход к решению этого типа проблем заключается в определении функции ошибки (также называемой функцией стоимости), которая измеряет, насколько «хороша» данная линия. Эта функция примет пару (m,b) и вернет значение ошибки в зависимости от того, насколько хорошо линия соответствует нашим данным.

Линии, которые лучше соответствуют нашим данным (где лучше определяется нашей функцией ошибок), приведут к более низким значениям ошибки. Если мы минимизируем эту функцию, мы получим лучшую линию для наших данных. Поскольку наша функция ошибок состоит из двух параметров (m и b), мы можем визуализировать ее как двумерную поверхность. Вот как это выглядит для нашего набора данных:

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

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

Стохастический градиентный спуск

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

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

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

В псевдокоде стохастический градиентный спуск можно представить следующим образом:

примечание: источник информации выше.

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

Кредиты

Все кредиты относятся к документации Scikit-learn, а все ссылки соответствуют официальному руководству пользователя.

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

об авторе

Я Венали Сононе, специалист по данным по профессии, а также студент менеджмента, стремящийся продвинуться по карьерной лестнице в финансовой сфере.