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

Оптимизация

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

Математически задача неограниченной оптимизации с решающими переменнымиθ функции стоимости L имеет следующий вид

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

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

Предполагая, что L является дифференцируемым и выпуклым, необходимым и достаточным условием для того, чтобы вектор θ* был оптимальным решением, является

где ∇ — оператор градиента:

Конкретно, если функция строго выпукла, θ* является единственным оптимальным решением задачи оптимизации.

Функция стоимости

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

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

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

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

То есть мы начинаем с начального предположения θ(0) и на каждой итерации t = 0. . . мы вычисляем правило обновления:

Выбор скорости обучения α имеет решающее значение для сходимости градиентного спуска. На практике принято принимать постоянное значение α.

— ∇L(θ) — это направление, в котором L уменьшается в θ.

Применение градиентного спуска к функции стоимости

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

Найти вектор градиента θ(0)

Найти вектор градиента θ(1)

Мы можем визуализировать нашу функцию стоимости с помощью иллюстрации ниже. Заметим, что наша функция выпукла. Таким образом, наше решение θ* всегда имеет глобальный минимум. 🙂

Алгоритм градиентного спуска

Вывод

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

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

Надеюсь, вам понравилось читать эту статью. Спасибо!

Похлопайте, если понравилось 👏