Основной причиной, по которой градиентный спуск используется для линейной регрессии, является сложность вычислений: в некоторых случаях вычислительно дешевле (быстрее) найти решение с использованием градиентного спуска.
Формула, которую вы написали, выглядит очень простой, даже в вычислительном отношении, потому что она работает только для одномерного случая, т.е. когда у вас есть только одна переменная. В многомерном случае, когда у вас много переменных, формулы немного сложнее на бумаге и требуют гораздо больше вычислений, когда вы реализуете их в программном обеспечении:
Здесь вам нужно вычислить матрица X ′ X
β= ( X'Икс)- 1Икс'Y
Икс'Иксзатем инвертируйте его (см. примечание ниже). Это дорогой расчет. Для справки, матрица (дизайн) X имеет K + 1 столбцов, где K - количество предикторов и N рядов наблюдений. В алгоритме машинного обучения вы можете получить K> 1000 и N> 1 000 000. Сама матрица
требует немного времени для вычисления, затем вам нужно инвертировать матрицу
K × K - это дорого.
Икс'ИксК× К
Таким образом, градиентный спуск позволяет сэкономить много времени на расчетах. Более того, способ, которым это делается, допускает тривиальное распараллеливание, то есть распределение вычислений по нескольким процессорам или машинам. Решение линейной алгебры также может быть распараллелено, но оно более сложное и все же дорогое.
Кроме того, существуют версии с градиентным спуском, когда вы храните только часть своих данных в памяти, что снижает требования к памяти компьютера. В целом, для очень больших задач это более эффективно, чем решение линейной алгебры.
Это становится еще более важным по мере увеличения размерности, когда у вас есть тысячи переменных, как в машинном обучении.
Примечание . Я был удивлен тем, как много внимания уделяется градиентному спуску в лекциях Нг. Он тратит нетривиальное количество времени на разговоры об этом, может быть, 20% от всего курса. Для меня это просто деталь реализации, это то, как именно вы находите оптимальный. Ключ в том, чтобы сформулировать проблему оптимизации, и то, как именно вы ее нашли, несущественно. Я бы не беспокоился об этом слишком сильно. Предоставьте это специалистам по информатике и сосредоточитесь на том, что важно для вас как для статистика.
Сказав это , я должен квалифицироваться, говоря , что это действительно важно понять , на вычислительную сложность и численную устойчивость алгоритмов решения. Я все еще не думаю, что вы должны знать детали реализации и код алгоритмов. Обычно это не лучшее использование вашего времени в качестве статистика.
Примечание 1 . Я написал, что вы должны инвертировать матрицу для дидактических целей, а не то, как обычно вы решаете уравнение. На практике задачи линейной алгебры решаются с помощью некоторого вида факторизации, такой как QR, где вы не инвертируете матрицу напрямую, а выполняете некоторые другие математически эквивалентные манипуляции, чтобы получить ответ. Вы делаете это, потому что матричная инверсия является дорогой и численно нестабильной операцией во многих случаях.
Это вызывает еще одно небольшое преимущество алгоритма градиентного спуска в качестве побочного эффекта: он работает даже тогда, когда матрица проектирования имеет проблемы с коллинеарностью. Обычный путь линейной алгебры взорвется, и градиентное спуск будет продолжаться даже для коллинеарных предикторов.