В этой статье мы собираемся использовать некоторые понятия дифференциального исчисления. Если не помните, сделайте пожалуйста обзор в основном по частной производной и по цепному правилу.📚
Оптимизация
Задача математической оптимизации или просто задача оптимизации имеет только одну цель: найти лучший элемент из набора кандидатов с помощью функции, известной как функция стоимости, функция потерь или целевая функция.
Математически задача неограниченной оптимизации с решающими переменнымиθ функции стоимости L имеет следующий вид
Нам нужно найти вектор θ, который приводит к наименьшему значению функции стоимости. Если он существует, вектор называется оптимальным решением или минимальным глобальным и будет обозначаться θ*,следующим образом:
Обратите внимание, что в зависимости от функции приведенное выше уравнение может не иметь оптимального решения. Иногда функция может иметь более одного локального минимума или максимума, как на графике, представленном в начале этой статьи. Однако мы хотим найти минимальный глобальный. В связи с этим допустим, что наша задача имеет оптимальное решение.
Предполагая, что L является дифференцируемым и выпуклым, необходимым и достаточным условием для того, чтобы вектор θ* был оптимальным решением, является
где ∇ — оператор градиента:
Конкретно, если функция строго выпукла, θ* является единственным оптимальным решением задачи оптимизации.
Функция стоимости
В машинном обучении мы обычно вычисляем функцию стоимости, чтобы узнать, как работает наша модель, потому что наша цель — найти наилучшую гипотезу. Функция стоимости вычисляет ошибку всего набора обучающих данных. Итак, мы хотим минимизировать функцию стоимости, т. е. минимизировать ошибку любой модели машинного обучения.
Существуют разные типы функций стоимости, и мы выбираем их в зависимости от модели, с которой собираемся работать. В этой статье мы используем модель линейной регрессии, а наша функция стоимости представляет собой среднеквадратичную ошибку, как показано ниже.
Градиентный спуск
Вероятно, градиентный спуск является одним из самых простых и широко используемых итерационных алгоритмов оптимизации непрерывных и дифференцируемых функций. Основная идея метода состоит в том, чтобы начать с начальной точки, выбранной случайным образом, и многократно улучшать ее, делая небольшие шаги в противоположном направлении градиента на каждой итерации.
То есть мы начинаем с начального предположения θ(0) и на каждой итерации t = 0. . . мы вычисляем правило обновления:
Выбор скорости обучения α имеет решающее значение для сходимости градиентного спуска. На практике принято принимать постоянное значение α.
— ∇L(θ) — это направление, в котором L уменьшается в θ.
Применение градиентного спуска к функции стоимости
Мы собираемся использовать модель линейной регрессии, представленную ниже.
Найти вектор градиента θ(0)
Найти вектор градиента θ(1)
Мы можем визуализировать нашу функцию стоимости с помощью иллюстрации ниже. Заметим, что наша функция выпукла. Таким образом, наше решение θ* всегда имеет глобальный минимум. 🙂
Алгоритм градиентного спуска
Вывод
В этой статье мы изучили теоретическую часть градиентного спуска, примененного к модели линейной регрессии. Однако градиентный спуск может использоваться в других алгоритмах машинного обучения и глубокого обучения. Что-то важное для градиентного спуска — это выбор скорости обучения. Большие значения скорости обучения могут привести к перерегулированию. То есть, если мы обновим параметры, используя большие значения скорости обучения, функция может не сойтись к глобальному минимуму. С другой стороны, небольшие значения скорости обучения потребуют слишком много итераций для сходимости функции.
Хотя я говорил только о градиентном спуске, существуют и другие его версии, такие как: пакетный градиентный спуск, стохастический градиентный спуск и мини-пакетный градиентный спуск. Я бы хотел, чтобы вы изучили эти типы алгоритмов и попытались понять, когда вы можете использовать каждый из них.
Надеюсь, вам понравилось читать эту статью. Спасибо!