Навіщо використовувати градієнтний спуск для лінійної регресії, коли доступний математичний розчин закритої форми?


73

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

h(x) = B0 + B1X

чому нам потрібно використовувати Gradient Descent, якщо нам легко знайти значення за наведеною нижче формулою? Це виглядає прямо вперед і легко. але 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
Для оцінки коефіцієнтів лінійної регресії не потрібно спуск по градієнту.
Sycorax

8
@Sycorax "не потрібно" - це сильне твердження. Ітеративний метод може бути корисним для величезних даних. Скажімо, матриця даних дуже велика, що не може вміститись у пам'яті.
Хайтао Ду

8
@ hxd1011 Дякуємо, що роз’яснили цей практичний аспект проблеми. Я думав суто математично.
Sycorax

Відповіді:


89

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

Формула, яку ви написали, виглядає дуже просто, навіть обчислювально, тому що вона працює лише для одновимірного випадку, тобто коли у вас є лише одна змінна. У багатоваріантному випадку, коли у вас багато змінних, формули трохи складніші на папері і вимагають набагато більше обчислень, коли ви реалізуєте це в програмному забезпеченні: Ось, ви необхідно обчислити матрицю потім перевернути її (див. примітку нижче). Це дорогий розрахунок. Для довідки, (проектна) матриця X має K + 1 стовпців, де K - кількість предикторів та N рядків спостережень. У алгоритмі машинного навчання ви можете закінчити K> 1000 та N> 1,000,000. Сама матриця займає трохи часу, щоб обчислити, тоді вам доведеться інвертуватиX X X X K × K

β=(XX)1XY
XXXXK×KМатриця - це дорого.

Отже, градієнтний спуск дозволяє зекономити багато часу на розрахунках. Більше того, спосіб, який це робиться, дозволяє тривіальну паралелізацію, тобто розподіл обчислень на декілька процесорів або машин. Розв'язок лінійної алгебри також може бути паралельним, але він складніший і все-таки дорогий.

Крім того, існують версії градієнтного спуску, коли ви зберігаєте лише частину своїх даних у пам'яті, знижуючи вимоги до пам'яті комп'ютера. Загалом, для надзвичайно великих проблем це більш ефективно, ніж рішення лінійної алгебри.

Це стає ще важливішим, оскільки розмірність збільшується, коли у вас є тисячі змінних, як у машинному навчанні.

Зауваження . Мене здивувало, скільки уваги приділяється градієнтному спуску в лекціях Нг. Він витрачає на це нетривіальну кількість часу, можливо, 20% всього курсу. Для мене це лише деталізація реалізації, це те, як саме ви знаходите оптимум. Ключ полягає у формулюванні проблеми оптимізації, а те, як саме ви її знайдете, є несуттєвим. Я б не переживав про це занадто. Залиште це людям з інформатики та зосередьтеся на тому, що для вас важливо як статистик.

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

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

Це призводить до ще однієї невеликої переваги алгоритму спуску градієнта як побічного ефекту: він працює навіть тоді, коли в матриці проекту виникають проблеми колінеарності. Звичайний лінійний шлях алгебри підірветься, а градієнтне спускання буде продовжуватись навіть для колінеарних прогнозів.


17
Але Нг - людина з інформатики.
амеба

21
Щодо Вашого зауваження: Як математик я погоджувався. Але зараз я розумію, що в сучасному машинному навчанні метод оптимізації суттєво пов'язаний з оптимізованою метою. Деякі форми регуляризації, як-от випадання, більш чітко виражені в алгоритмі замість цілі. Якщо коротко: якщо взяти глибоку сітку, зберегти цільову функцію, але змінити метод оптимізації, ви можете отримати дуже різні показники. Насправді іноді кращий оптимізатор дає гірші результати на практиці ...
А. Рекс

14
XXXXβ=Xyβ

3
@ AnderBiguri Рішення з QR-факторизацією, з іншого боку, є стійким назад, отже, він пропонує рішення, яке є максимально точним, враховуючи невизначеність вхідних даних.
Федеріко Полоні

7
β=(XtX)1XtyXtXβ=Xty

21

По-перше, я настійно рекомендую прочитати наступні два повідомлення (якщо не дублювати)

Перевірте відповідь JM в

Який алгоритм використовується в лінійній регресії?

Будь ласка, перевірте відповідь Марка (з точки зору числової стійкості) в

