Почему требуется градиентный спуск?

10

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

почему вместо этого выполняется градиентный спуск?

Ниранджан Кота
источник
2
Как вообще установить производные в 0 для функции? С алгоритмами, такими как градиентный спуск.
Клифф А.Б.
3
Вы можете думать о градиентном спуске как о методе, используемом для решения уравнений, на которые вы ссылаетесь. Если вы уверены, что вы можете в общем случае решить такие уравнения с помощью умных алгебраических манипуляций, я предлагаю вам попытаться сделать это для логистической регрессии.
Мэтью Друри
3
Вероятное дублирование Решения для параметров регрессии в закрытом виде против градиентного спуска
Glen_b -Восстановить Монику
1
Также см stackoverflow.com/questions/26804656/...
Glen_b -Reinstate Моника
Вы не можете решить все аналитически. Даже если бы вы могли, если бы было, скажем, неисчислимое количество нулей, вам потребовалось бы много времени, чтобы проверить все критические точки.
Буратино

Ответы:

8

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

Например, если мы рассмотрим линейную регрессию, явное решение требует обращения матрицы, которая имеет сложность . Это становится недопустимым в контексте больших данных.O(N3)

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

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

jpmuc
источник
2
Инвертировать матрицу здесь немного не по себе, так как QR-разложение с частичным поворотом более точное и быстрое, но да, QR все еще . Я согласен, что для достаточно больших систем (например,> 10000 переменных) это может стать проблемой. Современный высокотехнологичный подход заключается в приближении решения с помощью итерационных методов подпространства Крылова (например, сопряженный градиент, GMRES). O(n3)
Мэтью Ганн
1
Вопрос, который некоторые люди могут счесть запутанным, состоит в том, как решение линейной системы является проблемой оптимизации? Ответ, конечно же, заключается в том, что решение линейной системы можно переосмыслить как минимизацию квадратичной цели. Некоторые итерационные методы решения линейных систем легче понять с точки зрения того, что они минимизируют квадратичную цель итеративным способом. (Например, метод шага сопряженного градиента в подпространственном методе Крылова основан на градиенте ... он слабо связан с градиентным спуском.)
Мэтью Ганн
12

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

Это немного перевернутый ответ. Ваш вопрос действительно должен звучать так: «Зачем нам нужны итерационные методы?» Например. почему бы не перейти прямо к решению, если задача выпуклая, условие Слейтера выполнено, а условия первого порядка необходимы и достаточны для оптимального условия? То есть, когда решение может быть описано как решение системы уравнений, почему бы просто не решить эту систему? Ответ таков:

  • Для задачи квадратичной оптимизации условие первого порядка представляет собой систему линейных уравнений, и мы можем перейти почти непосредственно к решению, поскольку линейные системы могут быть эффективно решены! Мы же используем условие первого порядка и решить систему (например, с QR - разложением, предостережением ниже).
  • В более общем смысле, хотя условия первого порядка определяют нелинейную систему уравнений, и нелинейная система может быть довольно сложной для решения! Фактически, способ, которым вы часто решаете систему нелинейных уравнений численно, состоит в том, что вы переформулируете ее как задачу оптимизации ...
  • Для чрезвычайно больших линейных систем решение системы напрямую с помощью QR-разложения и частичного поворота становится невозможным. Что делают люди?! Итерационные методы! (например, итерационные методы подпространств Крылова ...)
Мэтью Ганн
источник
7

В исчислении 101 мы узнали о том, как оптимизировать функцию, используя «аналитический метод»: нам просто нужно получить производную функции стоимости и установить производную в 0, а затем решить уравнение. Это действительно игрушечная проблема, и она почти никогда не случится в реальном мире.

x7+x352+ex+log(x+x2)+1/x=0x=1.4786, но не знаю аналитического решения). Мы должны использовать некоторые численные методы (проверьте, почему здесь на полиномиальных случаях теорема Абеля Раффина ).

f(x)=x2x=0x=1.1234×1020

f(x1,x2)=x12+x22+|x1+x2|(1,1)4.0(x1,x2)x1 x2xy(1,1)(3,3)α=0.001(0.003,0.003)1,1(0.997,0.997)

Хайтау Ду
источник
больше информации можно найти в этом посте
Haitao Du
4

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

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

Амитоз Дандиана
источник