Jaka jest różnica między LeakyReLU i PReLU?

42

Myślałem, że zarówno PReLU, jak i Leaky ReLU są

f(x)=max(x,αx) with α(0,1)

Keras ma jednak obie funkcje w dokumentacji .

Nieszczelne ReLU

Źródło LeakyReLU :

return K.relu(inputs, alpha=self.alpha)

Stąd (patrz kod relu )

f1(x)=max(0,x)αmax(0,x)

PReLU

Źródło PReLU :

def call(self, inputs, mask=None):
    pos = K.relu(inputs)
    if K.backend() == 'theano':
        neg = (K.pattern_broadcast(self.alpha, self.param_broadcast) *
               (inputs - K.abs(inputs)) * 0.5)
    else:
        neg = -self.alpha * K.relu(-inputs)
    return pos + neg

Stąd

f2(x)=max(0,x)αmax(0,x)

Pytanie

Czy coś źle zrozumiałem? Czy i f 2 nie są równoważne f (przy założeniu α ( 0 , 1 ) ?)f1f2fα(0,1)

Martin Thoma
źródło

Odpowiedzi:

50

Prosto z wikipedii :

wprowadź opis zdjęcia tutaj

  • Nieszczelne jednostki ReLU pozwalają na mały, niezerowy gradient, gdy jednostka nie jest aktywna.

  • Parametryczne ReLU posuwają ten pomysł dalej, przekształcając współczynnik wycieku w parametr, który jest uczony wraz z innymi parametrami sieci neuronowej.

Thomas W.
źródło
3
αα
1
Jeśli chodzi o Google: w porządku . (Przy okazji, dla mnie to pytanie jest teraz trzecim wynikiem dla „Leaky ReLU vs. PReLU”)
Martin Thoma,
3
@MartinThoma true! Bez obrazy za to! Sposób, w jaki znalazłem odpowiedź, był również dość głupi; Nie wiedziałem, co to jest „P” w PReLU, więc doszedłem do tego, a potem spróbowałem dowiedzieć się, czym był PReLU, po prostu wpisując „Parametric ReLU”, co doprowadziło mnie do strony wikipedii. Nauczyłem się czegoś na dzień z powodu twojego pytania;)
Thomas W
1
Miły. Tak powinno być :-) W tym przypadku mój mały przegląd funkcji aktywacyjnych może być również dla ciebie interesujący. Artykuł jest (częściowo) w języku niemieckim, ale chyba ta część nie powinna mieć znaczenia
Martin Thoma,