O objetivo da função de ativação é introduzir não linearidade na rede
por sua vez, isso permite que você modele uma variável de resposta (também conhecida como variável de destino, rótulo de classe ou pontuação) que varia de maneira não linear com suas variáveis explicativas
não linear significa que a saída não pode ser reproduzida a partir de uma combinação linear das entradas (que não é a mesma que a saída renderizada em uma linha reta - a palavra para isso é afim ).
outra maneira de pensar sobre isso: sem uma função de ativação não linear na rede, um NN, não importa quantas camadas tivesse, se comportaria como um perceptron de camada única, porque a soma dessas camadas daria a você apenas outra função linear (veja a definição logo acima).
>>> in_vec = NP.random.rand(10)
>>> in_vec
array([ 0.94, 0.61, 0.65, 0. , 0.77, 0.99, 0.35, 0.81, 0.46, 0.59])
>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
array([ 0.74, 0.54, 0.57, 0. , 0.65, 0.76, 0.34, 0.67, 0.43, 0.53])
Uma função de ativação comum usada no backprop ( tangente hiperbólica ) avaliada de -2 a 2: