Какво е Parametric ReLU?

Ректифицирана линейна единица (ReLU) е функция за активиране в невронни мрежи. Това е популярен избор сред разработчиците и изследователите, защото се справя с проблема с изчезващия градиент. Проблем с ReLU е, че връща нула за всяка въведена отрицателна стойност. Така че, ако неврон предоставя отрицателен вход, той се забива и винаги извежда нула. Такъв неврон се счита за мъртъви. Следователно използването на ReLU може да доведе до това значителна част от невронната мрежа да не прави нищо.

Забележка: Можете да научите повече за това поведение на ReLU тук.

Изследователите са предложили множество решения на този проблем. Някои от тях са споменати по-долу:

  • Спукан ReLU
  • Параметричен ReLU
  • ELU
  • СЕЛУ

В този отговор обсъждаме Параметричен ReLU.

Параметричен ReLU

Математическото представяне на Parametric ReLU е както следва:

Тук yi​е входът от входа на iтия слой към функцията за активиране. Всеки слой научава един и същ параметър на наклона, обозначен като αi​. В случая на CNN iпредставлява броя на каналите. Научавайки параметъра, αi​повишава точността на модела без допълнителни изчислителни разходи.

Забележка: Когато αi​е равно на нула, функцията f се държи като ReLU. Докато, когато αi​е равно на малко число (като 0,01), функцията fсе държи като Спукан ReLU.

Горното уравнение може да бъде представено и по следния начин:

f(yi​) = макс.(0, yi​) + αimin(0, yi​)

Използването на Parametric ReLU не натоварва обучението на невронната мрежа. Това е така, защото броят на допълнителните параметри за изучаване е равен на броя на каналите. Това е относително малко в сравнение с броя тегла, които моделът трябва да научи. Параметричният ReLU дава значително увеличение на точността на модела, за разлика от Leaky ReLU.

Ако коефициентът αi​се споделя между различни канали, можем да го обозначим сα.

f(yi​) = макс.(0, yi​) + α min(0, yi​)

Параметричен ReLU срещу Leaky ReLU

В този раздел сравняваме Parametric ReLU с производителността на Leaky ReLU.

Тук изобразяваме Leaky ReLU с α= 0,01 и имаме параметричен ReLU с α= 0,05. На практика този параметър се научава от невронната мрежа и се променя съответно.

Реализация с Python

import numpy as np
def PReLU(z,α) :
  fn =np.max(αz,z)
  return(fn)

Предимства:

1. Увеличаване на неточността на модела и по-бърза конвергенция в сравнение с модела с LReLU и ReLU.

Недостатъци:

1. Потребителят трябва ръчно да промени параметъра α чрез проба и грешка.

2. За различни приложения ще са необходими различни α, намирането на което отнема много време

3. За всеки отрицателен вход градиентът остава същият, независимо от големината. Това означава, че по време на обратното разпространение обучението се извършва еднакво за целия диапазон от отрицателни входове.

Какво е SELU?

SELU есамонармализираща се функция за активиране. Това е вариант на ELU. Основното предимство на SELU е, че можем да бъдем сигурни, че изходът ще винаги бъде стандартизиран поради неговотосамонормализиращо се поведение. Това означава, че няма нужда да включвате слоеве за пакетно нормализиране.

Където λи αса константи със стойности:

λ ≈ 1.0505

α ≈ 1.6732

Реализация с Python

# Implementation of SELU in Python
import numpy as np
import matplotlib.pyplot as plt

# initializing the constants
λ = 1.0507
α = 1.6732

def SELU(x):
    if x > 0:
        return λ*x
    return λ*α*(np.exp(x) - 1)

x = np.linspace(-5.0, 5.0)
result = []
for i in x:
    result.append(SELU(i))

plt.plot(x, result)
plt.title("SELU activation function")
plt.xlabel("Input")
plt.ylabel("Output")
plt.grid(True)
plt.savefig('output/selu_plot.png')

Какво е нормализация?

Известно е, че SELU е самонормализираща се функция, но какво е нормализация?

Нормализирането е техника за подготовка на данни, която включва промяна на стойностите на числови колони в набор от данни в общ мащаб. Това обикновено се използва, когато атрибутите на набора от данни имат различни диапазони.

Има 3 вида нормализация:

  1. Нормализиране на входа: Един пример е мащабиране на стойностите на пикселите на снимки в сивата скала (0–255) до стойности между нула и едно
  2. Пакетна нормализация: Стойностите се променят между всеки слой на мрежата, така че тяхната средна стойност да е нула, а стандартното им отклонение да е единица.
  3. Вътрешна нормализация: тук се случва магията на SELU. Ключовата идея е, че всеки слой запазва средната стойност и дисперсията на предишния слой.

Предимства на SELU

  1. Подобно на ReLU, SELU няма проблем с изчезващ градиент и следователно се използва в дълбоки невронни мрежи.
  2. В сравнение с ReLU, SELU не могат да умрат.
  3. SELU учат по-бързо и по-добре от другите функции за активиране, без да се нуждаят от допълнителна обработка. Освен това друга функция за активиране, комбинирана с партидна нормализация, не може да се конкурира със SELU.

Недостатъци на SELU

  1. SELU е сравнително нова функция за активиране, така че все още не се използва широко в практиката. ReLU остава като предпочитана опция.
  2. Необходими са повече изследвания върху архитектури като CNN и RNN, използващи SELU за широко разпространено използване в индустрията.




Ако ви е харесал този блог, оставете вашите мисли и отзиви в секцията за коментари, Ще се видим отново в следващото интересно четиво!

😀 Приятно учене! 👏

До следващия път, пазете се!