função de ativação tanh vs função de ativação sigmóide

82

A função de ativação tanh é:

tanh(x)=2σ(2x)1

Onde , a função sigmóide, é definida como: .σ(x)

σ(x)=ex1+ex

Questões:

  • Realmente importa entre usar essas duas funções de ativação (tanh vs. sigma)?
  • Qual função é melhor em quais casos?
satya
fonte
12
tanh(x)=2σ(2x)1
Roman Shapovalov
As redes neurais profundas seguiram em frente. A preferência atual é a função RELU.
Paul Nord
7
@PaulNord Ambos tanh e sigmoids ainda são usados ​​em conjunto com outras ativações como RELU, depende do que você está tentando fazer.
Tahlor 27/10

Respostas:

80

Sim, é importante por razões técnicas. Basicamente para otimização. Vale a pena ler Efficient Backprop por LeCun et al.

Há duas razões para essa escolha (supondo que você normalizou seus dados, e isso é muito importante):

  1. Tendo gradientes mais fortes: como os dados são centralizados em torno de 0, as derivadas são mais altas. Para ver isso, calcule a derivada da função tanh e observe que seu intervalo (valores de saída) é [0,1].

O alcance da função tanh é [-1,1] e o da função sigmóide é [0,1]

  1. Evitando viés nos gradientes. Isso é explicado muito bem no artigo e vale a pena lê-lo para entender essas questões.
jpmuc
fonte
Tenho poucas dúvidas no artigo que você sugeriu. Na página 14, "Quando o MLP tiver compartilhado pesos (por exemplo: redes convolucionais), a taxa de aprendizado deve ser escolhida de forma que seja proporcional à raiz quadrada do número de conexões que compartilham o peso". Você pode, por favor, explicar o porquê?
Satya
esta pergunta já foi respondida aqui stats.stackexchange.com/questions/47590/…
jpmuc
1
Essa é uma pergunta muito geral. Para encurtar a história: a função de custo determina o que a rede neural deve fazer: classificação ou regressão e como. Se você pudesse obter uma cópia de "Redes Neurais para Reconhecimento de Padrões", de Christopher Bishop, seria ótimo. O "Machine Learning", de Mitchell, também fornece uma boa explicação em um nível mais básico.
jpmuc
1
Sinto muito, Satya, geralmente estou bastante ocupado durante a semana. Como você normaliza seus dados exatamente? pt.wikipedia.org/wiki/Whitening_transformation Não sei ao certo qual pode ser o seu problema. A maneira mais fácil é subtrair a média e depois equalizar com a matriz de covariância. Evtl. você precisa adicionar algum componente para freqüências elevadas (ver ZCA transformar na referência acima)
jpmuc
1
Muito obrigado juampa. Você está realmente me ajudando muito. A leitura sugerida é muito boa. Na verdade, estou fazendo um projeto sobre mineração de dados climáticos. 50% dos recursos de entrada são temperatura (faixa 200K-310K) e 50% dos recursos de entrada são valores de pressão (faixa 50000pa a 100000pa). Estou fazendo clareamento. Antes do pca, é necessário normalizá-lo ... Se sim, como devo normalizá-lo? Devo normalizar antes de subtrair por média ou depois de subtrair por média? Estou recebendo resultados diferentes se eu estou normalizar por diferentes métodos ...
satya
32

Muito obrigado @jpmuc! Inspirado por sua resposta, calculei e plotei a derivada da função tanh e da função sigmóide padrão separadamente. Eu gostaria de compartilhar com todos vocês. Aqui está o que eu tenho. Essa é a derivada da função tanh. Para entrada entre [-1,1], temos derivada entre [0,42, 1]. insira a descrição da imagem aqui

Essa é a derivada da função sigmóide padrão f (x) = 1 / (1 + exp (-x)). Para entrada entre [0,1], temos derivada entre [0,20, 0,25]. insira a descrição da imagem aqui

Aparentemente, a função tanh fornece gradientes mais fortes.

Mina HE
fonte
6
Outra maneira de ver isso é que σ (2x) é o mesmo que σ (x), mas com um alongamento horizontal aplicado, o fator de escala 1/2 (ou seja, é o mesmo gráfico, mas com tudo pressionado em direção ao eixo y). Quando você esmagá-lo em, a inclinação fica mais íngreme
rbennett485
2
Não vejo por que isso faria alguma diferença. A escala e a compressão serão aleatórias para cada nó e (com deslocamentos e pesos na entrada e na saída) serão aproximadores universais, convergindo para o mesmo resultado.
endolith