Аналогічне запитання було задано і в CV: Вичерпний перелік функцій активації в нейронних мережах із плюсами / мінусами .
Я копіюю нижче одну з відповідей:
Один такий список, хоча і не дуже вичерпний:
http://cs231n.github.io/neural-networks-1/
Поширені функції активації
Кожна функція активації (або нелінійність ) приймає єдине число і виконує на ньому певну фіксовану математичну операцію. Є кілька функцій активації, з якими ви можете зіткнутися на практиці:
Зліва: Сигмоїдна нелінійність стискає реальні числа для інтервалу між [0,1] Праворуч: Тен нелінійність стискає реальні числа до [-1,1].
σ( х ) = 1 / ( 1 + e- х)і зображено на зображенні вгорі зліва. Як уже згадувалося в попередньому розділі, воно приймає дійсне значення і "розбиває" його в діапазоні від 0 до 1. Зокрема, великі негативні числа стають 0, а великі додатні числа - 1. Сигмоїдна функція часто бачила використання оскільки він має приємну інтерпретацію як швидкість стрільби нейрона: від взагалі не випалу (0) до повністю насиченого випалу з передбачуваною максимальною частотою (1). На практиці сигмоїдна нелінійність останнім часом вийшла з ладу і її рідко застосовують. У нього є два основних недоліки:
- Сигмоїди насичують і вбивають градієнти . Дуже небажаною властивістю сигмоподібного нейрона є те, що коли активація нейрона насичується в будь-якому хвості 0 або 1, градієнт у цих областях майже дорівнює нулю. Нагадаємо, що під час зворотного розповсюдження цей (локальний) градієнт буде помножений на градієнт виходу цього ворота для всієї мети. Тому, якщо локальний градієнт дуже малий, він ефективно "вб'є" градієнт, і майже жоден сигнал не буде надходити через нейрон до його ваги та рекурсивно до його даних. Крім того, потрібно бути особливо обережними при ініціалізації ваг сигмоїдних нейронів для запобігання насичення. Наприклад, якщо початкові ваги занадто великі, то більшість нейронів стане насиченим, і мережа ледве навчиться.
- x > 0f= шТx + bшf). Це може ввести небажану динаміку зигзагу в оновленнях градієнта для ваг. Однак зауважте, що після додавання цих градієнтів у групі даних остаточне оновлення для ваг може мати різні знаки, що дещо пом'якшує цю проблему. Отже, це незручність, але воно має менш важкі наслідки порівняно з насиченою проблемою активації вище.
тан( x ) = 2 σ( 2 х ) - 1
Зліва: функція активації лінійного випрямленого випрямлення (ReLU), яка дорівнює нулю, коли х <0, а потім лінійна з нахилом 1, коли х> 0. Праворуч: Діаграма від Крижевського та ін. (pdf) документ, що вказує на 6-кратне покращення конвергенції з блоком ReLU порівняно з блоком tanh.
f( x ) = max ( 0 , x )
- (+) Встановлено, що він значно прискорює (наприклад, коефіцієнт 6 у Крижевського та ін. ) Конвергенцію стохастичного градієнтного спуску порівняно з сигмоїдними / танг-функціями. Стверджується, що це пов’язано з його лінійною, ненасичуючою формою.
- (+) Порівняно з танг / сигмоїдними нейронами, які передбачають дорогі операції (експоненти тощо), ReLU може бути реалізований шляхом простого встановлення порогу матриці активацій у нуль.
- (-) На жаль, підрозділи ReLU можуть бути тендітними під час тренувань і можуть "померти". Наприклад, великий градієнт, що протікає через нейрон ReLU, може призвести до оновлення ваг таким чином, що нейрон ніколи більше не активується на будь-якій точці даних. Якщо це станеться, то градієнт, що протікає через одиницю, назавжди буде нульовим з цієї точки. Тобто підрозділи ReLU можуть безповоротно загинути під час навчання, оскільки вони можуть вибити з колектора даних. Наприклад, ви можете виявити, що аж 40% вашої мережі можуть бути "мертвими" (тобто нейрони, які ніколи не активуються протягом усього навчального набору даних), якщо рівень навчання встановлений занадто високим. При правильному встановленні рівня навчання це рідше є проблемою.
f( x ) = 1 ( x < 0 ) ( α x ) + 1 ( x > = 0 ) ( x )αє невеликою постійною. Деякі люди повідомляють про успіх у цій формі функції активації, але результати не завжди узгоджуються. Нахил в негативній області також можна перетворити на параметр кожного нейрона, як це спостерігається в нейронах PReLU, введеному в Delving Deep в випрямлячі , Kaiming He et al., 2015. Однак суперечливість користі для завдань в даний час незрозумілий.
f( шТx + b )макс. ( шТ1x + b1, шТ2x + b2)ш1, б1= 0
На цьому завершується наше обговорення найбільш поширених типів нейронів та їх функцій активації. Як останній коментар, в одній мережі дуже рідко змішувати та співставляти різні типи нейронів, хоча принципових проблем із цим немає.
TLDR : " Який тип нейронів я повинен використовувати? " Використовуйте нелінійність ReLU, будьте обережні зі швидкістю навчання та, можливо, стежте за часткою "мертвих" одиниць у мережі. Якщо це стосується вас, спробуйте Leaky ReLU або Maxout. Ніколи не використовуйте сигмоподібні. Спробуйте tanh, але очікуйте, що він буде працювати гірше, ніж ReLU / Maxout.
Ліцензія:
Ліцензія MIT (MIT)
Copyright (c) 2015 Андрій Карпаті
Дозволом надається безоплатно будь-якій особі, яка отримує копію цього програмного забезпечення та пов'язаних з ним файлів документації ("Програмне забезпечення"), здійснювати операції з Програмним забезпеченням без обмежень, включаючи без обмеження права на використання, копіювання, модифікацію, об'єднання , публікувати, поширювати, субліцензувати та / або продавати копії Програмного забезпечення та дозволити особам, яким надається Програмне забезпечення, робити це за умови дотримання наступних умов:
Вищезазначене повідомлення про авторські права та це повідомлення про дозвіл повинні бути включені до всіх копій або значної частини Програмного забезпечення.
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ надається "ЯК Є Є", БЕЗ ГАРАНТІЇ БУДЬ-ЯКОГО РОЗУМУ, ЕКСПРЕССА АБО НЕ ВПРОВАДЖЕНО, ВКЛЮЧЕНО НЕ ОБМЕЖЕНО ГАРАНТІЯМИ ПРОДАЖНОСТІ, ПІДХІДНОСТІ ДЛЯ ДІЯЛЬНОЇ ЦІЛЬНОСТІ ТА НЕФІНЕРМІНУВАННЯ. НІ В ЯКІ НЕ БУДУТЬСЯ АВТОРИ АБО ВЛАСНИКИ ПРАВИЛЬНОГО ПРАВА НЕ БУТЬ ВІДПОВІДАЛЬНІ за будь-яку претензію, збитки чи іншу відповідальність, навіть якщо це відбувається у договорі, ТОРТІ АБО ІНШИМИ, ВІДПОВІДЖЕННЯ ДЛЯ АВТОМАТИЧНОГО ЗАБЕЗПЕЧЕННЯ АБО У ВИКОРИСТАННІ ТА ІНШИМ УПРАВЛІННЯМИ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ. *