Чому прискорюється спуск градієнта, якщо функція плавна?


10

Зараз я читаю книгу під назвою "Ручне машинне навчання за допомогою Scikit-Learn та TensorFlow", і в главі 11 вона містить такий опис щодо пояснення ELU (Exponential ReLU).

По-третє, функція скрізь гладка, в тому числі навколо z = 0, що сприяє прискоренню градієнтного спуску, оскільки воно не відскакує стільки, скільки вліво і вправо від z = 0.

введіть тут опис зображення

В zозначає вісь й на графіку вище. Я розумію, що похідна є гладкою, оскільки z < 0лінія має криву, і в цій царині похідна більше не дорівнює 0.

Однак чому так трапляється, що якщо функція "скрізь гладка, включаючи навколо z = 0", вона прискорює спуск градієнта?


До речі, я в правильному SE? Наука про дані, штучний інтелект та перехресне підтвердження (а також MathSE) ... мені здається, що багато тем дуже пов'язані між собою ...
Blaszard

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

Хороше питання. Згладженість дозволяє робити сміливі кроки в правильному напрямку, а не орієнтовно робити кроки дитини, оскільки градієнт може сильно змінитися на наступному кроці. Для аналізу конвергенції див., Наприклад, прискорене схилення градієнта Нестерова для плавної та сильно опуклої оптимізації
Емре

@NeilSlater AI має дуже незрозумілу сферу застосування. Вони закривають такі питання. Отже, DS та CV були б найкращими варіантами :)
Dawny33

Відповіді:


1

Думаю, це пов’язано з похідною, оскільки ReLU має перервну похідну на 0. Отже, якщо ви використовуєте визначення:

ff(x+ϵ)f(xϵ)2ϵ

а дуже близько до 0, ви отримаєте багато таких «стрибків».x


0

Попередній: тут є актуальними три атрибути функції: безперервна, монотонна та диференційована. RELU - це суцільна і монотонна гайка, не диференційована при z = 0. Експоненціальна релю або ELU - це всі три атрибути.

Диференціал або градієнт дає вам напрямок. Коли похідна функції не визначена в точці, то напрямок градієнта невизначений у цій точці.

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

Коли похідна функції втрати не визначена в якийсь момент, градієнт невизначений. Це означає, що спуск градієнта потенційно може рухатися в неправильному напрямку. Величина затримки, викликана цією невизначеністю, залежить від швидкості навчання та інших гіпер-параметрів. Незалежно від гіперпараметрів, статистично невизначена похідна в RELU при z = 0, сприяє уповільненню конвергенції градієнтного спуску.


Дуже ймовірно, що параметр стає рівно z = 0 після ініціалізації.
Пітер

0

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

Приклад налаштування

Розглянемо MLP с n приховані шари розміром один.

z1=W1x+b1

a1=f(z1)

...

zn=Wnan1+bn

y=f(zn)

де - функція активації.f

Тан і сигмоїд - зникаючий градієнт

Нехай є Tanh або активації функції сигмовидної. Похідне цих функцій обмежене від -1 до 1, або формально для будь-якого .ff(x)(1,1)x

Це спричиняє дуже важливу проблему в глибокому навчанні, відому як "проблема градієнта, що зникає". Розглянемо похідну wrt . За правилом ланцюга маємо yW1

dfdW1=dfdWndWndWn1...dW2dW1

і для будь-якого зауважте, що 0<i<n

dXidXi1=f(Wi1ai2+bi1)×ai2(1,1)

(Перший доданок знаходиться між оскільки обмежений, як обговорювалося раніше, а також знаходиться між як скорочення вхідного значення.)(1,1)fai2(1,1)

Отже - це в основному добуток безлічі термінів, кожен з яких знаходиться між (0, 1). Чим більший (глибше мережа), тим більше цього терміна нам потрібно помножити, і в результаті стає експоненціально меншим. Через цю експоненціальну залежність градієнт швидко стає таким малим, що ми можемо ефективно вважати його нульовим. Наслідком нульових градієнтів є те, що навчання взагалі не може відбутися, оскільки наше правило оновлення для спуску градієнта засноване на цьому градієнті.dfdW1ndfdW1

RELU і Мертвий Нейрон

Relu придуманий для вирішення проблеми, що втрачає градієнт, тому що його похідна завжди дорівнює 1, коли тому коли RELU, ми маємо: ai>0f

dXidXi1=ai2
dfdW1=a1a2a3...an1

Це все добре і добре, коли але все розпадається щоразу, коли , на цей раз градієнт не тільки близький до нуля, це чистий нуль. Як тільки нейрон дістається туди, взагалі немає шансу повернутися. Ось чому це відоме як проблема "Мертвого Нейрона"x>0x<0

Leaky RELU та ELU

Leaky RELU та ELU - це природний розвиток після RELU. Вони схожі на RELU як таку похідну, рівну 1, коли але уникали "мертвого нейрона", уникаючи нульових похідних, коли .x>0x<1

Я цитую оригінальний папір для різниці між ними.

Хоча LReLU і PReLU мають і негативні значення, вони також не забезпечують надійний стан дезактивації. ELU насичують негативне значення з меншими входами і, таким чином, зменшують зміну та інформацію вперед.

Інтуїтивне пояснення виглядає наступним чином. В ELU, коли x стає досить малим, градієнт стає дійсно малим і насиченим (так само відбувається і для Tanh та Sigmoid). Невеликий градієнт означає, що алгоритм навчання може зосередитись на налаштуванні інших ваг, не турбуючись про інтерактивність із насиченими нейронами.

Розглянемо многочлен 2 ступеня, який можна представити як гладку поверхню в 3-денному просторі. Щоб знайти локальний мінімум, алгоритм спуску градієнта повинен буде враховувати крутизну в напрямку x і y. Якщо градієнт одночасно негативний у напрямку x та y, то незрозуміло, який спосіб краще. Тож розумно вибрати шлях десь посередині. Але що робити, якщо ми вже знаємо, що все плоско (нульові градієнти) у напрямку x, тоді стає безмозговим рухатися за напрямком y. Або, інакше кажучи, пошукового простору стає значно менше.

спеціальна примітка

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


0

У мене є інтуїтивне уявлення про те, чому гладкі функції швидше оптимізувати, але немає математичного доказу чи нічого.

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

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

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

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