Por que tanh quase sempre é melhor que sigmóide como uma função de ativação?

33

No curso de redes neurais e aprendizado profundo de Andrew Ng, sobre o Coursera, ele diz que usar é quase sempre preferível ao .tanhsigmoid

A razão que ele dá é que as saídas usando centralizam em torno de 0 em vez de 0,5 da , e isso "torna o aprendizado para a próxima camada um pouco mais fácil".tanhsigmoid

  1. Por que centralizar o aprendizado da velocidade de saída da ativação? Suponho que ele esteja se referindo à camada anterior, pois o aprendizado acontece durante o backprop.

  2. Existem outros recursos que tornam o preferível? O gradiente mais acentuado atrasaria o desaparecimento dos gradientes?tanh

  3. Existem situações em que o seria preferível?sigmoid

Respostas leves e matemáticas, preferidas.

Tom Hale
fonte
13
Uma função sigmóide é em forma de S (daí o nome). Presumivelmente, você está falando sobre a função logística ex1+ex . Além da escala e da localização, os dois são essencialmente os mesmos:logistic(x)=12+12tanh(x2). Portanto, a verdadeira escolha é se você deseja saídas no intervaloou no intervalo( 0 , 1 )(1,1)(0,1)
Henry

Respostas:

21

Yan LeCun e outros argumentam no Efficient BackProp que

A convergência geralmente é mais rápida se a média de cada variável de entrada no conjunto de treinamento for próxima de zero. Para ver isso, considere o caso extremo em que todas as entradas são positivas. Os pesos de um nó específico na primeira camada de peso são atualizados por uma quantidade proporcional a δx onde δ é o erro (escalar) nesse nó x é o vetor de entrada (consulte as equações (5) e (10)). Quando todos os componentes de um vetor de entrada são positivos, todas as atualizações de pesos que alimentam um nó terão o mesmo sinal (ou seja, sinal ( δ )). Como resultado, esses pesos só podem diminuir ou aumentar juntospara um determinado padrão de entrada. Assim, se um vetor de peso deve mudar de direção, ele só pode fazê-lo em zigue-zague, o que é ineficiente e, portanto, muito lento.

É por isso que você deve normalizar suas entradas para que a média seja zero.

A mesma lógica se aplica às camadas intermediárias:

Essa heurística deve ser aplicada em todas as camadas, o que significa que queremos que a média das saídas de um nó seja próxima de zero, porque essas saídas são as entradas para a próxima camada.

O postscript @craq destaca que esta citação não faz sentido para ReLU (x) = max (0, x), que se tornou uma função de ativação amplamente popular. Embora o ReLU evite o primeiro problema em zigue-zague mencionado por LeCun, ele não resolve este segundo ponto por LeCun, que afirma ser importante empurrar a média para zero. Gostaria muito de saber o que LeCun tem a dizer sobre isso. De qualquer forma, existe um documento chamado Normalização em lote , que se baseia no trabalho de LeCun e oferece uma maneira de resolver esse problema:

Sabe-se há muito tempo (LeCun et al., 1998b; Wiesler & Ney, 2011) que o treinamento em rede converge mais rapidamente se suas entradas são embranquecidas - isto é, linearmente transformadas para ter zero média e variação de unidades, e correlacionadas. Como cada camada observa os insumos produzidos pelas camadas abaixo, seria vantajoso obter o mesmo clareamento dos insumos de cada camada.


A propósito, este vídeo de Siraj explica muito sobre as funções de ativação em 10 minutos divertidos.


@elkout diz "O verdadeiro motivo pelo qual o tanh é preferido em comparação ao sigmóide (...) é que os derivados do tanh são maiores que os derivados do sigmóide".

Eu acho que isso não é problema. Eu nunca vi isso ser um problema na literatura. Se lhe incomoda que um derivado seja menor que outro, você pode apenas escalá-lo.

A função logística tem a forma σ(x)=11+ekx . Normalmente, usamosk=1, mas nada o proíbe de usar outro valor parakpara aumentar suas derivadas, se esse era o seu problema.


Nitpick: tanh também é uma função sigmóide . Qualquer função com a forma S é um sigmóide. O que vocês estão chamando de sigmóide é a função logística. A razão pela qual a função logística é mais popular são as razões históricas. É utilizado há mais tempo por estatísticos. Além disso, alguns acham que é mais biologicamente plausível.

