Хочеться знати, чи є градієнтне походження основним алгоритмом, який використовується в таких оптимізаторах, як Adam, Adagrad, RMSProp та кілька інших оптимізаторів.
Хочеться знати, чи є градієнтне походження основним алгоритмом, який використовується в таких оптимізаторах, як Adam, Adagrad, RMSProp та кілька інших оптимізаторів.
Відповіді:
Ні. Спуск градієнта використовується в алгоритмах оптимізації, які використовують градієнт як основу його крокового руху. Adam
, Adagrad
і RMSProp
всі використовують деяку форму градієнтного спуску, однак вони не складають кожного оптимізатора. Еволюційні алгоритми, такі як оптимізація рою частинок та генетичні алгоритми , натхненні природними явищами, не використовують градієнти. Інші алгоритми, такі як Байєсова оптимізація , черпають натхнення зі статистичних даних.
Перевірте цю візуалізацію Bayesian Optimization в дії:
Існує також кілька алгоритмів, які поєднують поняття з еволюційної та градієнтної оптимізації.
Алгоритми оптимізації на основі похідних інструментів можуть бути особливо корисними для нерегулярних функцій витрат, що не є опуклими, недиференційованих функцій витрат або функцій витрат, які мають іншу ліву або праву похідну .
Щоб зрозуміти, чому можна вибрати алгоритм оптимізації на основі похідних. Погляньте на функцію еталону Rastrigin . Оптимізація на основі градієнта не дуже підходить для оптимізації функцій із такою кількістю локальних мінімумів.
Відповідно до заголовку:
Ні. Тільки конкретні типи оптимізаторів засновані на градієнтному походженні. Простий контрприклад - це коли оптимізація проходить через дискретний простір, де градієнт не визначений.
За даними органу:
Так. Адам, Адаград, RMSProp та інші подібні оптимізатори (Нестеров, Надам та ін.) Намагаються запропонувати адаптивний розмір кроку (швидкість навчання) для спуску градієнта, щоб поліпшити швидкість конвергенції без шкоди для продуктивності (тобто призводить до гіршого локального мінімуму / максимум).
Варто зазначити, що існують також методи Ньютона та аналогічно квазі-ньютонівські методи, які працюють з похідною функцією втрат другого порядку (градієнтне спуск працює з похідною першого порядку). Ці методи втратили скорочення масштабності швидкості до градієнтного спуску через велику кількість параметрів моделі в практичних проблемах.
Деякі додаткові замітки
Форма функції втрат залежить як від параметрів моделі, так і від даних, тому вибір найкращого методу завжди залежить від завдання та потребує спроб та помилок.
Стохастична частина градієнтного спуску досягається за рахунок використання партії даних , а не повних даних. Ця методика паралельна всім згаданим методам, тобто всі вони можуть бути стохастичними (використовуючи пакет даних) або детермінованими (використовуючи цілі дані).
Прогнозоване спуск градієнта використовується тоді, коли деякі регіони параметрів нездатні (недійсні, не дозволені), тому ми повертаємо (проект) параметр до можливої області, коли він переходить у нездійсненний. Наприклад, припустимо, що ми дозволяємо лише , коли параметр переходить до , ми повертаємо його до , або , або до деяких інших можливих точок, залежно від траєкторії та конкретної метод. Ця методика також паралельна згаданим методам, ми могли б спроектувати стохастичний Адам .
Відповідь на запитання може бути "ні". Причина полягає лише в численних алгоритмах оптимізації, які доступні, але вибір одного дуже залежить від контексту та часу на оптимізацію. Наприклад, генетичний алгоритм - це добре відомий підхід до оптимізації, який не має градієнтного спускання всередині нього. Існують також інші підходи, такі як зворотний трек в деяких контекстах. Всі вони можуть бути використані, які не використовують градієнтний спуск поетапно.
З іншого боку, для таких завдань, як регресія, ви можете знайти близьку форму для вирішення проблеми, щоб знайти екстремуми, але справа в тому, що залежно від місця функцій та кількості входів ви можете вибрати рівняння форми або градієнта спуск, щоб зменшити кількість розрахунків.
Хоча існує так багато алгоритмів оптимізації, в нейронних мережах підходи, засновані на градієнтному спуску, використовуються більше через кілька причин. Перш за все, вони дуже швидкі. При глибокому навчанні ви повинні надати стільки даних, що вони не можуть бути завантажені в пам'ять одночасно. Отже, вам доведеться застосовувати методи пакетного градієнта для оптимізації. Це трохи статистичні дані, але ви можете врахувати, що кожен зразок, який ви приводите до своєї мережі, може мати приблизно подібний розподіл до реальних даних і може бути досить репрезентативним, щоб знайти градієнт, який може бути близьким до реального градієнта функції витрат, який повинен будуватись, використовуючи всі дані в руці.
По-друге, Складність пошуку екстремумів за допомогою матриць та їх обернення становить для простої задачі регресії, параметри якої можна знайти за допомогою . Виявляється, прості методи на основі градієнта можуть мати кращі показники. Слід також зазначити, що в першому випадку ви повинні одночасно зберігати дані в пам'яті, що неможливо для випадків, коли ви маєте справу з великими завданнями даних.
По-третє, є проблеми з оптимізацією, які не обов'язково мають рішення у формі. Логістична регресія - одна з них.
Що ж, ви вибрали оптимізатори, які використовуються в нейронних мережах, ці оптимізатори використовують алгоритми на основі градієнта. Більшість випадків алгоритми на основі градієнта використовуються в нейронних мережах. Чому так? Що ж, ви б вважали за краще намагатися знайти мінімум, знаючи нахил кривої або не знаючи цього? Якщо ви не зможете обчислити градієнт, ви повернетесь до оптимізації, що не включає похідні . Незважаючи на це, бувають випадки, коли, хоча ви маєте інформацію про градієнт, краще використовувати метод без градієнтів. Зазвичай це стосується функцій, у яких багато локальних мінімумів. Тут мають перевагу алгоритми на основі населення, такі як еволюційні стратегії та генетичні алгоритми. А ще є галузь комбінаторної оптимізації, де використовується цілий набір інструментів.