Я беру онлайн курсы машинного обучения и узнал о градиентном спуске для расчета оптимальных значений в гипотезе.
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 с использованием производных.
Ответы:
Основной причиной, по которой градиентный спуск используется для линейной регрессии, является сложность вычислений: в некоторых случаях вычислительно дешевле (быстрее) найти решение с использованием градиентного спуска.
Формула, которую вы написали, выглядит очень простой, даже в вычислительном отношении, потому что она работает только для одномерного случая, т.е. когда у вас есть только одна переменная. В многомерном случае, когда у вас много переменных, формулы немного сложнее на бумаге и требуют гораздо больше вычислений, когда вы реализуете их в программном обеспечении: Здесь вам нужно вычислить матрица X ′ X
Таким образом, градиентный спуск позволяет сэкономить много времени на расчетах. Более того, способ, которым это делается, допускает тривиальное распараллеливание, то есть распределение вычислений по нескольким процессорам или машинам. Решение линейной алгебры также может быть распараллелено, но оно более сложное и все же дорогое.
Кроме того, существуют версии с градиентным спуском, когда вы храните только часть своих данных в памяти, что снижает требования к памяти компьютера. В целом, для очень больших задач это более эффективно, чем решение линейной алгебры.
Это становится еще более важным по мере увеличения размерности, когда у вас есть тысячи переменных, как в машинном обучении.
Примечание . Я был удивлен тем, как много внимания уделяется градиентному спуску в лекциях Нг. Он тратит нетривиальное количество времени на разговоры об этом, может быть, 20% от всего курса. Для меня это просто деталь реализации, это то, как именно вы находите оптимальный. Ключ в том, чтобы сформулировать проблему оптимизации, и то, как именно вы ее нашли, несущественно. Я бы не беспокоился об этом слишком сильно. Предоставьте это специалистам по информатике и сосредоточитесь на том, что важно для вас как для статистика.
Сказав это , я должен квалифицироваться, говоря , что это действительно важно понять , на вычислительную сложность и численную устойчивость алгоритмов решения. Я все еще не думаю, что вы должны знать детали реализации и код алгоритмов. Обычно это не лучшее использование вашего времени в качестве статистика.
Примечание 1 . Я написал, что вы должны инвертировать матрицу для дидактических целей, а не то, как обычно вы решаете уравнение. На практике задачи линейной алгебры решаются с помощью некоторого вида факторизации, такой как QR, где вы не инвертируете матрицу напрямую, а выполняете некоторые другие математически эквивалентные манипуляции, чтобы получить ответ. Вы делаете это, потому что матричная инверсия является дорогой и численно нестабильной операцией во многих случаях.
Это вызывает еще одно небольшое преимущество алгоритма градиентного спуска в качестве побочного эффекта: он работает даже тогда, когда матрица проектирования имеет проблемы с коллинеарностью. Обычный путь линейной алгебры взорвется, и градиентное спуск будет продолжаться даже для коллинеарных предикторов.
источник
Во-первых, я настоятельно рекомендую вам прочитать следующие два поста (если не дублировать)
Пожалуйста, проверьте ответ JM в
Какой алгоритм используется в линейной регрессии?
Пожалуйста, проверьте ответ Марка (с точки зрения числовой устойчивости) в
Нужен ли градиентный спуск, чтобы найти коэффициенты модели линейной регрессии?
Сравнение с прямыми методами (скажем, разложение QR / LU ). Итерационные методы имеют некоторые преимущества, когда у нас большой объем данных или данные очень редки.
Для разреженных данных, проверьте большую книгу Итерационные методы для разреженных линейных систем
С другой стороны, я полагаю, что одна из причин, по которой Эндрю Нг подчеркивает это, заключается в том, что это универсальный метод (наиболее широко используемый метод в машинном обучении) и может использоваться в других моделях, таких как логистическая регрессия или нейронная сеть.
источник
Sycorax правильно, что вам не нужно градиентного спуска при оценке линейной регрессии. Ваш курс может быть на простом примере, чтобы научить вас градиентному спуску для предисловия более сложных версий.
Тем не менее, я хочу добавить одну важную вещь: в настоящее время существует небольшая исследовательская ниша, предусматривающая прекращение градиентного спуска на ранней стадии, чтобы предотвратить переоснащение модели.
источник
Метод, который вы упомянули, т.е. с использованием корреляции, он применим только для одного предиктора и одной величины перехвата. Просто обратите внимание на форму. Итак, когда число предикторов больше одного, то каков выход? Затем нужно прибегнуть к другим методам, т.е. к нормальному уравнению или оптимизации.
Я предлагаю вам не просто решать проблему. Постарайтесь понять теорию. Профессор Нг - один из лучших профессоров в мире, который любезно преподает машинное обучение в MOOC. Поэтому, когда он наставляет таким образом, у него должны быть какие-то скрытые намерения. Надеюсь, вы не будете против моих слов.
Всего наилучшего.
источник
Во-первых, да, настоящая причина - та, которую дал Тим Атрейдес; это педагогическое упражнение.
Тем не менее, возможно, хотя и маловероятно, что кто-то захочет выполнить линейную регрессию, скажем, для нескольких триллионов точек данных, передаваемых из сетевого сокета. В этом случае наивная оценка аналитического решения была бы невозможна, в то время как некоторые варианты стохастического / адаптивного градиентного спуска сходились бы к правильному решению с минимальными затратами памяти.
(Для линейной регрессии можно переформулировать аналитическое решение как рекуррентную систему, но это не общий метод.)
источник
Еще одна причина заключается в том, что градиентный спуск является более общим методом. Для многих задач машинного обучения функция стоимости не является выпуклой (например, матричная факторизация, нейронные сети), поэтому вы не можете использовать решение в закрытой форме. В этих случаях градиентный спуск используется для нахождения хороших локальных оптимальных точек. Или, если вы хотите внедрить онлайн-версию, вам придется использовать алгоритм на основе градиентного спуска.
источник