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

Gradient Descent является основой каждого алгоритма машинного обучения, а также служит основой для многих оптимизаторов глубокого обучения.

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

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

На самом деле этот алгоритм просто вычисляет производную (градиент означает производную в этом уравнении) функции, которую нужно минимизировать, и постоянно работает в направлении минимизации потерь. Найдутся люди, которые спросят, что вычисление производной функции не представляет большого труда, но мой вопрос к этим людям: могут ли они вычислить производную уравнения 100-й степени? Я знаю, что это невозможно для людей. Вот почему нам нужно воспользоваться помощью алгоритма градиентного спуска.

Подход этого алгоритма состоит в минимизации производной и обеспечении сходимости точки в глобальном минимуме кривой функции потерь.

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

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

До сих пор, согласно моему объяснению, работа по градиентному спуску может быть представлена ​​​​как:

веса ​​= веса — производная (функция потерь) → уравнение (1)

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

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

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

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

Теперь последнее уравнение выглядит так:

веса ​​= веса — ( скорость_обучения * производная (функция потерь)) → Final Equation

Я надеюсь, что эта статья написана простым для понимания языком и наилучшим образом объясняет тему. Большое спасибо за то, что потратили свое время на эту статью.