Різниця у використанні нормалізованого градієнта та градієнта


15

У загальному налаштуванні алгоритму спуску градієнта у нас є де - поточна точка, - розмір кроку, а - градієнт оцінюється на . хн+1=хн-ηгrагiентхнхнηгrагiентхнхн

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


1
Чи можу я запитати? як я можу обчислити нормований градієнт, якщо я вже отримав вектор градієнта? Якщо вектор градієнта чисельно великий, мені потрібно нормалізувати градієнт. Чи можете ви навести інтуїтивно зрозумілі приклади щодо нормалізації градієнта? Дякую!

Відповіді:


12

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

З усього вищесказаного ви могли зрозуміти, що нормалізація градієнта - це додаткова контрольна сила, яку ви отримуєте (корисна вона чи ні, це щось, що відповідає вашій конкретній програмі). Що я маю на увазі під вищевикладеним, це:
1] Якщо ви хочете переконатися, що ваш алгоритм рухається у фіксованому розмірі кроків у кожній ітерації, то, можливо, ви хочете використовувати нормалізоване спуск градієнта з фіксованим . 2] Якщо ви хочете переконатися, що ваш алгоритм рухається в розмірах кроків, які точно продиктовані вами, то знову ж таки, ви можете скористатися нормалізованим градієнтом, що відповідає вашій конкретній функції для розміру кроку, закодованого в .η
η
3] Якщо ви хочете, щоб величина градієнта диктувала розмір кроку, тоді ви будете використовувати ненормалізований спуск градієнта. Є кілька інших варіантів, як ви можете дозволити величині градієнта визначати розмір кроку, але ви надягаєте на нього шапочку тощо.

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

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


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


2

f(х)=хТху(т)=х0/||х0||е-т. Отже, норма градієнта знижується експоненціально швидко, коли ви наближаєтесь до критичної точки. У таких випадках часто краще кілька разів відскакувати вперед і назад, ніж наближатися до нього дуже повільно. В цілому, як відомо, методи першого порядку мають дуже повільну конвергенцію навколо критичних точок, тому вам не слід їх використовувати, якщо ви дійсно дбаєте про точність. Якщо ви не можете обчислити гессіана своєї мети аналітично, ви все одно можете наблизити її (BFGS).

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