Вы когда-нибудь задумывались, как алгоритмы машинного обучения дают нам оптимальный результат, будь то предсказание, классификация или любой другой? Как работают эти алгоритмы? Какая математика стоит за этими алгоритмами, которые приводят к результату, который можно использовать в качестве инструмента для оценки реальных проблем? Алгоритм Градиентный спуск делает волшебство возможным.
Gradient Descent
является основой каждого алгоритма машинного обучения, а также служит основой для многих оптимизаторов глубокого обучения.
Он работает по простому механизму и заключается в том, чтобы найти оптимальные веса для функции потерь путем повторения кривой ошибок значений, показанной выше, благодаря чему ошибка в прогнозах модели и фактических значениях минимальна.
Рассмотрим случай, в котором мы вручную использовали, скажем, 15 значений и рассчитали потери для каждого из этих значений в соответствии с любой функцией потерь, в этом случае мы можем сделать, потому что значений всего 15, это очень небольшое число, но оно будет не приводит к оптимальному результату, и в реальном мире мы должны использовать много значений, чтобы получить значение, которое минимизирует потери, т. е. ошибку в предсказании модели и значения в реальном мире. Здесь вступает в действие градиентный спуск.
На самом деле этот алгоритм просто вычисляет производную (градиент означает производную в этом уравнении) функции, которую нужно минимизировать, и постоянно работает в направлении минимизации потерь. Найдутся люди, которые спросят, что вычисление производной функции не представляет большого труда, но мой вопрос к этим людям: могут ли они вычислить производную уравнения 100-й степени? Я знаю, что это невозможно для людей. Вот почему нам нужно воспользоваться помощью алгоритма градиентного спуска.
Подход этого алгоритма состоит в минимизации производной и обеспечении сходимости точки в глобальном минимуме кривой функции потерь.
Теперь предположим, что точка находится в левой части границы приведенной выше кривой, тогда, если мы проведем вертикальную линию через эту точку, как показано на кривой, то определенно наклон этой линии будет отрицательным, и отсюда, если мы продолжим увеличивать значение функции потерь или, другими словами, если мы продолжим добавлять градиент (который является отрицательным), он сойдется к глобальному минимуму. Если точка изначально присутствует в правой части границы кривой, показанной выше, из этой точки, если мы проведем линию, ее наклон будет положительным, и теперь мы должны вычесть градиент, потому что она положительна, чтобы достичь глобального минимума.
Итак, согласно приведенному выше объяснению, градиентный спуск определяет функцию потерь таким образом, который удовлетворяет как положительным, так и отрицательным условиям градиента.
До сих пор, согласно моему объяснению, работа по градиентному спуску может быть представлена как:
веса = веса — производная (функция потерь) → уравнение (1)
В приведенном выше уравнении может быть некоторая проблема, если предположить, что производная слишком велика или слишком мала, тогда возникнет проблема с достижением точки схождения, то есть точки минимума на графике функции потерь, в которой находятся оптимальные веса.
Чтобы решить вышеуказанную проблему, мы используем параметр с именем Learning rate
, который используется для управления вышеуказанной проблемой. Скорость обучения умножается на производную (функция потерь), что помогает контролировать рост производной (функция потерь).
На приведенном выше графике четко изображены проблемы неэффективной скорости обучения, и мы можем ясно видеть, что если скорость обучения велика, то производная (функция потерь) будет стрелять в определенном направлении, а если она мала, то производная ( функция потерь) достигнет глобального минимума, но это займет очень много времени.
Таким образом, мы должны выбрать скорость обучения соответственно, и наилучшее ее значение можно найти экспериментальным путем.
Теперь последнее уравнение выглядит так:
веса = веса — ( скорость_обучения * производная (функция потерь)) → Final Equation
Я надеюсь, что эта статья написана простым для понимания языком и наилучшим образом объясняет тему. Большое спасибо за то, что потратили свое время на эту статью.