Як функція прямолінійної активації вирішує проблему градієнта, що зникає, в нейронних мережах?


40

Я виявив, що випрямлена лінійна одиниця (ReLU) отримала високу оцінку в декількох місцях як рішення проблеми, що втрачає градієнт, для нейронних мереж. Тобто, людина використовує max (0, x) як функцію активації. Коли активація позитивна, очевидно, що це краще, ніж, скажімо, сигмоїдна активаційна функція, оскільки її деривація завжди дорівнює 1 замість довільно малого значення для великого х. З іншого боку, деривація - це рівно 0, коли х менше 0. У гіршому випадку, коли одиниця ніколи не активується, ваги для цієї одиниці також більше ніколи не змінюватимуться, а одиниця буде назавжди марною - що здається набагато гірше навіть зникаючих малих градієнтів. Як алгоритми навчання вирішують цю проблему, коли вони використовують ReLU?


2
Те, що ви описуєте як найгірший випадок, називається вмираючою ReLU
Мартін Тома

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

(Я не впевнений, чи це "назавжди"? Невже він не стане нульовим після більшої підготовки? Від залежностей від інших вузлів та / або поточної міні-партії даних (для стохастичного спуску градієнта)
GeoMatt22

Відповіді:


33

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

Функція активації випрямляча дозволяє мережі легко отримувати розріджені подання. Наприклад, після рівномірної ініціалізації ваг приблизно 50% прихованих одиниць безперервних вихідних значень є справжніми нулями, і ця частка може легко збільшуватися при регуляризації, що викликає рідкість.

Таким чином, функція активації випрямляча вводить ефект мережі в мережі. Ось деякі переваги рідкості з тієї ж папери;

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

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

  • Лінійна відокремлюваність . Розрізнені уявлення також більш схильні бути лінійно відокремленими або легше розділятися з менш нелінійними механізмами, просто тому, що інформація представлена ​​у просторовому просторі. Крім того, це може відображати вихідний формат даних. Наприклад, у текстових програмах вихідні вихідні дані вже дуже рідкі.

  • Поширений, але рідкісний . Щільне розподілене уявлення - це найбагатші уявлення, вони потенційно експоненціально ефективніші, ніж суто місцеві (Bengio, 2009). Ефективність розріджених уявлень все ще експоненціально більша, при цьому потужність показника становить кількість ненульових ознак. Вони можуть представляти гарний компроміс щодо вищезазначених критеріїв.

Він також відповідає на запитання, яке ви задали:

softplus(x)=log(1+ex)(Dugas et al., 2001), гладка версія випрямної нелінійності. Ми втрачаємо точну розрідженість, але можемо сподіватися отримати легше навчання. Однак експериментальні результати, як правило, суперечать цій гіпотезі, що дозволяє припустити, що важкі нулі насправді можуть допомогти навчанню під контролем. Ми гіпотезуємо, що жорсткі нелінійності не завдають шкоди настільки довго, поки градієнт може поширюватися по деяких шляхах, тобто, що деякі приховані одиниці в кожному шарі є ненульовими. За рахунок кредиту і вини, покладених на ці блоки ON, а не розподілені рівномірно, ми припускаємо, що оптимізація простіша.

Ви можете прочитати папір для більш детальної інформації.


18

Ось чому, мабуть, краща ідея використовувати PReLU, ELU або інші протікаючі активізовані ReLU активації, які не просто відмирають до 0, але які падають на щось на кшталт 0,1 * x, коли х стає негативним, щоб продовжувати вчитися. Мені давно здавалося, що ReLU - це історія, як сигмоїда, хоча чомусь люди все ще публікують документи з цими. Чому? Не знаю.

Дмитро Мішкін та інші хлопці насправді випробували мережу з великою кількістю різних типів активації, ви повинні вивчити їх висновки щодо виконання різних функцій активації та інших речей. Деякі функції, як-от XOR, краще вивчити за допомогою звичайного ReLU. Не думайте про будь-які нейронні речі в догматичному плані, тому що нейронні мережі дуже багато працюють. Ніхто в світі насправді не знає і не розуміє їх досить добре, щоб сказати божественну правду. Ніхто. Спробуйте щось, зробіть власні відкриття. Майте на увазі, що використання ReLU саме по собі є нещодавньою розвитком, і протягом десятиліть усі різні докторанти в цій галузі використовували надскладні функції активації, про які ми тепер можемо лише сміятися. Занадто часто «занадто багато знаючи» може принести вам погані результати. Важливо розуміти, що нейронні мережі не є точною наукою. Ніщо в математиці не говорить про те, що нейронні мережі насправді працюватимуть так само добре, як і вони. Це евристично. І тому це дуже ковче.

Навіть активація абсолютного значення FYI дає хороші результати щодо деяких проблем, наприклад, таких як XOR. Різні функції активації краще підходять для різних цілей. Я спробував Cifar-10 з abs (), і здавалося, він працює гірше. Хоча я не можу сказати, що "це гірша функція активації для візуального розпізнавання", тому що я не впевнений, наприклад, якщо моя попередня ініціалізація була оптимальною для цього і т. Д. Сам факт, що він навчався порівняно добре мене вразило.

Крім того, в реальному житті "похідні", які ви переходите на задній план, не обов'язково повинні відповідати фактичним математичним похідним.

Я навіть хотів би сказати, що ми повинні заборонити називати їх "похідними" і почати називати їх чимось іншим, наприклад, error activation functionsщоб не закривати свою думку перед можливостями повороту з ними. Наприклад, ви можете використовувати активацію ReLU, але надати 0,1 або щось подібне замість 0 як похідну для x <0. У певному сенсі у вас є звичайна ReLU, але з нейронами не в змозі "померти від пристосованості". Я називаю це NecroRelu, тому що це ReLU, який не може померти. І в деяких випадках (напевно, не в більшості) це працює краще, ніж звичайний LeakyReLU, який насправді має 0,1 похідну при x <0 і краще, ніж звичайний ReLU. Я не думаю, що занадто багато інших досліджували таку функцію, хоча це, або щось подібне, насправді може бути загалом класною функцією активації, яку ніхто не вважав лише тому, що вони занадто зосереджені на математиці.

Що стосується того, що зазвичай використовується, для функції активації tanH (x) звичайна річ передає 1 - x² замість 1 - tanH (x) ² як похідну для швидшого обчислення речей.

Також майте на увазі, що ReLU - це не все, що "очевидно краще", ніж, наприклад, TanH. ТанХ, мабуть, може бути кращим у деяких випадках. Просто, так здається, не у візуальному розпізнаванні. Хоча, наприклад, ELU має трохи сигмовидної м'якості, і це одна з найвідоміших функцій активації для візуального розпізнавання на даний момент. Я насправді не намагався, але, думаю, можна встановити кілька груп з різними функціями активації на одному рівні шару. Тому що різну логіку краще описати з різними функціями активації. І іноді вам, мабуть, потрібно кілька типів оцінювання.

Зауважте, що важливо мати інтіалізацію, що відповідає типу вашої функції активації. Наприклад, витікаючі релізи потребують інших init, що є простими ReLU.

EDIT: Насправді, стандартний ReLU виглядає менш схильним до надмірного оснащення сучасних архітектур. Принаймні, в розпізнаванні зображень. Здається, що якщо ви збираєтеся в мережі з дуже високою точністю з величезним навантаженням параметрів, можливо, буде краще дотримуватися звичайних ReLU та непрохідних варіантів. Але, звичайно, протестуйте все це власноруч. Можливо, деякі протікаючі речі будуть працювати краще, якщо буде надано більше регуляризації.


Мене цікавить ваш NecroReLU, але не можу отримати з того, що ви написали, чим він відрізняється від LeakyReLU. Не могли б ви уточнити?
Том Хейл,

Інша тим, що активація - це ReLU, але похідна - LReLU
Mhor Mé

@ ÍhorMé, як ви вже згадували про повідомлення initialization that corresponds to a type of activation function one is usingу NOTEсвоєму дописі, чи можете ви, будь ласка, надати свої пропозиції щодо цього в тих самих рядках, я не повністю переконаний, що використання активації ReLu через сигмоподібну / танH - це рішення для зникаючої / вибухової проблеми градієнта .
ану

16

Ось евристичне пояснення:

  • Кожне оновлення градієнта в задній програмі складається з ряду множених факторів.
  • Чим далі ви доходите до запуску мережі, тим більше цих факторів множимо разом, щоб отримати оновлення градієнта.
  • Багато з цих факторів є похідними активаційної функції нейронів, решта - ваги, зміщення тощо.
  • З цих факторів ті, що інтуїтивно мають значення, - це ваги, ухили тощо. Похідні функції активації є більшою мірою своєрідним параметром настройки, призначеним для отримання градієнтного спуску в правильному напрямку з потрібним видом швидкості.
  • Якщо ви помножите купу термінів, менших за 1, вони будуть прагнути до нуля, ніж більше термінів. Отже, зникнення градієнта, як ви будете далі від вихідного шару, якщо у вас є функції активації, які мають нахил <1.
  • Якщо ви помножите купу термінів, більших за 1, вони будуть прагнути до нескінченності тим більше, ніж у вас, отже, вибухне градієнт, коли ви дістанетесь далі від вихідного шару, якщо у вас є функції активації, які мають нахил> 1.
  • Як щодо того, якби ми могли якось магічно отримати такі умови, що сприяють похідній функцій активації, щоб бути 1. Це інтуїтивно означає, що всі внески в оновлення градієнта надходять із вхідних даних до проблеми та моделі - ваг, входи, упередження - а не артефакт обраної функції активації.
  • RELU має градієнт 1 при виході> 0 і нуль інакше.
  • Тому множення деривативів RELU разом у рівняннях backprop має приємну властивість бути або 1, або нуль - оновлення або нічого, або повністю вносить внесок з інших ваг та ухилів.

Ви можете подумати, що було б краще мати лінійну функцію, а не згладжувати, коли х <0. Ідея тут полягає в тому, що RELU генерує розріджені мережі з відносно невеликою кількістю корисних посилань, що має більшу біологічну правдоподібність, тому втрата купа ваг насправді корисна. Також моделювання цікавих функцій за допомогою нейронних мереж можливе лише при певній нелінійності функції активації. Лінійна функція активації призводить до лінійного виходу, що зовсім не дуже цікаво.


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

1
Важлива ініціалізація ваги також важлива; але так є вибір функції активації. Як тривіальний приклад, якщо всі ваги за замовчуванням дорівнюють нулю, і ви використовуєте RELU, то всі виходи з ваших нейронів будуть дорівнювати нулю і залишатись нульовими ... Ні одна RELU, ні методи ініціалізації самі по собі повністю не вирішують зникнення / вибух градієнта, але вони обидва допомагають. Не впевнений, що ви маєте на увазі перегляд пункту 6, що незрозуміло?
Том Уокер

1

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

Wibiif

hii

si=Wi(hi1)+bi

hi=f(si)

δi

δi=Wi+1(δi+1f(si))

ff(si)=(1hi2)hi

f=Relu=max(0,x)ff=numpy.where(hi>0,1,0)

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

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