O estado da arte da não linearidade é usar unidades lineares retificadas (ReLU) em vez da função sigmóide em redes neurais profundas. Quais são as vantagens?
Sei que treinar uma rede quando o ReLU é usado seria mais rápido e com inspiração biológica, quais são as outras vantagens? (Ou seja, alguma desvantagem do uso de sigmóide)?
machine-learning
neural-networks
deep-learning
RockTheStar
fonte
fonte
Respostas:
Dois benefícios adicionais adicionais de ReLUs são a escarsidade e uma probabilidade reduzida de gradiente de fuga. Mas primeiro lembre-se de que a definição de uma ReLU é onde a = W x + b .h = max ( 0 , a ) a = Wx + b
Um grande benefício é a probabilidade reduzida de o gradiente desaparecer. Isso surge quando . Neste regime, o gradiente tem um valor constante. Por outro lado, o gradiente de sigmóides se torna cada vez menor à medida que o valor absoluto de x aumenta. O gradiente constante de ReLUs resulta em aprendizado mais rápido.a > 0
O outro benefício das ReLUs é a esparsidade. A escassez surge quando . Quanto mais unidades existirem em uma camada, mais esparsa será a representação resultante. Os sigmóides, por outro lado, sempre geram algum valor diferente de zero, resultando em representações densas. Representações esparsas parecem ser mais benéficas que representações densas.a ≤ 0
fonte
Vantagem:
Desvantagem:
Sigmóide: tende a desaparecer gradiente (porque existe um mecanismo para reduzir o gradiente à medida que " " aumenta, onde " a " é a entrada de uma função sigmóide. Gradiente de Sigmóide: S ′ ( a ) = S ( a ) ( 1 - S ( a ) ) . Quando " a " cresce infinitamente grande, S ′ ( a ) = S ( a ) ( 1 - S ( a ) ) = 1 ×uma uma S′( Um ) = S( Um ) ( 1 - S( Um ) ) uma ).S′( Um ) = S( Um ) ( 1 - S( Um ) ) = 1 × ( 1 - 1 ) = 0
Relu: tende a explodir a ativação (não há mecanismo para restringir a saída do neurônio, pois " " é a saída)uma
fonte
$x$
produz .Apenas complementando as outras respostas:
Gradientes de fuga
As outras respostas têm razão em apontar que quanto maior a entrada (em valor absoluto), menor o gradiente da função sigmóide. Mas, provavelmente um efeito ainda mais importante é que a derivada da função sigmóide é SEMPRE menor que uma . Na verdade, é no máximo 0,25!
O lado negativo disso é que, se você tiver muitas camadas, você multiplicará esses gradientes e o produto de muitos valores menores que 1 passará a zero rapidamente.
Desde que o estado da arte do Deep Learning mostrou que mais camadas ajudam muito, essa desvantagem da função Sigmoid é um assassino de jogo. Você simplesmente não pode fazer Deep Learning com Sigmoid.
fonte
Uma vantagem para o ReLU, além de evitar o problema de gradientes de fuga, é que ele tem um tempo de execução muito menor. max (0, a) roda muito mais rapidamente do que qualquer função sigmóide (função logística, por exemplo = 1 / (1 + e ^ (- a)), que usa um expoente que é computacionalmente lento quando é feito com freqüência). Isso é verdade tanto para propagação de avanço quanto de retorno, pois o gradiente de ReLU (se <<, = 0 else = 1) também é muito fácil de calcular em comparação com o sigmóide (para curva logística = e ^ a / ((1 + e ^ a) ^ 2)).
Embora a ReLU tenha a desvantagem de células que estão morrendo, o que limita a capacidade da rede. Para superar isso, use uma variante de ReLU como ReLU, ELU com vazamento, etc., se você notar o problema descrito acima.
fonte
Uma resposta extra a ser concluída no debate de desempenho Esparso x Denso .
Não pense mais em NN, apenas pense em álgebra linear e operações de matriz, porque as propagações para frente e para trás são uma série de operações de matriz.
Agora lembre-se de que existem muitos operadores otimizados para aplicar à matriz esparsa e, portanto, a otimização dessas operações em nossa rede pode melhorar drasticamente o desempenho do algoritmo.
Espero que isso possa ajudar alguns de vocês ...
fonte
O principal benefício é que a derivada de ReLu é 0 ou 1, portanto, a multiplicação não fará com que pesos que estão mais distantes do resultado final da função de perda sofram do problema de gradiente de fuga:
fonte