Funções de ativação em Redes Neurais: não linearidade, saturação e fluxo de gradiente

Capítulo 3

Tempo estimado de leitura: 8 minutos

+ Exercício

Por que a não linearidade é indispensável

Em uma rede neural, cada camada costuma aplicar duas operações em sequência: (1) uma transformação linear (multiplicação por matriz e soma de viés) e (2) uma função de ativação. A parte linear sozinha não é suficiente para criar modelos expressivos quando empilhamos camadas.

Composição de camadas lineares “colapsa” em uma única camada

Considere duas camadas sem ativação: h = W1 x + b1 e y = W2 h + b2. Substituindo h em y:

y = W2 (W1 x + b1) + b2 = (W2 W1) x + (W2 b1 + b2)

Ou seja, duas camadas lineares equivalem a uma única camada linear. Empilhar mais camadas lineares não aumenta a capacidade de representar relações complexas (curvas, fronteiras não lineares, interações). A ativação introduz “dobras” no espaço de representação, permitindo compor funções complexas em redes profundas.

Intuição geométrica: “dobrar e separar”

Uma transformação linear pode apenas rotacionar, escalar e transladar. Já uma ativação não linear pode “achatar” certas regiões, “recortar” outras e criar regiões com comportamentos diferentes. Em redes profundas, essas dobras sucessivas permitem separar classes ou aproximar funções altamente não lineares.

O que observar em uma função de ativação

  • Não linearidade: se a função é não linear na maior parte do domínio.
  • Saturação: regiões onde a derivada fica muito pequena (gradiente quase zero).
  • Regiões lineares: trechos onde a função se comporta aproximadamente como ax + c, o que ajuda no fluxo de gradiente.
  • Faixa de saída: limitada (ex.: 0 a 1) ou não limitada (ex.: 0 a infinito).
  • Simetria em torno de zero: saídas centradas em zero tendem a facilitar otimização em camadas ocultas.
  • Estabilidade numérica: risco de overflow/underflow ao calcular exponenciais e logaritmos.

Comparação prática: sigmoid, tanh, ReLU, Leaky ReLU e softmax

AtivaçãoDefiniçãoSaídaDerivada (ideia)Pontos fortesRiscos/limitaçõesUso típico
Sigmoidσ(x)=1/(1+e^{-x})(0,1)σ(x)(1-σ(x))Interpretação probabilística para saída bináriaSatura em |x| alto; gradiente pequeno; não é zero-centeredSaída em classificação binária (com BCE)
tanhtanh(x)(-1,1)1 - tanh^2(x)Zero-centered; mais “forte” que sigmoid perto de 0Satura em |x| alto; gradiente pequeno nas caudasCamadas ocultas em alguns cenários; RNNs clássicas
ReLUmax(0,x)[0,∞)1 (x>0), 0 (x<0)Região linear ampla; bom fluxo de gradiente no lado positivo; simples“Neurônios mortos” (x<0 sempre); saída não centrada em zeroCamadas ocultas em MLP/CNN
Leaky ReLUmax(αx,x)(-∞,∞)1 (x>0), α (x<0)Reduz neurônios mortos; mantém gradiente no lado negativoEscolha de α; pode introduzir pequena inclinação negativaCamadas ocultas quando ReLU “morre”
Softmaxsoftmax(z_i)=e^{z_i}/∑_j e^{z_j}Probabilidades que somam 1Acoplada entre classesDistribuição de probabilidade multiclasseSensível a escala; precisa de truque numéricoCamada de saída multiclasse (com CE)

Saturação, regiões lineares e fluxo de gradiente

O que é saturação e por que ela atrapalha

Uma ativação satura quando, para valores grandes (positivos ou negativos), sua saída muda muito pouco ao variar a entrada. Nessas regiões, a derivada fica próxima de zero. Em treinamento por gradiente, isso significa que o sinal de erro “não passa” por aquela unidade com força suficiente.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Em sigmoid e tanh, a saturação ocorre nas caudas: para x muito positivo ou muito negativo, a função fica quase constante. Como a derivada entra multiplicando o gradiente na retropropagação, camadas profundas podem sofrer vanishing gradients (gradiente que desaparece).

ReLU e o papel das regiões lineares

A ReLU tem uma região linear para x>0 com derivada 1, o que favorece o fluxo de gradiente. Porém, para x<0 a derivada é 0: se uma unidade cair consistentemente no lado negativo, ela pode parar de aprender (neurônio morto).

A Leaky ReLU mantém uma pequena inclinação no lado negativo (derivada α), preservando algum gradiente e reduzindo o risco de morte permanente.

Impacto prático no treinamento

  • Sigmoid/tanh em camadas ocultas profundas: maior risco de gradiente desaparecer, especialmente se as ativações entrarem em saturação por escala inadequada dos pesos/entradas.
  • ReLU/Leaky ReLU em camadas ocultas: geralmente facilitam otimização por manterem gradientes mais fortes em parte do domínio.
  • Softmax na saída: não é escolhida por “fluxo de gradiente” em profundidade, mas por produzir probabilidades multiclasse; o cuidado principal é estabilidade numérica.

Estabilidade numérica: onde problemas aparecem e como evitar

Sigmoid: evitando overflow em exp

Para x muito negativo, e^{-x} pode estourar (overflow). Implementações robustas usam formas numericamente estáveis, por exemplo, computando sigmoid de modo diferente conforme o sinal de x.

# ideia (pseudocódigo estável para sigmoid escalar x):  if x >= 0:      return 1 / (1 + exp(-x))  else:      ex = exp(x)      return ex / (1 + ex)