Ricardo Cruz
fonte
1
Você não precisa de uma citação para mostrar que , apenas cálculo da escola secundária. σ ( x ) = σ ( x ) ( 1 - σ ( x ) ) 0,25 Sabemos que isso é verdade porque 0 < σ ( x ) < 1 , então você só precisa maximizar um quadrático côncavo. tanh maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1-σ(x))0,25
0 0<σ(x)<1que pode ser verificado por inspeção.
tanh(x)=sech2(x)=2exp(x)+exp(-x))1.0
Sycorax diz Restabelecer Monica
Além disso, eu disse que, na maioria dos casos, os derivados do tanh são maiores que os derivados do sigmóide. Isso acontece principalmente quando temos cerca de 0. Você pode dar uma olhada neste link e nas respostas claras fornecidas aqui, que também afirmam que os derivados do geralmente são maiores que os derivados do sigmóide . tanhsigmóide
ekoulier
espere ... isso parece plausível, mas se as camadas intermediárias devem ter uma saída média de zero, como a ReLU funciona tão bem? Isso não é uma contradição?
craq 25/07
@ekoulier, o derivado do sendo maior que o sigmóide não é um problema. Você pode escalá-lo se isso o incomoda. tanhsigmóide
Ricardo Cruz
@ Craq, bom ponto, acho que é uma falha no argumento de LeCun. Adicionei um link ao documento de normalização em lote, onde ele discute mais sobre esse problema e como ele pode ser melhorado. Infelizmente, esse artigo não compara relu com tanh, apenas compara relu com logística (sigmóide).
Ricardo Cruz
14

sigmóidetanhsigmóide

tanhsigmóidetanhsigmóidetanh

Mas por que a tangente hiperbólica tem derivadas maiores? Apenas para lhe dar uma intuição muito simples, você pode observar o seguinte gráfico:

Sigmóide vs tangente hiperbólica

O fato de o intervalo estar entre -1 e 1 em comparação com 0 e 1, torna a função mais conveniente para redes neurais. Além disso, se eu usar um pouco de matemática, posso provar que:

tanhx=2σ(2x)-1

|tanh(x)x|>|σ(x)x|

ekoulier
fonte
0 0
2
tanhsigmóidetanh
2xsigmoid(x) - 0.52xtanh
2x
3

Respondendo a parte da pergunta até agora não endereçada:

Andrew Ng diz que o uso da função logística (geralmente conhecida como sigmóide) realmente só faz sentido na camada final de uma rede de classificação binária.

0 01(0 0,1)tumanh

Tom Hale
fonte
Para a saída, a função logística faz sentido se você deseja produzir probabilidades, todos podemos concordar com isso. O que está sendo discutido é por que o tanh é preferido em relação à função logística como uma ativação para as camadas intermediárias.
Ricardo Cruz
Como você sabe que é isso que o OP pretendia? Parece que ele estava fazendo uma pergunta geral.
Tom Hale
2

Tudo depende essencialmente das derivadas da função de ativação, o principal problema com a função sigmóide é que o valor máximo de sua derivada é 0,25, o que significa que a atualização dos valores de W e b será pequena.

A função tanh, por outro lado, tem uma derivada de até 1,0, tornando as atualizações de W e b muito maiores.

Isso torna a função tanh quase sempre melhor como uma função de ativação (para camadas ocultas) do que a função sigmóide.

Para provar isso eu mesmo (pelo menos em um caso simples), codifiquei uma rede neural simples e usei sigmoid, tanh e relu como funções de ativação, depois plotei como o valor do erro evoluiu e foi isso que obtive.

insira a descrição da imagem aqui

O caderno completo que escrevi está aqui https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

Se ajudar, aqui estão os gráficos das derivadas da função tanh e da sigmóide (preste atenção ao eixo vertical!)

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Juan Antonio Moriano, Gomez
fonte
α
Você não corre o risco de não ter uma curva de aprendizado estável com uma taxa de aprendizado mais alta?
Juan Antonio Gomez Moriano
Bem, se os derivativos são mais estáveis, é menos provável que aumentar a taxa de aprendizado desestabilize a estimativa.
Cliff AB
Esse é um argumento justo, você tem um link para saber mais sobre isso?
Juan Antonio Gomez Moriano