Когда мы можем дифференцировать функцию стоимости и найти параметры, решая уравнения, полученные посредством частичного дифференцирования по каждому параметру, и выяснить, где функция стоимости минимальна. Также я думаю, что можно найти несколько мест, где производные равны нулю, поэтому мы можем проверить все такие места и найти глобальные минимумы
почему вместо этого выполняется градиентный спуск?
machine-learning
computational-statistics
Ниранджан Кота
источник
источник
Ответы:
Даже в случае, скажем, линейных моделей, где у вас есть аналитическое решение, все же может быть лучше использовать такой итерационный решатель.
Например, если мы рассмотрим линейную регрессию, явное решение требует обращения матрицы, которая имеет сложность . Это становится недопустимым в контексте больших данных.O ( N3)
Кроме того, многие проблемы в машинном обучении являются выпуклыми, поэтому использование градиентов гарантирует, что мы дойдем до крайностей.
Как уже указывалось, все еще существуют актуальные невыпуклые проблемы, такие как нейронные сети, где градиентные методы (обратное распространение) обеспечивают эффективный решатель. Опять же, это особенно актуально для случая глубокого обучения.
источник
Градиентный спуск не требуется. Оказывается, градиентный спуск часто является ужасно неэффективным алгоритмом оптимизации! Для итерационных методов часто можно найти лучшее направление для движения, чем там, где градиент самый крутой.
Это немного перевернутый ответ. Ваш вопрос действительно должен звучать так: «Зачем нам нужны итерационные методы?» Например. почему бы не перейти прямо к решению, если задача выпуклая, условие Слейтера выполнено, а условия первого порядка необходимы и достаточны для оптимального условия? То есть, когда решение может быть описано как решение системы уравнений, почему бы просто не решить эту систему? Ответ таков:
источник
В исчислении 101 мы узнали о том, как оптимизировать функцию, используя «аналитический метод»: нам просто нужно получить производную функции стоимости и установить производную в 0, а затем решить уравнение. Это действительно игрушечная проблема, и она почти никогда не случится в реальном мире.
источник
Упомянутый вами подход может использоваться только для решения системы линейных уравнений, например, в случае линейной регрессии, но, скажем, для решения системы нелинейных уравнений, в таких случаях, как нейронные сети с сигмовидной активацией, градиентный спуск является подходом идти на. Таким образом, Gradient Descent - более общий подход.
Даже для линейных уравнений размер матриц, заданных набором линейных уравнений, огромен, и может быть сложно ограничить требования к памяти.
источник