Softmax: truque do “max”

Softmax envolve exponenciais e pode sofrer overflow quando logits são grandes. A forma estável subtrai o maior logit antes de exponenciar:

# z é um vetor de logits  z_shift = z - max(z)  p = exp(z_shift) / sum(exp(z_shift))

Essa transformação não altera as probabilidades finais, mas evita números enormes.

Gráficos didáticos: funções e derivadas (como construir)

Uma forma eficiente de entender ativação é visualizar a função e sua derivada no mesmo intervalo (por exemplo, de -6 a 6). Isso evidencia saturação (derivada ~0), regiões lineares (derivada constante) e pontos de não diferenciabilidade (ReLU em 0).

Passo a passo prático para gerar os gráficos

  1. Escolha o intervalo: use x de -6 a 6 com passo pequeno (ex.: 0,01) para curvas suaves.
  2. Implemente as ativações: sigmoid, tanh, ReLU, Leaky ReLU (com α=0,01 ou 0,1).
  3. Implemente as derivadas:
    • Sigmoid: σ(x)(1-σ(x))
    • tanh: 1 - tanh(x)^2
    • ReLU: 0 para x<0, 1 para x>0 (em x=0, escolha 0 ou 1 por convenção para o gráfico)
    • Leaky ReLU: α para x<0, 1 para x>0
  4. Plote em pares: para cada ativação, um gráfico da função e outro da derivada (ou dois eixos no mesmo gráfico).
  5. Marque regiões importantes: destaque visualmente onde a derivada é pequena (saturação) e onde é constante (região linear).
# pseudocódigo (independente de biblioteca)  x = linspace(-6, 6, 1201)  sigmoid = 1/(1+exp(-x))  dsigmoid = sigmoid*(1-sigmoid)  t = tanh(x)  dt = 1 - t*t  relu = max(0, x)  drelu = where(x>0, 1, 0)  alpha = 0.01  lrelu = where(x>0, x, alpha*x)  dlrelu = where(x>0, 1, alpha)  plot(x, sigmoid); plot(x, dsigmoid)  plot(x, t); plot(x, dt)  plot(x, relu); plot(x, drelu)  plot(x, lrelu); plot(x, dlrelu)

Como ler os gráficos (o que procurar)

  • Sigmoid: curva em “S”; derivada máxima perto de 0 e quase zero nas caudas → saturação.
  • tanh: semelhante à sigmoid, mas centrada em 0; derivada também cai nas caudas.
  • ReLU: função “quebra” em 0; derivada 0 no negativo e 1 no positivo → risco de neurônio morto.
  • Leaky ReLU: semelhante à ReLU, mas com inclinação negativa pequena → derivada não zera no negativo.

Softmax: ativação de saída multiclasse e gradiente acoplado

Softmax transforma um vetor de logits em probabilidades que somam 1. Diferente das ativações ponto a ponto (sigmoid, tanh, ReLU), softmax é uma operação vetorial: a probabilidade de uma classe depende dos logits de todas as classes.

Quando usar softmax vs sigmoid na saída

  • Multiclasse exclusiva (uma classe correta): use softmax na saída (uma distribuição).
  • Multirrótulo (várias classes podem ser verdadeiras): use sigmoid por classe (probabilidades independentes por rótulo).

Na prática, a combinação softmax + entropia cruzada é comum porque fornece gradientes úteis para separar classes, mas exige o cuidado de estabilidade numérica (subtrair max(z)).

Checklist de seleção de ativação (por tarefa e arquitetura)

Camadas ocultas (MLP/CNN)

  • Padrão inicial: ReLU.
  • Se houver muitos neurônios “mortos” (ativação sempre 0): troque para Leaky ReLU (α=0,01 ou 0,1) e monitore.
  • Se você precisa de saídas centradas em zero por design (ou em certos blocos): considere tanh, mas esteja atento à saturação.
  • Evite sigmoid/tanh em redes muito profundas se não houver um motivo específico, pois saturação pode dificultar o treinamento.

Camada de saída

  • Regressão (valor real): frequentemente sem ativação (linear). Se precisar restringir faixa: use ativação apropriada (ex.: sigmoid para (0,1), tanh para (-1,1)).
  • Classificação binária: sigmoid (uma saída) para probabilidade.
  • Classificação multiclasse exclusiva: softmax (k saídas).
  • Classificação multirrótulo: sigmoid em cada classe (k saídas independentes).

Diagnóstico rápido quando o treinamento “empaca”

  • Perda não diminui e gradientes muito pequenos: suspeite de saturação (sigmoid/tanh) ou logits muito grandes; revise escala das ativações e estabilidade numérica.
  • Muitas ativações zero em ReLU: suspeite de neurônios mortos; teste Leaky ReLU.
  • Probabilidades softmax viram 0/1 cedo demais: logits com escala alta; use softmax estável e verifique normalização/regularização.

Agora responda o exercício sobre o conteúdo:

Por que é necessário incluir uma função de ativação não linear entre camadas em uma rede neural profunda?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Sem ativações, a composição de camadas lineares colapsa em uma única camada linear, não aumentando a expressividade. A não linearidade introduz “dobras” no espaço, permitindo aproximar funções complexas e separar classes com fronteiras não lineares.

Próximo capitúlo

Arquitetura MLP em Redes Neurais: camadas densas, capacidade e representações

Arrow Right Icon
Capa do Ebook gratuito Introdução a Redes Neurais: do perceptron ao deep learning moderno
20%

Introdução a Redes Neurais: do perceptron ao deep learning moderno

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.