Зачем использовать градиентный спуск для линейной регрессии, когда доступно математическое решение замкнутой формы?

74

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

h(x) = B0 + B1X

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

B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)

B0 = Mean(Y) – B1 * Mean(X)

ПРИМЕЧАНИЕ. Принято как в https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial.

Я проверил нижеприведенные вопросы, и мне было непонятно понять.

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

Почему оптимизация решается с помощью градиентного спуска, а не с помощью аналитического решения?

Приведенные выше ответы сравнивают GD с использованием производных.

Пурус
источник
5
Вам не нужен градиентный спуск для оценки коэффициентов линейной регрессии.
Восстановить Монику
8
@Sycorax "не нужно" - сильное утверждение. Итеративный метод может быть полезен для больших данных. Скажем, матрица данных очень большая и не помещается в памяти.
Haitao Du
8
@ hxd1011 Спасибо за разъяснение этой практической проблемы. Я думал чисто математически.
Восстановите Монику

Ответы:

90

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

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

β=(XX)1XY
XXзатем инвертируйте его (см. примечание ниже). Это дорогой расчет. Для справки, матрица (дизайн) X имеет K + 1 столбцов, где K - количество предикторов и N рядов наблюдений. В алгоритме машинного обучения вы можете получить K> 1000 и N> 1 000 000. Сама матрица требует немного времени для вычисления, затем вам нужно инвертировать матрицу K × K - это дорого.XXK×К

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

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

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

Примечание . Я был удивлен тем, как много внимания уделяется градиентному спуску в лекциях Нг. Он тратит нетривиальное количество времени на разговоры об этом, может быть, 20% от всего курса. Для меня это просто деталь реализации, это то, как именно вы находите оптимальный. Ключ в том, чтобы сформулировать проблему оптимизации, и то, как именно вы ее нашли, несущественно. Я бы не беспокоился об этом слишком сильно. Предоставьте это специалистам по информатике и сосредоточитесь на том, что важно для вас как для статистика.

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

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

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

Аксакал
источник
17
Но Нг - специалист по информатике.
говорит амеба, восстанови Монику
21
Относительно вашего замечания: как математик, я привык соглашаться. Но теперь я понимаю, что в современном машинном обучении метод оптимизации по своей сути связан с оптимизируемой целью. Некоторые формы регуляризации, такие как выпадение, более четко выражены в терминах алгоритма, а не цели. Короче говоря: если вы берете глубокую сеть, сохраняете целевую функцию, но меняете метод оптимизации, вы можете получить совсем другую производительность. На самом деле, иногда лучший оптимизатор дает худшие результаты на практике ...
А. Рекс
14
Икс'ИксИкс'Иксβзнак равноИкс'Yβ
3
@AnderBiguri Решение с QR-факторизацией, с другой стороны, обратно устойчиво, поэтому оно обеспечивает решение, которое является максимально точным, учитывая неопределенность во входных данных.
Федерико Полони
7
β=(XtX)1XtyXtXβ=Xty
21

Во-первых, я настоятельно рекомендую вам прочитать следующие два поста (если не дублировать)

Пожалуйста, проверьте ответ JM в

Какой алгоритм используется в линейной регрессии?

Пожалуйста, проверьте ответ Марка (с точки зрения числовой устойчивости) в

Нужен ли градиентный спуск, чтобы найти коэффициенты модели линейной регрессии?


минимизировать | |AИкс-б| |2
2AT(AИкс-б)0
ATAИксзнак равноATб

ATAИксзнак равноATбминимизировать | |AИкс-б| |2

Сравнение с прямыми методами (скажем, разложение QR / LU ). Итерационные методы имеют некоторые преимущества, когда у нас большой объем данных или данные очень редки.

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

Haitao Du
источник
Вы абсолютно правы. SGD очень полезен при обработке большого количества данных. Метод, демонстрирующий проф Нг, является наиболее классическим и чистым. С этого момента нужно начинать, чтобы иметь четкое представление. Если человек сможет понять девиз этого, тогда вся линейная оценка будет ему кристально ясна.
Сандипан Кармакар
1
ИксTИксзнак равноΣИксяИксяTИксTИксИксTYИкс
6

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

Тем не менее, я хочу добавить одну важную вещь: в настоящее время существует небольшая исследовательская ниша, предусматривающая прекращение градиентного спуска на ранней стадии, чтобы предотвратить переоснащение модели.

Тим Атрейдес
источник
2
Для заявления о переоснащении, не могли бы вы предоставить ссылку? добавление члена регуляризации лучше, чем ограничение количества итераций?
Haitao Du
Вы можете взглянуть на главу 7 «Глубокое обучение» Гудфеллоу и др., В которой упоминается ранняя остановка, чтобы предотвратить переоснащение нейронных сетей.
Бэтмен
2
Регуляризация путем ранней остановки отнюдь не является новой техникой; скажем, это хорошо известная техника в итерации
Landweber
3

(ИксTИкс)-1ИксTY

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

О(N3)NИксИкс

Я предлагаю вам не просто решать проблему. Постарайтесь понять теорию. Профессор Нг - один из лучших профессоров в мире, который любезно преподает машинное обучение в MOOC. Поэтому, когда он наставляет таким образом, у него должны быть какие-то скрытые намерения. Надеюсь, вы не будете против моих слов.

Всего наилучшего.

Сандипан Кармакар
источник
5
«Инвертировать матрицу» настоятельно НЕ рекомендуется. QR более численно устойчив для решения линейной системы.
Haitao Du
1
Я согласен с вычислительным аргументом. Тем не менее, чрезмерное или недостаточное оснащение не имеет ничего общего с использованием GD по сравнению с нормальным уравнением, а скорее со сложностью (регрессионной) модели. Оба метода (GD, если он работает должным образом) находят одно и то же решение методом наименьших квадратов (если он существует) и поэтому будут переоценивать или занижать данные на одинаковую величину.
Рубен ван Берген
2

Во-первых, да, настоящая причина - та, которую дал Тим Атрейдес; это педагогическое упражнение.

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

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

Тимоти Тервяйнен
источник
2

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

Sanyo Mn
источник