Qual é a diferença entre LeakyReLU e PReLU?

42

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

Keras, no entanto, tem ambas as funções nos documentos .

LeaL ReLU

Fonte do LeakyReLU :

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

Portanto (consulte o código )

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

PReLU

Fonte do 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

Portanto,

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

Questão

Eu entendi algo errado? Não são e equivalente a (assumindo ?)f1f2fα(0,1)

Martin Thoma
fonte

Respostas:

50

Direto da wikipedia :

insira a descrição da imagem aqui

  • ReLUs com vazamento permitem um gradiente pequeno, diferente de zero, quando a unidade não está ativa.

  • As ReLUs paramétricas levam essa ideia adiante, transformando o coeficiente de vazamento em um parâmetro que é aprendido junto com os outros parâmetros da rede neural.

Thomas W
fonte
3
Ah, obrigado, sempre esqueço que LeaL ReLUs têm como um hiperparâmetro e Parametric ReLUs têm como parâmetro. αα
Martin Thoma
1
Para a coisa do Google: tudo bem . (Btw, para mim esta pergunta é o terceiro resultado agora para "Leaky Relu vs PReLU")
Martin Thoma
3
@MartinThoma true! Sem ofensa a isso! A maneira como encontrei a resposta também foi bastante estúpida; Eu não sabia o que era o 'P' no PReLU, então descobri e tentei descobrir o que era o PReLU digitando 'Parametric ReLU', o que me levou à página da wikipedia. Eu aprendi algo a dia por causa de sua pergunta;)
Thomas W
1
Agradável. É assim que deve ser :-) Nesse caso, minha pequena visão geral da função de ativação também pode ser interessante para você. O artigo é (parcialmente) em alemão, mas acho que para essa parte não deveria importar
Martin Thoma