Was ist der Unterschied zwischen LeakyReLU und PReLU?

42

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

Keras hat jedoch beide Funktionen in den Dokumenten .

Undichte ReLU

Quelle von LeakyReLU :

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

Daher (siehe Relu-Code )

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

PReLU

Quelle von 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

Daher ist

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

Frage

Habe ich etwas falsch gemacht? Sind und gleich (unter der Annahme von ?)f 2 f α ( 0 , 1 )f1f2fα(0,1)

Martin Thoma
quelle

Antworten:

50

Direkt aus Wikipedia :

Bildbeschreibung hier eingeben

  • Undichte ReLUs ermöglichen einen kleinen Gradienten ungleich Null, wenn das Gerät nicht aktiv ist.

  • Parametrische ReLUs führen diese Idee weiter, indem sie den Leckagekoeffizienten in einen Parameter umwandeln , der zusammen mit den anderen neuronalen Netzwerkparametern gelernt wird.

Thomas W
quelle
3
Ah, danke, ich vergesse immer, dass Leaky ReLUs als Hyperparameter und Parametric ReLUs als Parameter haben. ααα
Martin Thoma
1
Für die Google-Sache: Das ist ok . (Übrigens ist diese Frage für mich das dritte Ergebnis für "Leaky ReLU vs PReLU")
Martin Thoma
3
@MartinThoma wahr! Nichts für ungut! Die Art und Weise, wie ich die Antwort fand, war auch ziemlich dumm; Ich wusste nicht, was das 'P' in PReLU war, also habe ich das herausgefunden und dann versucht, herauszufinden, was PReLU ist, indem ich einfach 'Parametric ReLU' eingab, wodurch ich zur Wikipedia-Seite gelangte. Ich habe heute etwas gelernt wegen deiner Frage;)
Thomas W
1
Nett. So sollte es sein :-) In diesem Fall könnte meine kleine Aktivierungsfunktionsübersicht auch für Sie interessant sein. Der Artikel ist (teilweise) auf Deutsch, aber ich denke, für diesen Teil sollte es keine Rolle spielen
Martin Thoma