Rectified Linear Unit (ReLU)
Оновлено: 31.07.2023
Виправлений блок лінійної активації, або ReLU, є однією з небагатьох віх в революції глибокого навчання. Він простий, але набагато кращий за попередні функції активації, такі як сигмоїд або тангенс.
- Формула ReLU має вигляд : f(x) = max(0,x)
Як функція ReLU, так і її похідна є монотонними. Якщо функція отримує від'ємне значення на вході, вона повертає 0; однак, якщо функція отримує будь-яке додатне значення x, вона повертає це значення. В результаті, вихід має діапазон від 0 до нескінченності.
ReLU є найбільш часто використовуваною функцією активації в нейронних мережах, особливо CNN, і використовується як функція активації за замовчуванням.
Перевага функції активації ReLU
Оскільки тут немає складної арифметики, функція глибокого навчання ReLU проста і не потребує важкої обробки. Як результат, модель може навчатися або працювати за менший час. Розрідженість - ще одна важлива якість, яку ми вважаємо перевагою використання функції активації ReLU.
Розріджена матриця - це матриця, в якій більшість елементів дорівнює нулю, і ми хочемо отримати таку ж властивість у наших нейронних мережах ReLU, де деякі ваги дорівнюють нулю. Розрідженість створює компактні моделі з більшою прогностичною здатністю і меншим рівнем перенавчання та шуму. У розрідженій мережі нейрони з більшою ймовірністю обробляють важливі компоненти проблеми.
Наприклад, у моделі, яка розпізнає людські обличчя на фотографіях, може бути нейрон, здатний ідентифікувати очі, який, очевидно, не повинен активуватися, якщо зображення не є обличчям, а являє собою трійку або міст.
Оскільки ReLU виводить нуль на всі від'ємні входи, можливо, що якийсь конкретний блок взагалі не спрацює, що призведе до розрідженої мережі.
Давайте подивимося, як функція активації ReLu порівнюється з іншими відомими функціями активації, такими як сигмоїдна та тангенс.
ReLU проти Sigmond і Tanh
Функції активації, які часто використовувалися до ReLU, такі як сигмоїдальна і тангенс, були насиченими. Це означає, що для tanh і сигмоїда високі значення переходять до 1.0, а низькі - до -1 або 0. Крім того, функції чутливі лише до змін вхідних даних навколо середньої точки, наприклад, 0.5 для сигмоїда і 0.0 для tanh.
Це призвело до проблеми, відомої як проблема зникаючого градієнта.
Процедура градієнтного спуску використовується для навчання нейронних мереж. Крок зворотного розповсюдження в градієнтному спуску - це просто ланцюгове правило для отримання зміни ваг, щоб зменшити втрати після кожної епохи. Варто зазначити, що похідні відіграють значну роль в оновленні ваг. Коли ми використовуємо функції активації, такі як сигмоїд або тангенс, похідні яких мають пристойні значення лише від -2 до 2, а в інших місцях є пласкими, градієнт продовжує зменшуватися зі збільшенням кількості шарів.
В результаті значення градієнта для ранніх шарів зменшується, і ці шари не можуть правильно навчатися. Іншими словами, через глибину мережі та активацію, що зміщує значення до нуля, їхні градієнти мають тенденцію до випаровування.
- ReLU уникає цієї проблеми, оскільки його нахил не плато зі збільшенням вхідних даних. В результаті моделі, які використовують ReLU, сходяться швидше.
Однак функція ReLU має деякі недоліки, наприклад, вибуховий градієнт.
Це полярна протилежність зникаючому градієнту, він виникає, коли під час навчання накопичуються значні помилки, що призводить до масивних змін ваг моделі. В результаті модель стає нестабільною і не здатна навчатися на ваших навчальних даних.
Існує також недолік нульового значення для всіх від'ємних значень, який відомий як "вмираючий ReLU". Якщо нейрон ReLU застряг на від'ємній стороні і завжди видає 0, його називають "мертвим". Оскільки нахил ReLU у від'ємному діапазоні також дорівнює 0, малоймовірно, що нейрон відновиться після того, як стане від'ємним. Такі нейрони, по суті, нічого не варті, оскільки вони не відіграють жодної ролі у розпізнаванні вхідних даних.
З часом ви можете виявити, що значна частина вашої мережі простоює. Коли швидкість навчання надмірно висока або існує значне негативне зміщення, ймовірно, виникне проблема "вмирання".
Цю складність часто полегшує нижча швидкість навчання. Ми також можемо використовувати Leaky ReLU, яка є кращим варіантом функції активації ReLU. Ми визначаємо функцію активації ReLU як екстремально випрямлену лінійну одиницю x замість того, щоб оголошувати її рівною 0 для від'ємних значень inputs(x). Формула цієї функції активації наступна:
- Leaky ReLU = f(x) = max(0.01*x, x)