В этой статье мы попытаемся понять алгоритм градиентного спуска и математику, которая за ним стоит.

Давайте возьмем простую задачу линейной регрессии, где мы хотим предсказать вес данного человека на основе его или ее роста. Чтобы начать с любой задачи машинного обучения с учителем, нам сначала потребуются данные для обучения, которые дают нам связь между объектами: в данном случае рост и вес. Сущность, которая помогает в процессе прогнозирования, называется независимыми переменными или функциями. Может быть одна или несколько независимых переменных. Например, в нашем примере мы можем иметь как рост, так и возраст человека для получения веса (теперь мы сосредоточимся только на одном признаке — одномерной линейной регрессии). Объект, который мы прогнозируем, называется зависимой или целевой переменной. Мы будем использовать «x» для обозначения функции и «y» для обозначения целевой переменной. Мы будем использовать «m» для обозначения количества выборок в обучающих данных. Допустим, у нас есть данные 10 человек для обучения нашей модели, в этом случае m = 10. Наконец, h(x) будет использоваться для обозначения функции гипотезы, которая будет определять предсказанное «y».

Функция стоимости используется для измерения точности прогноза. Допустим, ​hθ​(xi) – прогнозируемое значение целевой переменной (для i-й записи), а yi​ – фактическое значение, которое задан (для i-й записи). Таким образом, разница между этими двумя дает нам ошибку (или потерю). Разница возводится в квадрат, чтобы исключить любые негативные обозначения, после чего компоненты ошибки суммируются для каждого значения i, где i=1,2,3…m, а затем, наконец, делится на общее количество выборок поездов, что дает нам среднеквадратичную ошибку(MSE). Наша цель — минимизировать этот член ошибки: J(θ0​,θ1​)

Визуальное представление функции стоимости в двухмерном пространстве

(2D-пространство: 2 переменные ; 1 независимый объект "x" и 1 целевая переменная "Y")

Для простоты предположим, что θ0 = 0 , что делает функцию стоимости зависимой только от θ1, т. е. «h​(xi ​) = θ1x». Теперь, если вы продолжите строить графики зависимости θ1 от функции стоимости J(θ1), мы получим график, как показано ниже.

Визуальная интуиция функции стоимости в трехмерном пространстве

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

Проще говоря, производная функции в исчислении — это изменение выходного значения по отношению к небольшому изменению входного значения. Например, автомобиль проходит расстояние «S» за время «T», тогда в любой точке «t» скорость автомобиля может быть рассчитана как Небольшое изменение расстояния «ds» / Небольшое изменение времени «dt», когда dt приближается к 0.

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

Цель: минимизация функции стоимости с помощью градиентного спуска

Алгоритм градиентного спуска помогает найти локальные минимумы (или максимумы) заданной функции. Алгоритм начинается со случайной точки на графике ниже, а затем на основе наклона в этой точке (производной) решает, в каком направлении он должен двигаться дальше. Если наклон положителен, θ1уменьшается, а наклон отрицателен, θ1увеличивается, пока не сходится к локальным минимумам, где наклон наконец становится равным 0 (при θ1 = 1 ).

Математически алгоритм градиентного спуска можно описать как:

Обратите внимание, если J(θ0​,θ1​) положительно, θj будет возрастать как θj := θj + (некоторое положительное значение)и если J(θ0​,θ1​) отрицательно, θjуменьшается как θj := θj + (некоторое отрицательное значение)

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

Важным примечанием здесь является расчет параметров на каждом этапе градиентного спуска; все параметры должны обновляться одновременно

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

Визуальная интуиция градиентного спуска в трехмерном пространстве

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

Удачного обучения!!