Activation Function
Uma função de ativação é a função não linear que um neurónio aplica à sua entrada ponderada, permitindo que as redes aprendam padrões curvos. Compara opções comuns.
Uma função de ativação é a função que um neurônio em uma rede neural (NN) aplica à soma ponderada das entradas para produzir sua saída. Sua função essencial é adicionar não linearidade: sem ela, qualquer sequência de camadas se reduz a uma única transformação linear, e a profundidade não acrescenta nada. Com ela, uma rede pode representar limites de decisão curvos, desde os traços de dígitos escritos à mão até o contorno de um pedestre em um quadro de câmera. As funções de ativação têm duas funções. Nas camadas ocultas, funções como ReLU, SiLU e GELU permitem que a rede crie características. Na camada de saída, funções como sigmoid e softmax transformam pontuações brutas em probabilidades.
Por que as redes precisam de não linearidade#
Uma camada sem ativação calcula Wx + b. Duas dessas camadas produzem W₂(W₁x + b₁) + b₂, que equivale a (W₂W₁)x + (W₂b₁ + b₂), outra camada linear única. Uma ativação entre as camadas impede essa redução, e o teorema da aproximação universal mostra que uma camada oculta com unidades não lineares suficientes pode aproximar qualquer função contínua em um domínio limitado.
A derivada da ativação é tão importante quanto seu formato, pois a retropropagação multiplica essas derivadas camada por camada. A derivada da sigmoid nunca passa de 0.25, e a da tanh tende a zero para entradas grandes, então os gradientes diminuem ao passar por muitas camadas saturadas — o problema dos gradientes que desaparecem. A derivada da ReLU é exatamente 1 para toda entrada positiva, o que é um dos principais motivos pelos quais se tornou viável treinar redes muito profundas.
Funções de ativação comuns#
- ReLU: max(0, x). Computacionalmente barata, com gradiente 1 para entradas positivas e zeros exatos para entradas negativas. É a ativação oculta padrão das CNNs desde o AlexNet, em 2012, mas as unidades que só recebem entradas negativas param de aprender.
- Leaky ReLU: Multiplica as entradas negativas por uma pequena inclinação, como 0.01 ou 0.1, para que todas as unidades mantenham um gradiente.
- SiLU (Swish): x · σ(x), uma curva suave que fica ligeiramente abaixo de zero para entradas negativas. É comum em CNNs eficientes e detectores de tempo real.
- GELU: x · Φ(x), em que Φ é a função de distribuição cumulativa normal padrão. É a ativação padrão no BERT, GPT-2 e nos transformadores de visão.
- Tanh: Comprime as entradas para o intervalo de −1 a 1, centrado em zero. Define o estado oculto de redes recorrentes, como a GRU.
- Sigmoid: Comprime as entradas para o intervalo de 0 a 1, adequado para saídas binárias e multirrótulo e para as portas de células recorrentes.
- Softmax: Transforma um vetor inteiro de pontuações em uma distribuição de probabilidade cuja soma é 1, para classificação de rótulo único e pesos de atenção.
- SwiGLU: Uma camada com portas que multiplica uma projeção ativada por SiLU por uma segunda projeção aprendida. Substituiu a ativação simples nas camadas de avanço dos modelos de linguagem grandes (LLMs) mais recentes.
O PyTorch disponibiliza cada função elemento a elemento como um módulo em torch.nn, facilitando a comparação com as mesmas entradas:
import torch
from torch import nn
x = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Common activations, each applied element-wise to the same inputs
activations = {
"ReLU": nn.ReLU(),
"Leaky ReLU": nn.LeakyReLU(0.1),
"SiLU": nn.SiLU(),
"GELU": nn.GELU(),
"Tanh": nn.Tanh(),
"Sigmoid": nn.Sigmoid(),
}
for name, act in activations.items():
print(f"{name:>10}: {[round(v, 3) for v in act(x).tolist()]}")Para as entradas −3, −1, 0, 1 e 3, a ReLU imprime [0.0, 0.0, 0.0, 1.0, 3.0] e a Leaky ReLU, [-0.3, -0.1, 0.0, 1.0, 3.0]. A SiLU produz [-0.142, -0.269, 0.0, 0.731, 2.858] e a GELU, [-0.004, -0.159, 0.0, 0.841, 2.996]: ambas deixam passar valores negativos pequenos e se aproximam da ReLU para entradas grandes. A Tanh produz [-0.995, -0.762, 0.0, 0.762, 0.995] e a sigmoid, [0.047, 0.269, 0.5, 0.731, 0.953]; ambas se achatam em ±3, onde seus gradientes já são pequenos.
Como escolher uma função de ativação#
As camadas ocultas geralmente seguem a convenção da família da arquitetura, e a camada de saída segue a tarefa. A softmax é adequada para tarefas em que cada entrada pertence exatamente a uma classe, a sigmoid serve para rótulos que podem coexistir e as saídas de regressão não usam nenhuma ativação, para poderem assumir qualquer valor. O hardware também pode limitar a escolha: alguns aceleradores de borda executam nativamente apenas funções simples, como ReLU, Leaky ReLU e Hard-Swish. O YOLO26 aplica SiLU após a convolução e a normalização em lote em cada bloco Conv, pontua cada classe de detecção com uma sigmoid independente, para que as pontuações de classe de uma caixa não precisem somar 1, e aplica softmax às 1.000 classes do ImageNet em seus modelos de classificação.
Funções de ativação e termos relacionados#
- Função de perda: A ativação molda a saída de cada neurônio durante a passagem direta, e a perda avalia a previsão final da rede em relação ao rótulo. As bibliotecas costumam combinar a última ativação com a perda, como
CrossEntropyLossfaz com a softmax, para garantir estabilidade numérica. - Normalização em lote: A normalização em lote ou por camada redimensiona as ativações para um intervalo estável usando estatísticas e parâmetros aprendidos. Ela fica junto à função de ativação, geralmente logo antes dela, e não adiciona nenhuma não linearidade própria.
- Ativações: Como substantivo plural, ativações são os valores de saída produzidos por uma camada. "Não linearidade" e o termo mais antigo "função de transferência" são sinônimos de função de ativação. Durante o treinamento, as bibliotecas mantêm na memória as ativações de cada camada para a passagem de retropropagação; por isso, o checkpointing de gradientes economiza memória descartando algumas ativações e recalculando-as durante a retropropagação.










