Чому потрібен спуск градієнта?


10

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

чому натомість виконується градієнтне спуск?


2
Як можна загально встановити похідні на 0 для функції? За допомогою алгоритмів, таких як спуск градієнта.
Кліф АВ

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



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

Відповіді:


8

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

Як приклад, якщо ми розглянемо лінійну регресію, явне рішення вимагає інвертування матриці, яка має складність . Це стає забороненим у контексті великих даних.O(N3)

Також багато проблем у машинному навчанні є опуклими, тому використання градієнтів гарантує, що ми дістанемося до крайності.

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


2
Інвертування матриці тут є дещо слабким, оскільки QR-розкладання з частковим поворотом є більш точним і швидшим, але так, QR все одно O(n3). Я згоден, що для досить великих систем (наприклад,> 10000 змінних), які можуть почати ставати проблемою. Сучасний високотехнологічний підхід полягає в тому, щоб наблизити рішення за допомогою ітеративних методів підпростору Крилова (наприклад, спряжений градієнт, GMRES).
Меттью Ганн

1
Точка, яку деякі можуть здати заплутаною, це те, як вирішення лінійної системи є проблемою оптимізації? Відповідь, звичайно, полягає в тому, що розв’язання лінійної системи можна переосмислити як мінімізацію квадратичної мети. Деякі ітераційні методи вирішення лінійних систем простіше зрозуміти з точки зору того, що вони мінімізують квадратичну мету ітераційним способом. (Напр., Напрямок кроку спряженого градієнта методом підпростори Крилова заснований на градієнті ... це слабко пов'язане зі схилом градієнта.)
Меттью Ганн

12

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

Це трохи невідповідна відповідь. Ваше питання справді має бути таким: "навіщо нам потрібні ітераційні методи?" Напр. чому б не перейти до вирішення, якщо проблема опукла, умова Слейтера дотримується, а умови першого порядку необхідні та достатні умови для оптимального? Тобто, коли рішення можна охарактеризувати як рішення системи рівнянь, чому б не просто вирішити систему? Відповідь така:

  • Для проблеми квадратичної оптимізації умовою першого порядку є система лінійних рівнянь, і ми можемо перейти майже безпосередньо до рішення, оскільки лінійні системи можна ефективно вирішити! Ми ж використовуємо умову першого порядку і вирішити систему (наприклад, з QR - розкладанням, застереженням нижче).
  • Однак, загалом, умови першого порядку визначають нелінійну систему рівнянь, а нелінійну систему може бути досить складно вирішити! Насправді, те, як ви часто вирішуєте систему нелінійних рівнянь чисельно, це переформулювати її як оптимізаційну задачу ...
  • Для надзвичайно великих лінійних систем рішення системи безпосередньо за допомогою розкладання QR та часткового повороту стає нездійсненним. Що роблять люди ?! Ітеративні методи! (наприклад, ітеративні методи підпростору Крилова ...)

7

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

У реальному світі багато функцій витрат не є похідними скрізь (Далі, функція витрат може бути дискретною і взагалі не мати похідних). Крім того, навіть якщо ви можете обчислити похідну, ви не можете просто вирішити рівняння аналітично (наприклад, подумайте, як розв'язатиx7+x352+ex+log(x+x2)+1/x=0аналітично? Я можу вам сказати, що числова відповідь єx=1.4786, але не знаю аналітичного рішення). Треба використовувати деякі чисельні методи (перевірити, чому тут на полиноміальних випадках теорема Абеля Руффіна ).

Ітеративні методи чудово використовувати, і дуже інтуїтивно зрозуміти. Припустимо, що ви хочете оптимізувати одну функцію, замість того, щоб розв’язати рівняння і отримати відповідь, ви спробуєте покращити свою відповідь за кількістю ітерацій / кроків після достатньої ітерації, ви отримаєте відповідь, близьку до "справжньої відповіді". Скажіть, якщо ви використовуєте обчислення для мінімізаціїf(x)=x2, ви безпосередньо отримуєте x=0, але, використовуючи числові методи, ви можете отримати x=1.1234×1020.

Тепер важливо зрозуміти, як працюють ці ітераційні методи. Ключова концепція - це знати, як оновити вхідні параметри, щоб отримати краще рішення. Припустимо, ви хочете мінімізуватиf(x1,x2)=x12+x22+|x1+x2| (зауважте, ця функція вартості не є диференційованою скрізь, але диференційована у "більшості місць", це досить добре для нас, оскільки ми знаємо, як оновити в "більшості місць".), на даний момент ви перебуваєте в (1,1), а вартість є 4.0, тепер ви хочете оновити (x1,x2)зменшити об'єктивну функцію. Як би ти це зробив? Ви можете сказати, що хочу зменшити і те, і іншеx1 x2, але чому? Насправді ви неявно використовуєте концепцію градієнта "зміна невеликої кількостіx, що буде далі y" . В(1,1), похідна є (3,3), так стверджують негативні градієнти разів рівень навчання α=0.001, є (0.003,0.003), тому ми оновили наше рішення від 1,1 до (0.997,0.997) які мають кращу вартість.


Більше інформації можна знайти у цій пов’язаній публікації
Haitao Du

4

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

Навіть для лінійних рівнянь розмір матриць, заданих набором лінійних рівнянь i величезний, і може бути важким для обмеження потреби в пам'яті.

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