Чи потрібен нам градієнтний спуск, щоб знайти коефіцієнти лінійної регресійної моделі?


minimize Axb2
2AT(Axb)0
ATAx=ATb

ATAx=ATbminimize Axb2

Порівняння з прямими методами (скажіть QR / LU Decomposition). Ітеративні методи мають деякі переваги, коли ми маємо велику кількість даних або дані дуже рідкі.

З іншого боку, я вважаю, що одна з причин, на яку Ендрю Нг підкреслює, це тому, що це загальний метод (найбільш широко застосовуваний метод у машинному навчанні) і може використовуватися в інших моделях, таких як логістична регресія чи нейронна мережа.


Ви абсолютно праві. SGD дуже корисний при обробці великої кількості даних. Метод, який проф. Нг демонструє, є найбільш класичним та чистим. Слід почати з цього пункту, щоб мати чітке уявлення. Якщо можна зрозуміти девіз цього, тоді вся лінійна оцінка буде для нього кристально зрозумілою.
Сандіпан Кармакар

1
XTX=xixiTXTXXTyX

6

Sycorax вірно вважає, що при оцінці лінійної регресії вам не потрібен градієнтний спуск. Ваш курс, можливо, використовує простий приклад, щоб навчити вас градієнтному спуску до передмови складніших версій.

Хоча я хочу додати одне акуратне, що в даний час існує невелика дослідницька ніша, що передбачає припинення градієнтного спуску на ранніх стадіях, щоб запобігти пересадці моделі.


2
Для надмірної заяви ви можете надати посилання? додавання терміну регуляризації краще, ніж обмеження кількості ітерацій?
Хайтао Ду

Ви можете подивитися на Розділ 7 Глибокого навчання Goodfellow та ін., В якому згадується про раннє припинення, щоб запобігти перенапруження в нейронних мережах.
Бетмен

2
Регуляризація шляхом раннього припинення аж ніяк не є новою методикою; це добре відома техніка в, скажімо, ітерації
Landweber

3

(XTX)1XTy

Спосіб, про який ви згадали, тобто використовуючи кореляцію, застосовується лише для одного прогноктора та однієї кількості перехоплюючих. Просто помічайте форму. Отже, коли кількість предикторів більше однієї в кількості, то який вихід? Тоді треба вдатися до інших методів, тобто нормального рівняння або оптимізації.

O(N3)NXX

Моя вам пропозиція - не намагайтеся вирішити проблему. Спробуйте зрозуміти теорію. Професор Нг - один з найкращих професорів у цьому світі, який люб’язно навчає машинного навчання в MOOC. Отже, коли він навчає таким чином, то він повинен мати деякі приховані наміри. Сподіваюся, ви не заперечуєте за мої слова.

Все найкраще.


5
"Інвертування матриці" настійно НЕ рекомендується. QR є більш чисельно стійким для вирішення лінійної системи.
Хайтао Ду

1
Я згоден з обчислювальним аргументом. Однак переоцінка або недостатність не мають нічого спільного з використанням GD проти рівняння Normal, а скоріше зі складністю (регресії) моделі. Обидва способи (GD, якщо він працює належним чином) знаходять одне і те ж рішення з найменшими квадратами (якщо воно існує), і тому надмірно або недостатньо підходять до даних на однакову кількість.
Рубен ван Берген

2

По-перше, так, справжня причина - це та, яку дає Тім Атрейдс; це педагогічна вправа.

Однак можливо, хоч і малоймовірно, що хотілося б зробити лінійну регресію, скажімо, на кілька трильйонів точок даних, що передаються з мережевого сокета. У цьому випадку наївна оцінка аналітичного рішення була б нездійсненною, тоді як деякі варіанти стохастичного / адаптивного градієнтного спуску сходилися б до правильного рішення з мінімальними витратами на пам'ять.

(можна було б для лінійної регресії переформулювати аналітичний розчин як систему рецидивів, але це не є загальною методикою.)


2

Ще однією причиною є те, що спуск градієнта є більш загальним методом. Для багатьох проблем машинного навчання функція витрат не є опуклою (наприклад, матрична факторизація, нейронні мережі), тому ви не можете використовувати рішення закритої форми. У цих випадках спуск градієнта використовується для пошуку деяких хороших локальних оптимальних точок. Або якщо ви хочете реалізувати онлайн-версію, ніж знову, вам доведеться використовувати алгоритм на основі градієнта.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.