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