"Разница между решением и оптимизированным решением заключается в том, что оптимизированное решение работает в рабочей среде"

Введение

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

Понимание машинного обучения

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

Создание уравнения

Для простоты предположим, что у нас есть только 3 точки данных (как показано на графике ниже). Мы хотим получить уравнение линии, которое поможет нам предсказать расход топлива (наиболее точно) с учетом пройденного расстояния.

Уравнение линии будет следующим:
"Fuel_consumed = m*Пройденное_расстояние + c"
Для простоты Fuel_consumed равно FC, а Distance_covered равно DC, что делает уравнение следующим: FC = m*DC + c . Градиентный спуск поможет нам получить значение m и c, для которого потери (объясненные ниже) минимальны или прогноз наиболее точен.

Понимание функции потерь и затрат

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

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

В этом случае мы определяем нашу функцию потерь как:
d1 = Square((y1 — (mX1 + c)), аналогично мы получим d2 и d3.
Функция стоимости = d1 + d2 + d3
По сути, нам нужно найти значения m и c, при которых функция стоимости минимальна.

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

Чтобы найти оптимальное значение m и c, мы применим производную к функции стоимости относительно m и c.

Мы начинаем со случайных значений m и c и подставляем их в уравнения, упомянутые выше. После подстановки значений мы получаем абсолютные значения как для (d(cost)/dm), так и для (d(cost)/dc).

Затем мы определяем размер шага (m) = α * (d(стоимость)/dm) и размер шага (c) = α * (d(стоимость)/dc).

Замените m(новый) = m(старый) — step_size(m) и замените c(новый) = c(старый) — step_size(c). Эти новые значения m и c будут помещены обратно в уравнение производной. И используя новые абсолютные значения, мы получим новый размер шага. Мы будем повторять шаги, пока не получим размер шага, очень близкий к 0 (обычно 0,001). В конечном счете, мы останавливаемся, когда нас устраивает значение размера шага или мы заканчиваем количество итераций. Окончательное значение m и c затем помещается в уравнение, которое, в свою очередь, минимизирует функцию стоимости.

Заключение

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

Обо мне

Я разработчик Data Science. Я разрабатываю продукты с искусственным интеллектом, чтобы помочь предприятиям в процессе принятия решений. Я работаю старшим техническим руководителем (отдел исследований и разработок AI Innovation) в Marlabs. Я заинтересован в разработке удобных платформ, чтобы помочь людям/организациям использовать возможности ИИ.